MongoDB学习笔记(1)--了解MongoDB

MongoDB是一个开源的、无模式的文档型数据库,是当前流行的NOSQL类型数据库的一种(非关系型数据库)

MongoDB的数据结构非常松散,是类似json的bjson格式,同时支持对数据建立索引。是一个面向集合的,模式自由的文档型数据库。

 

1.面向集合

意思是数据被分组存储在数据集合中,被称为一个集合

2.模式自由

意味着对于存储在MongoDB 数据库中的文件,我们不需要知道它的任何结构定义。提了这 么多次"无模式"或"模式自由",它到是个什么概念呢?例如,下面两个记录可以存在于同一 个集合里面:  

{"welcome" : "Beijing"} {"age" : 25}

 

特点: 

  面向集合存储,易于存储对象类型的数据 

  模式自由 
  支持动态查询 
  支持完全索引,包含内部对象 
  支持查询 
  支持复制和故障恢复 
  使用高效的二进制数据存储,包括大型对象(如视频等) 
  自动处理碎片,以支持云计算层次的扩展性 
  文件存储格式为BSON(一种JSON的扩展)

 

体系结构:

MongoDB 中一系列物理文件(数据文件,日志文件等) 

MongoDB 的文档(document),相当于关系数据库中的一行记录。 

  多个文档组成一个集合(collection),相当于关系数据库的表。 

多个集合(collection),逻辑上组织在一起,就是数据库(database) 

数据存储结构:

在MongoDB 内部,每个数据库都包含一个.ns 文件和一些数据文件,而且这些数据文件会随着数据量的 增加而变得越来越多。所以如果系统中有一个叫做 foo的数据库,那么构成foo这个数据库 的文件就会由foo.ns,foo.0,foo.1,foo.2 等等组成 

 MongoDB 内部有预分配空间的机制,每个预分配的文件都用 0 进行填充,由于有了这个机制, MongoDB始终保持额外的空间和空余的数据文件,从而有效避免了由于数据暴增而带来的磁盘压力过大的问题。

  由于表中数据量的增加,数据文件每新分配一次,它的大小都会是上一个数据文件大小的2 倍,每个数据文件最大 2G。这样的机制有利于防止较小的数据库浪费过多的磁盘空间,同 时又能保证较大的数据库有相应的预留空间使用。

数据库的每张表都对应一个命名空间,每个索引也有对应的命名空间。这些命名空间的元数 据都集中在*.ns文件中。 

需要注意的命名空间:$freelist,这个命名空间用于记录不再使用 的盘区(被删除的 Collection 或索引)。每当命名空间需要分配新的盘区的时候,都会先查 看$freelist是否有大小合适的盘区可以使用,这样就回收空闲的磁盘空间。
  

 

posted @ 2011-09-13 09:52  K!ngZ  阅读(2108)  评论(11编辑  收藏  举报