Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB数据库体系结构_Mongodb_Architecture_Database Design - Fatal编程技术网

MongoDB数据库体系结构

MongoDB数据库体系结构,mongodb,architecture,database-design,Mongodb,Architecture,Database Design,我想更多地了解MongoDB的系统和DB架构 我试图理解MongoDB是如何存储和检索文档的。如果一切都在记忆中等等 MongoDB和Oracle之间的比较分析将是一个额外的收获,但我主要集中在理解MongoDB体系结构本身 任何指针都会有帮助。MongoDB内存映射数据库文件。它允许操作系统对此进行控制,并为内存映射分配最大数量的RAM。当MongoDB更新并从DB读取数据时,它正在读写RAM。数据库中文档的所有索引也保存在RAM中。RAM中的文件每60秒刷新一次到磁盘。为了防止在电源故障时丢

我想更多地了解MongoDB的系统和DB架构

我试图理解MongoDB是如何存储和检索文档的。如果一切都在记忆中等等

MongoDB和Oracle之间的比较分析将是一个额外的收获,但我主要集中在理解MongoDB体系结构本身


任何指针都会有帮助。

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

编辑: 查看教程是个好主意 和手册 管理区也很有用 如果你对阅读感到厌烦,那么这些演讲就值得一看。

我不能自称是专家,但它肯定会写入磁盘(不确定何时/多久/是否总是刷新/是否可以显式刷新)。事实上,它占据了相当大的空间(我猜很可能会做索引),作为一个一般的、非常笼统的比较,我所听到的它与传统关系数据库(如Oracle或MS SQL Server或MySQL)之间最大的争论是事务性/可靠性与极端规模。如果您的一些数据被破坏时不会在夜间失眠,那么像Mongo这样的NoSQL选项性能非常好,可以扩展到许多并发用户。但是,如果您需要对数据进行保证,那么现在您最好还是坚持使用事务性数据库。这个问题可能比其他问题的指导原则要宽泛一些。我建议您访问mongodb文档并阅读它们提供的资料。特别有意思的是:,我希望这有帮助。@marr75我已经看过了你提到的文件。遗憾的是,他们没有提供我想要的细节。例如,我可以找到许多关于oracle数据库的文件和存储结构的文档。这就是我所看到的。我不明白的是,为什么像这样的帖子会被否决。我没有否决你,但我投票认为它太宽泛了。这是一种自清洁装置。因此,问题应该是快速、永久和明确的回答(不管怎样,这就是目标),对于广泛的主题,这三个问题中的任何一个都很难做到。我对oracle数据库的体系结构一无所知,因此我可能不会想到在mongo中,集合中的文档存储在增量增长的文件中,文件的后缀号与名称空间文件一起。(这对于我在本例中识别的文档数据库来说是唯一的)。感谢您提供的信息。我实际上是在你的答案线上寻找信息。如果能得到类似的细节,那就太好了。你能给我指一下有MongoDB内部设计/架构等的任何在线资源吗?用于读取/查询扩展的复制(不仅仅是备份)。你认为这回答了你的问题还是需要更多帮助?@gregor是的,我需要一些具体信息,但还没有找到。-实际上与缓存无关,与mongo如何处理内存、一些内存开销等有关-日志的内部(耐久性)-到目前为止我发现的最好的内部概述