MongoDB : "few" 和 "many" 之间的界限在哪里?

MongoDB : where is the limit between "few" and "many"?

我来自关系数据库世界 (Rails / PostgreSQL) 并过渡到 NoSQL 世界 (Meteor / MongoDB),所以我正在学习非规范化、嵌入和真实链接。

似乎在许多情况下,在各种数据库模式之间进行选择归结为彼此 "related" 的文档数量。

在此video series,作者区分:

所以,我想知道:fewmany之间的界限在哪里?

我想可能没有一个确切的数字,但我们是几十、几百、几千还是几百万?

这都是相对的,在设计架构时做出假设确实是一个危险的问题。花时间为您的架构和设置做出正确的选择是值得的。我会建议几个步骤:

  1. 计算一下。根据您期望您的应用程序需要做什么来增加您的关系。如果您有一些嵌套数组或嵌入式文档,当您开始 $unwinding 它们时,几个 "one-to-few" 可以很容易地扩展到许多文档。

  2. 写一个原型。对您的预期 hardware/environment 进行一些基本测试,看看它是否可以在您查询所有数据时轻松处理该负载。

  3. 根据您的测试,创建限制。这是您需要在系统崩溃之前为每个文档、每种关系类型创建多少关系的界限。

如果是我,我会说一对多不到一打,一对多理论上是无限的,但实际上是数百万。也许应该有 "one-to-some" 的中间地带来表示可能有数百个。

取自6 rules of thumb for MongoDB schema design:

  1. 一对几 - 两个到几百
  2. 一对多 - 几百到几千
  3. 数以千计 - 数以千计

我完全同意@womp关于需要为您的用例选择正确方案的观点。我在上面发布的文章有一些很好的指南和示例,说明了要使用的模式设计。