Почему запрашивать документ дешевле, чем загружать его по идентификатору? - PullRequest
0 голосов
/ 24 января 2020

Я могу получить указанный c документ из CosmosDB, извлекая его по id (например, используя cosmosDB. NET API client.ReadDocumentAsync(documentLink)) или выбрав его с использованием sql -подобного синтаксиса (select * from c where c.id='key') по любому индексируемому ключу.

Я играл с разными размерами файлов, чтобы загрузить один и тот же полный документ , используя оба метода (используя C#, клиент Microsoft. Azure .DocumentDB, v2.9.1 ) с использованием образцов реальных документов и получили следующие затраты на RU:

Document size    Read       Select
1KB              1,00 RU    2,89 RU
6KB              1,33 RU    3,02 RU
100KB            9,95 RU    5,82 RU
200KB           20,29 RU    8,65 RU

Обратите внимание, что стоимость RU значительно отличается. Это может стать заметным на вашем счете.

В этом тесте представляется предпочтительным использовать ReadDocument API для небольших документов. Хорошо, это распространенное предложение.

Второй вывод - использовать select для "больших" документов ... и это кажется противоречивым и делает меня параноиком. Запрашиваемые единицы на странице Azure Cosmos DB довольно расплывчаты, если это может быть преднамеренным.

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

РЕДАКТИРОВАТЬ: Выбор использования RU взят из query.ExecuteNextAsync() объекта ответа ( который выполняется один раз, и я прочитал ожидаемое содержимое 1 документа). Кроме того, я получаю идентичное использование RU при выполнении одного и того же запроса в MS Azure Storage Explorer. Я, конечно, надеюсь, что здесь нет скрытых затрат.

...