Содержит ли FeedResponse результаты из одного логического раздела? - PullRequest
0 голосов
/ 06 мая 2020

Я использовал Azure SDK для клиента. NET (с ядром 3.1) для запроса коллекций путем вызова GetItemQueryIterator () в контейнере.

Я заметил, что FeedResponses, возвращаемый FeedIterator, возвращаемый GetItemQueryIterator, соответствует физическим разделам, но я не нашел подтверждения этого в документации.

Может ли кто-нибудь подтвердить, что:

  • Если значение ключа раздела не указано Не указано в запросе, FeedIterator вернет FeedResponse для каждого физического раздела в коллекции?
  • И что, если указано значение ключа раздела, FeedIterator вернет только один FeedResponse с результатами из физического раздела, содержащего указанный логический раздел?

Если приведенные выше инструкции не соответствуют ' t правда, есть ли какие-либо гарантии относительно взаимосвязи между разделами (логическими и / или физическими) и FeedIterators и FeedResponses?

Спасибо!

1 Ответ

2 голосов
/ 07 мая 2020

TL; DR - можно с уверенностью сказать, что если вы не укажете ключ раздела, ваши результаты будут совокупностью результатов из заданного диапазона разделов.

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

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

Межраздельные запросы становятся более интересными. По большому счету, перекрестные запросы go через конвейер, который объединяет результаты в зависимости от плана запроса. Таким образом, упорядочение по запросам будет go от физического раздела к захватывающим страницам физического раздела до тех пор, пока у них не будет достаточно страниц для гарантированного сохранения порядка. Агрегаты делают аналогичные вещи / et c. Это, конечно, связано с накладными расходами, связанными с необходимостью говорить с несколькими разделами, прежде чем вы сможете обслуживать результаты, и с дополнительными накладными расходами на ресурсы, которые клиент потребляет для обслуживания запроса, поэтому мы не рекомендуем тяжелые межраздельные запросы, содержащиеся в коде горячего пути (сохраните это как материализованное представление и т. д. c). Есть несколько случаев, когда он пропускает этот конвейер, и каждый ответ соответствует странице, обслуживаемой по сети, но обычно это просто предложения where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...