?
近日,软件工程师Ricky Ho的在?他的博客里发表了一篇关于MongoDB架构(?MongoDB Architecture)的博文,虽然这是一个听起来感觉很宽泛的话题,但是作者在文章中确实对MongoDB由内至外的架构进行了剖析。本文截取了其文章中的几张重点架构示意图进行简要描述。?
1、MongoDB数据文件内部结构?
?
- MongoDB在数据存储上按命名空间来划分,一个Collection是一个命名空间,一个索引也是一个命名空间。
- 同一个命名空间的数据被分成很多个Extent,Extent之间使用双向链表连接。
- 在每一个Extent中,保存了具体每一行的数据,这些数据也是通过双向链接来连接的。
- 每一行数据存储空间不仅包括数据占用空间,还可能包含一部分附加空间,这使得在数据Update变大后可以不移动位置。
- 索引以BTree结构实现。
2、在MongoDB中实现事务?
众所周知,?MongoDB只支持对单行记录的原子性修改,并不支持对多行数据的原子操作。但是通过上图中的不可思议的操作步骤,实际上你也可以自己实现该事务。?其步骤如下:?