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 的各种选项。
我需要从 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 的各种选项。