MongoDB 3.X:每个数据库只有一个集合是否有意义

时间:2015-04-07 12:48:13

标签: mongodb

由于MongoDB 3.x引入了每个记录的锁而不是集合或数据库,因此将所有数据写入单个集合并使用一个额外的标识符字段" documentType"是否有意义。 它将有助于模拟"加入"通过map-reduce操作。 Couchbase用"桶和#34;做同样的事情。而不是收集。

有人看到这种方法有任何不满吗?

1 个答案:

答案 0 :(得分:3)

有一个很大的普遍缺点:索引。

使用Mongo,您通常希望设置索引,以便您进行大多数(如果不是全部)查询,使用它们。因此,除_id上的那个之外,您还将在搜索的主要字段上设置索引(通常与您排序的字段复合)。

如果您将所有内容存储在一个集合中,则意味着您需要在该集合上拥有所有这些索引。这意味着两件事:

  • 索引更大,因为要索引的文档更多。当然,使用稀疏索引可以稍微减轻这一点。

  • 在集合中插入或修改文档需要Mongo更新所有这些索引(它只是在标准的use-many-collections方法中更新相关索引)。这会影响你的写作表现。

此外,如果您的应用程序中有一个查询以某种方式不使用其中一个索引,则需要扫描整个集合,O(n)其中n是数字集合中的文档 - 在您的情况下,表示整个数据库中的文档数。

收藏很便宜。使用它们;)

相关问题