Cosmos DB(Mongo DB API)跨分区查询的性能不好

时间:2020-04-23 11:10:26

标签: azure-cosmosdb azure-cosmosdb-mongoapi

在解决跨分区查询问题时,我需要您的帮助,我有一个集合(mongo db api),该集合存储分区类型为“ applicationType”的记录。当我知道我的应用程序类型基本上可以满足我的用户的75%,但很少有战略客户希望我们根据分区以外的制造商提供数据时,它可以正常工作。当我查询不带“应用程序类型”的查询时,查询的性能确实很差。

解决此问题时需要您的建议。供您参考,请在下面找到我们存储的样本集

{
               "_id" : ObjectId("5ad5d6b7529cd2007ba73bc8"),
               "applicationType" : "Highbay",
               "name" : "X",
               "subSeries" : "X1",
               "fullSeriesName" : "C1X", 
               "manufacturer": "cre"
               ...
               ...
               ...

}
,
{
               "_id" : ObjectId("5ad5d6b7529cd2007ba73bc8"),
               "applicationType" : "AreaLight",
               "name" : "X",
               "subSeries" : "X1", (mongo db 
               "fullSeriesName" : "C1X", 
               "manufacturer": "cre"
               ...
               ...
               ...

2 个答案:

答案 0 :(得分:0)

这是分区数据存储的常见模式。

为Mongo用户提供的解决方案是使用Change Streams并使用不同的分区(分片)键将所有数据写入另一个集合中,或者预先计算需要将这些查询作为分区来回答的任何值

当您进行coll.watch时,您将需要一些计算来承载该过程,以及上面链接中概述的其他一些警告。

另一件事是,您将需要衡量使用变更流的成本与仅进行跨分区查询的成本。一般而言,对于大容量查询,此解决方案更具成本效益。注意事项。

答案 1 :(得分:0)

您可以为按“ ApplicationType”划分的普通客户和按“制造商”划分的战略客户创建两个不同的集合。

相关问题