迭代所有 Cosmos 文档最便宜的方法是什么?

问题描述 投票:0回答:2

我有一个包含“产品”集合的 Cosmos 资源。该集合中有许多文档。足以让我在繁忙时期经常看到大量 429,尽管配置了相当多的吞吐量。

迭代每个产品的最便宜的方法(对于 R/U)是什么?

假设:

  • 假设我最终必须接触每一个文档 - 但假设我可以批量执行此操作 - 它不需要是一个单一的操作。例如如果跳过/采取是正确的方法 - 尽管某些文档在其他文档之前被处理,但这仍然可以工作
c# .net azure-cosmosdb
2个回答
2
投票

使用 Change Feed 应该是最便宜的。您可以使用多种选项(Spark Connector、Azure Functions 等)来实现此目的,但如果您已经在使用 .NET,最直接的方法是使用 Change Feed Pull 模型

FeedIterator<YourType> iteratorForTheEntireContainer = container.GetChangeFeedIterator<YourType>(ChangeFeedStartFrom.Beginning(), ChangeFeedMode.LatestVersion);

while (iteratorForTheEntireContainer.HasMoreResults)
{
    FeedResponse<YourType> response = await iteratorForTheEntireContainer.ReadNextAsync();

    if (response.StatusCode == HttpStatusCode.NotModified)
    {
        Console.WriteLine($"Completed full read of entire container");
        break;
    }
    else 
    {
        foreach (YourType item in response)
        {
            // process item
        }
    }
}

0
投票

迭代的最便宜的方式(关于 R/U)是什么? 每一个产品?

你不可能买到比零更便宜的东西,所以绝对值得一提这里的分析商店

如果您有很多文档并且需要处理所有文档,这听起来绝对非常适合。

© www.soinside.com 2019 - 2024. All rights reserved.