我最近开始将数据从 Microsoft SQL Server 转移到 MongoDB 以获得可扩展性。就移民而言一切都很好。
该文档有 2 个重要字段:customer、timestamphash(年月日)。
我们在安装 MongoDB 的 Azure Linux 中仅导入了 7500 万条数据。
在两个字段上添加复合索引后,我们遇到以下问题:
对于 300 万条数据(过滤后),需要 24 秒才能按 customerId 计数完成聚合组。 SQL Server 在不到 1 秒的时间内给出相同数据的结果。
您认为 Casandra 会是更好的解决方案吗?我们需要大量数据的查询性能。
我尝试了磁盘写入,为虚拟机提供了更多内存。什么都不起作用。
Query:
aaggregate([
{ "$match" : { "Customer" : 2 } },
{ "$match" : { "TimestampHash" : { "$gte" : 20160710 } } },
{ "$match" : { "TimestampHash" : { "$lte" : 20190909 } } },
{ "$group" : { "_id" : { "Device" : "$Device" }, "__agg0" : { "$sum" : 1 } } },
{ "$project" : { "Device" : "$_id.Device", "Count" : "$__agg0", "_id" : 0 } },
{ "$skip" : 0 },
{ "$limit" : 10 }])
Update:我使用“allowDiskUse:true”,问题得到解决。过滤 3M 数据的时间缩短至 4 秒。