如何并行查询不同类型的文档?

时间:2017-08-05 07:21:14

标签: azure-cosmosdb

我使用的是Cosmos DB(DocumentDB)和.NET Core。让我们说我必须完全不同的文件(简化示例):

public class Market // DocumentType = "market"
{
    public string Id {get;set;}
    public string Description {get; set;}
}

public class City // DocumentTyupe = "city"
{
    public string Id {get;set;}
    public string Name {get; set;}
}

为了获得所有这些,我可以逐个运行两个查询:

var markets = client.CreateDocumentQuery<Market>()
.Where(x => x.DocumentType == "market").ToList()

var cities = client.CreateDocumentQuery<City>()
.Where(x => x.DocumentType == "city").ToList()

并行执行两个查询的推荐方法是什么?所以我想这样的事情:

var markets = QueryMarkets(); // returns Task    
var cities = QueryCities(); // returns Task
Task.WhenAll(markets, cities); //execute in parallel

我可以从中受益吗?

1 个答案:

答案 0 :(得分:2)

Cosmos没有内置功能,允许您从服务器端并行执行多个查询。您在客户端应用程序中使用RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)(/?)$ list.php?catnm=$1&tnm=$2 [NC,L] 并行等待它们的方法是正确的。

唯一的另一种选择是创建一个自定义存储过程,它可以聚合多个查询的结果但是基于您显示的示例我不认为对速度或RU有任何好处消费走下去。