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

pm1*_*100 5 azure-cosmosdb

假设我有一个 ID 列表,获取一堆文档的“最佳”方法是什么

我知道我可以尝试各种方法,但在小范围内可能所有选项都具有相似的性能。到目前为止,我什么都没试过——只是阅读文档

也许没有“最佳”方法,但是各种方法(速度、成本、总体吞吐量……)之间的权衡是什么?

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

Ara*_* R. 3

有关使用 DocumentDB 执行读取的最佳方式的一些一般提示。

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