Mongdb的存储原理

mongdb存取数据十分快,可以当作缓存使用。同时它也极其消耗内存。几乎是有多少内存就吃多少内存。
同时它也极其消耗内存。几乎是有多少内存就吃多少内存。为什么会这样?这必须深入mongdb的存储原理。
传统的数据库的读取过程是如果是读,那就先去内存中读数据,如果没有,就去磁盘读,将磁盘数据读进内存,
然后从内存读取。根据程序的局部性原理,往往只将当前数据附近的一块数据读进内存,其它数据不读进内存,
只有在需要时才读取。如果是写如,会立刻将内存数据刷新进内存。但是mongdb与众不同。它会尽可能一次性
将所有数据读进内存,所以,显得十分消耗内存。这样的好处时,几乎完全和内存打交道,尽量地避免地向磁盘
读取数据。如果是向磁盘写数据,mongdb仅仅是将数据写进内存,至于数据什么时候从内存写进磁盘,它将这项
工作托管给操作系统的虚拟内存管理器去处理。因此,从读取数据的角度看,由于mongdb仅仅是从内存中读取数据
,在存取数据上才显得十分快。同样也是因为直面内存的原因,它可以当作缓存使用。可是,有一个问题:那就是
内存的物理材料是半导体材料,在数据的存储上具有易失性,一旦突然停电或者宕机,存储在内存中的数据就会丢失。
这是无法忍受的。为了克服,Journal日志产生了。它每隔一段时间就会将内存中的数据刷新到journal文件中。
这个时间间隔是可以调节的。间隔越短,意外损失的数据就越少。
存储引擎是mongdb存储的核心:存储引擎的作用就是将磁盘上的数据映射到内存中,或者将内存的数据刷新到磁盘上。
存储引擎有很多种,提供的锁粒度是看点。

猜你喜欢

转载自blog.csdn.net/qq_23143555/article/details/80225693
今日推荐