CosmosDb表一次检索多个记录

时间:2018-04-12 04:40:42

标签: multithreading azure-cosmosdb azure-table-storage

我正在考虑一次进行多点读取操作(它们属于同一个分区,我不打算一次检索超过100个)。要求非常简单。 Cloud表不支持一次检索多个实体,我真的很想知道如何继续。

我可以使用分区键创建一个Table查询,以及所有感兴趣的行键,但这看起来像是一种矫枉过正。我确切地知道我在寻找什么。我也不想最终扫描整个分区。

这就是我所做的。但是我不知道CloudTable客户端是否是线程安全的。

List<Task<TableResult>> taskList = new List<Task<TableResult>>();
CloudTable cloudTable = ...;
foreach (T entity in readContainer.Entities)
{
    taskList.Add(cloudTable.ExecuteAsync(TableOperation.Retrieve<T> 
                                              (entity.PartitionKey,
                                               entity.RowKey)));
}
Task.WaitAll(taskList.ToArray());
IList<TableResult> results = new List<TableResult>();
foreach (Task<TableResult> task in taskList)
{
    results.Add(task.Result);
}

1 个答案:

答案 0 :(得分:0)

CloudTable是线程安全的。

CloudTable批处理API可以在上述方案中使用。请检查https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.table.cloudtable.executebatch?view=azure-dotnet