Я могу получить указанный 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. Я, конечно, надеюсь, что здесь нет скрытых затрат.