Я создал составной ключ осколка для коллекции монго: {catalog_id:1,category_id:1}
Теперь, если я запрошу коллекцию только по catalog_id, который гарантированно уникален, будет ли запрос идти ко всем осколкам?
Я создал составной ключ осколка для коллекции монго: {catalog_id:1,category_id:1}
Теперь, если я запрошу коллекцию только по catalog_id, который гарантированно уникален, будет ли запрос идти ко всем осколкам?
Как правило, запросы будут направляться к тем сегментам, которые содержат соответствующие диапазоны фрагментов для этого запроса. В вашем случае, если catalog_id действительно гарантированно уникален, то у вас не будет нескольких чанков для одного и того же диапазона catalog_id (например, у вас не будет одного чанка с диапазоном {catalog_id: 12, категория: "a"} в {catalog_id : 12, категория: "m"} и еще один фрагмент с диапазоном {catalog_id : 12, категория: "n"} в {catalog_id : 12, категория: "z"}, потому что у вас может быть только один документ с {catalog_id : 12}, а диапазоны фрагментов создаются на основе существующих документов).
Итак, в вашем случае запрос должен идти к одному осколку.
В mongo db, если у вас есть составной индекс для нескольких полей, вы можете использовать его для запроса начального подмножества полей. Итак, если у вас есть индекс на
a,b,c
вы можете использовать его запрос на
a
a,b
a,b,c
Не уверен, что shardng работает так же.