我有一个链接文档的mongodb(数据无法嵌入)
当链接文档时,mongos群集(http://docs.mongodb.org/manual/core/sharding-introduction/)是否支持分片?
这会如何影响表现?
谢谢!
答案 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或者其他)。