我有一个巨大的时间序列集合,其中包含超过200k行的日志。示例如下:
{
timestamp: ISODate("2015-10-09T23:06:37.000Z"),
type: "foo",
value: 2
},
{
timestamp: ISODate("2015-10-10T23:06:38.000Z"),
type: "bar",
value: 150
}
汇总原始条目非常简单,在大多数情况下,我们希望处理特定范围的日志条目:
db.test.aggregate([
{$match: {'$and': [{
'timestamp': {'$gte' : ISODate("2015-08-18T00:00:00.000Z")}},
{'timestamp': {'$lte' : ISODate("2015-08-20T00:00:00.000Z")}}]}
},
...
]);
由于我们遇到了性能问题,所以我想知道是否有任何方法可以在一个时间段内缓存聚合查询以改善我们的性能指标。
如果已经缓存,有什么方法可以避免聚合计算和转换吗?
我们是否应该对汇总数据使用汇总中间件集合,并在运行时填充它们?此策略有任何警告或模式吗?
谢谢。
答案 0 :(得分:0)
您可以使用MongoDB索引来提高查询性能https://github.com/GeekyAnts/NativeBase/blob/master/src/theme/components/Button.js