Microsoft.Azure.Cosmos 导出大数据的最有效方式

Microsoft.Azure.Cosmos Most Efficient way to Export Large Data

我需要从 Cosmos DB 中导出数千个文件,我想知道是否有更有效的方法来获取所有这些文档(但我无法通过浏览文档找到一个)和搜索)。

现在我正在使用 FeedIterator 获取结果:

        Database database = m_cosmosClient.GetDatabase(m_databaseId);
        DatabaseResponse databaseResponse = await database.ReadAsync();

        // The response from Azure Cosmos
        DatabaseProperties properties = databaseResponse;

        Container container = databaseResponse.Database.GetContainer(m_cosmosDbContainer);
        QueryDefinition query = new QueryDefinition(queryString);
        QueryRequestOptions queryOptions = new QueryRequestOptions { MaxItemCount = 10000, MaxBufferedItemCount = 10000 };

        List<Article> results = new List<Article>();
        FeedIterator<Article> resultSetIterator = container.GetItemQueryIterator<Article>(query, null, queryOptions);
        while (resultSetIterator.HasMoreResults)
        {
            FeedResponse<Article> response = await resultSetIterator.ReadNextAsync();

            results.AddRange(response);
            if (response.Diagnostics != null)
            {
                Console.WriteLine($"\nQueryWithSqlParameters Diagnostics: {response.Diagnostics.ToString()}");
            }
        }

我担心如果不进行某种形式的多任务处理,我可能会 运行 内存不足,而且再说一遍,有更快的 运行 时间总是好的。

如果您想 运行 从工作站提取数据,Cosmos DB 数据迁移工具是一个不错(且简单)的选择。它可以是 运行 交互式或使用脚本自动化。

在 Azure 数据工厂中创建作业有点复杂,但也提供了更多的灵活性。

This article 讨论了将数据迁移进出 Cosmos DB 的各种选项。