ReadItemAsync与GetItemLinqQueryable?

时间:2019-10-30 15:58:36

标签: azure-cosmosdb

是否有人对这两种从CosmosDB检索单个对象的方法进行了分析?

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

VS

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

我的猜测是ReadItemAsync更快,但有人知道吗?

2 个答案:

答案 0 :(得分:1)

ReadItemAsync不仅更快,而且更便宜。

ReadItem进行点读取操作,根据项目的大小,其固定量为RUs(请求单位)。如果项目大小不变,则该操作将始终消耗相同的RU。

ItemLinqQueryable进行查询,这将消耗更多的RU(并且这些RU可能会有所不同),并且取决于所配置的索引策略。

答案 1 :(得分:0)

ReadItemAsync实际上读取JSON并将其反序列化为强类型的C#对象。如果您要修改文档作为后端业务逻辑的一部分,那么使用起来就很有意义。

而GetItemLinqQueryable实际上会执行遍历集合的查询,与ReadItemAsync相比,它将花费更多的RU