通过已知IDS批量提取的最有效方法

时间:2017-01-26 16:22:06

标签: azure-cosmosdb

假设我有一个ID列表

,获取大量文档的“最佳”方法是什么?

我知道我可以尝试各种各样的东西但是在小规模上可能所有选项都有类似的性能。到目前为止,我没有尝试任何东西 - 只需阅读文档

也许没有“最佳”方式,但各种方法之间的权衡取舍(速度,成本,整体吞吐量......)

叹息 - 我知道这会被投票 - 按照“你有什么尝试”,“我们不会为你编写代码”等等。我不能进行有意义的性能分析直到我同时有数千个并行请求在数TB的数据上。我发誓,我不是懒惰或不愿意投入工作,只是不想投入生产,发现我有性能问题,然后被告知'为什么你这样做呢?'

1 个答案:

答案 0 :(得分:2)

关于使用DocumentDB执行读取的最佳方法的一些常规技巧。

  • 如果您的文档数量较少,那么使用ReadDocumentAsync将是使用partition keyid分别获取文档的多个线程中执行此操作的最佳方式。每次读取每1KB文档为1 RU,在p99下为10 ms。
  • 如果您有大量文档,那么使用SELECT * FROM c WHERE c.partitionKey = 'pk' AND c.id IN ('1','2',..., 'N')之类的查询将更有效,即来自客户端的连接更少,服务器端的RU也更少(通常每个文档<1 RU)返回)。
  • 如果您需要跨多个分区键获取数据,那么很难判断单个读取或单个查询是否会表现更好。这需要更详细的测试,并取决于读取的文档数和不同分区键的数量。