2012-03-30 71 views
11

我想更多地了解MongoDB的系统和数据库体系结构。MongoDB数据库体系结构

我想了解MongoDB如何存储和检索文档。如果它全部在内存中等。

MongoDB和Oracle之间的比较分析将是一个奖金,但我主要关注于了解MongoDB体系结构本身。

任何指针都会有帮助。

+0

我不能宣称自己是专家,但它肯定不会写入到磁盘(不知道什么时候/频率/是否始终刷新/是否可以明确地冲洗)。事实上,它占据了相当大的空间(可能会做它的索引,我猜测) – 2012-03-30 18:41:55

+0

作为一般性的,真正意义上的比较,我听到了它与传统关系数据库(如Oracle或MS SQL Server或MySQL)是交易性/可靠性与极端规模之一。如果你的一些数据被丢弃,你不会在晚上失去睡眠,像Mongo这样的NoSQL选项是非常高性能的,并且可以扩展到很多并发用户。如果您*需要*保证您的数据,但现在您可能更适合使用事务性数据库。 – 2012-03-30 18:44:36

+0

这个问题可能比SO规定的问题准则稍宽。我建议你去mongodb文档并阅读他们提供的材料。特别感兴趣的是: http://www.mongodb.org/display/DOCS/Architecture+and+Components, http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+图表, http://www.mongodb.org/display/DOCS/Production+Notes 我希望这可以帮助。 – marr75 2012-03-30 22:00:31

回答

18

MongoDB内存映射数据库文件。它允许操作系统控制这一点,并将最大数量的RAM分配给内存映射。当MongoDB更新并读取数据库时,它正在读取和写入RAM。数据库中文档的所有索引也保存在RAM中。 RAM中的文件每60秒刷新一次到磁盘。为防止断电时数据丢失,默认情况下打开日志功能运行。日志文件每隔100ms刷新一次磁盘,并且如果使用掉电来使数据库恢复到一致状态。 mongo的一个重要设计决定是RAM的数量。您需要计算出工作集的大小 - 即,如果您要读取和写入数据库中最近10%的数据,那么这10%是您的工作集,应该保存在内存中以获得最佳性能。因此,如果您的工作集为10GB,您将获得10GB以获得最佳性能 - 否则当内存页从磁盘分页到内存时,查询/更新会运行得更慢。 mongoDB的其他重要方面是用于备份的复制和用于缩放的分片。 有很多伟大的在线学习资源。 MongoDB是免费的并且是开源的。

编辑: 这是一个好主意,检查出的教程 http://www.mongodb.org/display/DOCS/Tutorial 和手动 http://www.mongodb.org/display/DOCS/Manual 和管理区是太有用 http://www.mongodb.org/display/DOCS/Admin+Zone ,如果你厌倦读那么发言都值得一试。 http://www.10gen.com/presentations

+0

感谢您的信息。我实际上是在寻找你的答案的信息。获得类似的细节将会很棒。你能指出我有任何具有MongoDB内部设计/体系结构等的在线资源吗? – Ayusman 2012-03-30 19:05:54

+0

用于读取/查询缩放的复制(不仅仅是备份)。 – 2012-03-30 19:07:48

+0

你认为这回答你的问题还是需要更多帮助? – Gregor 2012-04-02 13:21:10