了解mongoDB存储结构

系统 1730 0

mongoDB 深入浅出一 了解mongoDB存储结构

   MongoDB 深入浅出

数据逻辑结构

 

 

1 mongoDB 中的文档 (document)  相当于   关系性数据库的一条一条的记录

2 collection  相当于关系性数据库中的表,所以一个 collection 中有多个 document

多个集合在逻辑上组成一起   就是 database

一个 mongoDB    关系性数据库一样   可以有多个数据库 (database)

 

与关系数据结构比较

MongoDB

关系性数据库

文档 (document)

(row)

集合 (collection)

(table)

Database

Database

 

 

数据存储结构

MongoDB  默认的数据目录是 data/db, 它负责存储所有 mongodb 的数据文件,在 mongoDB 中每个数据库都包含一个 .ns 和一些数据文件,而且这些数据文件会随着数据的增多越来越多,则:   如果系统中有一个叫 foo 的数据库,那么构成 foo 这个数据库的文件就会有 foo.ns ,foo.0,foo1,foo.2 等。

 

 

Mongodb 内部有预分配空间的机制,每个预分配的文件都用 0 填充,由于有了这个机制,

mongoDB 始终保存额外的空间和空闲的文件,这对系统数据突然暴增时减缓磁盘压力有很大好处 .

 

由于数据量的不断增加, mongoDB 每新分配一次,大小都会是上一个文件大小的 2 倍,最大 2G. 这种机制保证系统数据较小时   不会浪费太多空间,系统数据较多时   也有相应预留空间。

 

mongoDB 命名空间

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

在下图中, foo 数据库包含 3 个文件存储数据与索引, foo.2 文件属于预分配文件, foo.0 foo.1 被分配到了相应的盘区对应不同的名字空间。

 

 

 

 

 

从上图可以看出,每个命名空间可以包含多个不同的盘区,这些盘区并不是连续的,与数据增长一样,每一个命名空间的盘区大小也随着分配的次数不断增长。在上图有个 foo.$freelist 命名空间,这个命名空间用于记录不再使用的盘区 ( 如被删除的 collection 或索引 ) ,每当命名空间需要分配新的盘区时,就会检查 .$freelist 是否有合适大小的空间,这样就可以回收空闲的磁盘空间了。

了解mongoDB存储结构


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论