Mongodb 当我选择按模式或包含分离集合时?
在蒙古语数据库中,何时按模式分离集合,何时将它们放入一个集合?拥有更多集合的缺点是什么?您应该根据应用程序的访问策略设计MongoDB集合 通常,如果出现以下情况,则应选择嵌入:Mongodb 当我选择按模式或包含分离集合时?,mongodb,mongoose,Mongodb,Mongoose,在蒙古语数据库中,何时按模式分离集合,何时将它们放入一个集合?拥有更多集合的缺点是什么?您应该根据应用程序的访问策略设计MongoDB集合 通常,如果出现以下情况,则应选择嵌入: 在检索“主”数据时,始终检索嵌入式数据。如果 相反,您总是只检索数据的一部分(比如coll1中可能包含的数据),但很少需要嵌入数据(coll2),那么嵌入就不会这么好了 嵌入数据不经常进行修改。如果在多个文档中嵌入了同一个对象,则当可能出现某些更改和一致性问题时,必须在所有文档中更新该对象 嵌入数据的基数不太大。记住
- 在检索“主”数据时,始终检索嵌入式数据。如果 相反,您总是只检索数据的一部分(比如coll1中可能包含的数据),但很少需要嵌入数据(coll2),那么嵌入就不会这么好了
- 嵌入数据不经常进行修改。如果在多个文档中嵌入了同一个对象,则当可能出现某些更改和一致性问题时,必须在所有文档中更新该对象
- 嵌入数据的基数不太大。记住MongoDB文档的最大大小是16MB。因此,这取决于您希望嵌入到文档中的内容。例如,如果每个文档可以有100K嵌入对象,则强制拆分集合
- 数据完整性可能是一个问题:通过将数据嵌入“主”文档,您可以利用文档级锁定(如果您使用的是Wired Tiger storage engine)。否则,若您在一个并发系统中,使用两个集合设计,您必须自己在应用程序级别处理锁定机制
- 在检索“主”数据时,始终检索嵌入式数据。如果 相反,您总是只检索数据的一部分(比如coll1中可能包含的数据),但很少需要嵌入数据(coll2),那么嵌入就不会这么好了
- 嵌入数据不经常进行修改。如果在多个文档中嵌入了同一个对象,则当可能出现某些更改和一致性问题时,必须在所有文档中更新该对象
- 嵌入数据的基数不太大。记住MongoDB文档的最大大小是16MB。因此,这取决于您希望嵌入到文档中的内容。例如,如果每个文档可以有100K嵌入对象,则强制拆分集合
- 数据完整性可能是一个问题:通过将数据嵌入“主”文档,您可以利用文档级锁定(如果您使用的是Wired Tiger storage engine)。否则,若您在一个并发系统中,使用两个集合设计,您必须自己在应用程序级别处理锁定机制