Каков рекомендуемый способ запроса документов из разных разделов в CosmosDB? - PullRequest
0 голосов
/ 15 октября 2018

При использовании Azure Cosmos DB и запросе одного раздела я просто указываю ключ раздела в FeedOptions.Но когда мне нужно запросить n разделов, у меня есть (afaik) 2 варианта:

  1. Запустить отдельное задание для каждого раздела и объединить результат в код моего приложения
  2. Установить флаг«EnableCrossPartitionQuery» (вместе с MaxDegreeOfParallelism) в FeedOoptions и противоречат моим разделам в запросе.

Когда мне нужно применить критерии сортировки вместе с подкачкой на весь набор результатов (по всем разделам), я думаю,Первый подход достигнет своих пределов.

Каков рекомендуемый способ запроса нескольких разделов в базе данных Cosmos с использованием API .NET SQL?

1 Ответ

0 голосов
/ 15 октября 2018

Первый подход не рекомендуется, если вы не знаете каждое возможное значение ключа раздела, которое есть в ваших документах, и вы не готовы написать некоторый параллельный код запроса.Это эффективно, только если вы хотите запросить несколько разделов, но не все.

Включение EnableCrossPartitionQuery - это рекомендуемый подход, если вы хотите запросить все разделы, но в идеале вы хотите использовать его как можно меньше.

CosmosDB знает, является ли определение ключа раздела частью запроса, и ограничит его результаты разделами для этого запроса, если указаны значения ключа раздела.

Это означает, что если вы напишите что-то вродеselect * from c where c.partitionKey = 'something' || c.partitionKey = 'somethingelse' и вы включите опции EnableCrossPartitionQuery, ваш запрос будет выполнен только для тех двух разделов, которые являются частью вашего запроса (something и somethingelse).

...