MongoDB 分布式数据库架构,通俗的芒果【一】


首先,MongoDB 介绍


MongoDB 是一个数据库服务器,而且是一个介于关系型和非关系型之间的数据库(没有什么一对多多对多等的数据库关系设计,而是通过丰富的功能来实现类似关系),基于分布式文件存储,采用C++ 编写等。他的存储方式是BSON方式,B就是Binnary  二进制,就是将JSON键值模式转化为二进制来存储, 目前此数据库是开源性质,由http://www.mongodb.org/专门维护和升级。


逻辑结构 

表现为 文档(document),集合(collection),数据库(database),分别对应关系数据库中的 行(row),表(table),数据库(database)就是说他有数据库,数据库是由一大堆文档和文档的集合组成,一堆文档在一个集合里,多个集合就组成了数据库。我拷张图片来说明下

MongoDB 分布式数据库架构,通俗的芒果【一】_第1张图片



物理结构 

既然有逻辑结构,那就肯定得认识他的物理结构是什么个鸟样的。

首先,数据库对应一个.NS文件,如,foo.ns 就代表是名称为 foo 是数据库,然后有对应的 foo.0, foo.1,foo.2 等文件名用来存储物理数据,.NS文件中是存储文档和集合等的地址,也就是标明表的结构和表的数据存储地址,比如存储着 某个表的定义,这个表的数据是在foo.0文件中等。 数据文件,即foo.0, foo.1等是增长型的,根据后面那个名字从0开始一直到 文件的大小等于2G才停止

  • foo.ns -- 16M
  • foo.0   --  32M
  • foo.1   --  64M
  • foo.2   --  128M
  • foo.3   --   256M
  • .....
  • foo.30 --  2048M  即最大为2G则停止增长,这是32位机子的限制,64位的可以非常的大,达到128T,达到这个规模那是要多大的系统了
这里再说下,.NS文件存储着所有关于数据库及其表的属性等,比如数据库大小,表的数量,索引列表,表的大小,表的数据块及其块的编号等,他指示着数据的存储位置对应于foo.0,foo.1....foo.30等对应的文件中,以及数据块之间是如何链接的等。

如 .NS文件中存储了表  a, a的大小,数据块序列 一共有102快数据   块0对应 foo.0 中的 第N地址,块1对应foo.2中的第N地址,块2对应某个数据文件的对应存储空间等。


本人专业水平不高,对很多专业术语也非常头痛,所以我希望能用通俗语言来描述架构这种东东,当然也是以一个局外人来理解技术逻辑,文章中很多观点难免错误和缺失专业性,还望读者能够谅解。


你可能感兴趣的:(分布式集群)