ReadItemAsync vs GetItemLinqQueryable? - PullRequest
1 голос
/ 30 октября 2019

Кто-нибудь делал профилирование этих двух методов для извлечения одного объекта из CosmosDB?

container.ReadItemAsync<Device>("devices", new PartitionKey(deviceId), null, default);

VS

container.GetItemLinqQueryable<Device>(true).Where(a => a.DeviceId == deviceId).FirstOrDefault();

Я предполагаю, что ReadItemAsync работает быстрее, но кто-нибудьзнаете наверняка?

Ответы [ 2 ]

1 голос
/ 30 октября 2019

ReadItemAsync не только быстрее, но и дешевле.

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

ItemLinqQueryable выполняет запрос, который потребляет больше RU (и они могут различаться), и это зависит от настроенной политики индексирования.

0 голосов
/ 30 октября 2019

ReadItemAsync фактически читает и десериализует ваш JSON в строго типизированный объект C #. Если вы изменяете документы как часть своей бизнес-логики бэкэнда, то это имеет смысл использовать.

В то время как GetItemLinqQueryable фактически выполняет запрос, который проходит через коллекцию и будет стоить больше RU по сравнению с ReadItemAsync

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