在 MongoDB 中,拥有大量小集合是否比拥有一个大集合更好?

Joã*_*imo 6 mongodb database-design architecture

巨大的集合具有可能无法放入 RAM 的巨大索引。分片可以完全解决这个问题吗?

如果我有很多带有小索引的小集合,有哪些存储它们的选项?由于其中只有极少数会大于 200mb,因此它们没有资格进行分片。什么 MongoDB 数据库架构可以容纳大量相当小的集合?由于所有查询都针对特定集合,这是否与分片环境中的目标查询一样快?快点 ?

Woj*_*ech 3

集合越小越好。是的,如果索引不适合内存,它会变慢。大多数索引搜索的工作方式都是基于二分搜索。这是一个很棒的方法。我上周用 PHP 构建了一个小测试,你可以得到一个包含 1000 个数字的列表,并且你将能够在大约 12.3 个比较中找到每个数字。所以这样想吧。如果你的表有 1000 个项目,只需检查 12 次就能找到正确的结果,这在我的书中是相当不错的。在 mongo 中添加的文档越多,必须执行的操作就越多。但重要的是不要让它们太小,以至于您的服务器必须不断切换以处理简单的事情。

另外请务必记住,我认为每个文档的最大大小约为 18mb。这是很多数据。查一下“战争与和平”这本书有多少个单词,大约可以容纳 3mb 的数据。但不要让它控制你塞东西过多或塞得过少。