mongodb系列01--基础篇

来源:互联网 发布:淘宝客拉人进群技巧 编辑:程序博客网 时间:2024/06/07 00:23
    今年入职花旗,刚进来leader 就交待我去研究mongodb,搭建mongodb分布式集群,之前没有接触过这一块硬着头皮开始学习mongodb。 到现在已经过去4个月了,今天把学习mongodb的过程中的一些知识和体会写下来供大叫参考,当然主要可能还是我自己看。    关于mongodb集群环境的搭建大家可以看我的另一篇博客,我给出了mongodb测试环境集群的详细地搭建过程,当然也给出了高可用分布式生产环境集群的架构策略。

1

因为入职一个月之后新人需要开一个技术演说的session,我的选题就是mognodb的研究,这里我会配合我的PPT进行讲解,这个过程会涉及很多基础的计算机知识,相信大家看了应该是大有帮助

我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。
2

   MongoDB[1]  是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。类似于json的bson组成---二进制形式的json,MongoDB 文档类似于 JSON 对象 。因此可以存储比较复杂的数据类型。字段值可以包含其他文档,数组及文档数组。

3

在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍
时间换空间
我们可以对比sql和mongodb来了解一下,在关系型数据库中数据库下的基本单位是table,而在mongodb中是用collection,一行数据对应的是mongodb中的一个文档,这就是为什么我们称mongodb为面向文档的数据库,我们注意到mongodb中不存在表连接的情况,关系型数据库的典型特征是表之间存在关联关系,mongodb不存在这种表连接语句,那么文档之间的一对一地以对多,多对多的情况mongodb可以通过在字段中嵌套一个或多个文档来实现这种关系,我认为这是一种以空间换时间的做法,比如有两张表用户表和商品表,一个用户对应多个商品,假设想要查询一个用户下的所有商品信息,在关系型数据库的查询中需要链表查询join,我们知道join必然会带来很多磁盘随机度的操作,随机读无法像顺序读那样的局部性好,缓存效果不好,反观Mongodb这种Nosql系统中,可以将一个用户的对应的所有商品信息嵌套存入该用户对应的文档的字段里面去,也就是说这些信息都存在一个文档中,局部性很好,这样的虽然磁盘冗余了大量的数据,但却大大加快了查询的速度,从当前计算机的发展来看,空间换时间是很正常的,而计算机最关键的技术高速缓存cache技术就是用空间换时间的典范。

原文链接

原创粉丝点击