我使用的是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
我可以从中受益吗?
答案 0 :(得分:2)
Cosmos没有内置功能,允许您从服务器端并行执行多个查询。您在客户端应用程序中使用RewriteRule ^([0-9a-zA-Z_-]+)/([0-9a-zA-Z_-]+)(/?)$ list.php?catnm=$1&tnm=$2 [NC,L]
并行等待它们的方法是正确的。
唯一的另一种选择是创建一个自定义存储过程,它可以聚合多个查询的结果但是基于您显示的示例我不认为对速度或RU有任何好处消费走下去。