在解决跨分区查询问题时,我需要您的帮助,我有一个集合(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"
...
...
...
答案 0 :(得分:0)
这是分区数据存储的常见模式。
为Mongo用户提供的解决方案是使用Change Streams并使用不同的分区(分片)键将所有数据写入另一个集合中,或者预先计算需要将这些查询作为分区来回答的任何值
当您进行coll.watch时,您将需要一些计算来承载该过程,以及上面链接中概述的其他一些警告。
另一件事是,您将需要衡量使用变更流的成本与仅进行跨分区查询的成本。一般而言,对于大容量查询,此解决方案更具成本效益。注意事项。
答案 1 :(得分:0)
您可以为按“ ApplicationType”划分的普通客户和按“制造商”划分的战略客户创建两个不同的集合。