当我选择通过模式或包括分离集合?

问题描述:

在蒙古语数据库中,何时按模式分离集合以及何时将它们放入一个集合中?有更多的收藏有什么缺点?当我选择通过模式或包括分离集合?

+0

这实际上只取决于我们的用例。 part2有点迟,但您可能会发现https://blog.mahlberg.io/blog/2015/11/05/data-modelling-for-mongodb.html有帮助。 –

您应该根据应用程序的访问策略设计您的MongoDB集合。

一般情况下,你应该去当嵌入:当“主”数据检索总是检索

  • 嵌入式数据。如果你使用的是 ,那么你总是只检索部分数据(比如说可能在coll1中),但很少你还需要嵌入数据(coll2),那么嵌入就不会那么好。
  • 嵌入数据不经常修改。如果您将同一个对象嵌入多个文档中,则必须在出现更改和一致性问题时对其进行更新。
  • 嵌入数据的基数不是太大。请记住,MongoDB文档的最大大小是16MB。所以这取决于你想要嵌入到文档中的内容。例如,如果您可以为每个文档设置100K嵌入对象,则不得不拆分集合
  • 数据完整性可能是一个问题:通过将数据嵌入“主”文档,您可以利用文档级锁定(if你正在使用Wired Tiger存储引擎)。否则,如果您处于并发系统中,使用这两种集合设计,您必须在应用程序级别自行处理锁定机制。
+0

需要注意的是数据完整性部分高度依赖于用例。很可能实际上不是嵌入,而是记录更改并汇总结果可能是更可行的方法,尤其是当并发访问是常规时。 –

+0

谢谢!非常多 – HungryBird

+0

@HungryBird如果答案对您有帮助,请将其标记为已接受 –