当你在集合之间建立关系时,mongodb如何扩展?

时间:2015-09-21 07:50:46

标签: mongodb sharding nosql

我有一个链接文档的mongodb(数据无法嵌入)

当链接文档时,mongos群集(http://docs.mongodb.org/manual/core/sharding-introduction/)是否支持分片?

这会如何影响表现?

谢谢!

2 个答案:

答案 0 :(得分:2)

考虑到referenced documents没有什么特别之处,它只是由应用层推断的逻辑关系,而不是MongoDB本身,支持分片。这适用于“手动”引用,以及DBRefs。你甚至可以在DBRef属性上进行分片,虽然我不确定你为什么要考虑DBRef应该具有固有的低基数。

手动和DBRef的性能都会受到影响,因为必须执行多个查询才能“加入”数据。来自文档:

  

要解析DBRefs,您的应用程序必须执行其他查询   返回引用的文档。许多驱动程序都有辅助方法   自动形成DBRef的查询。司机没有   自动将DBRef解析为文档。

答案 1 :(得分:1)

MongoDB中没有“文档链接”这样的东西。只是集合A的文档中的字段恰好与集合B中的文档字段具有相同的值.DBRef只是在应用程序层上的转换,并且不受数据库的任何特殊处理。

分享效率的关键在于如何为引用的集合定义shard key。当您搜索的字段是集合的分片键的一部分时,mongos可以通过将查询重定向到正确的分片来加速它。

您可能希望属于集合B的同一文档的集合A的所有文档都驻留在同一个分片上。这意味着你应该让A的分片键包含A的字段,它是B的唯一标识符(objectID,name或者其他)。