快速聚合数据的首选数据存储是什么?我有定期从其他系统提取的数据,数据存储应支持以下查询:
- 用户在某个时间范围内完成的交易数量是多少。
- 用户在某个时间范围内完成的成功事务的总和是多少。
- 查询应支持对大量数据集的 sql 构造,如分组依据、计数、总和等。
现在,我在 Redis 中使用自定义数据模型,数据在内存中获取,然后在其上运行聚合。这个模型的问题在于,这与我的透视表(列(和任何额外的透视都密切相关,如果添加,都会导致我的数据爆炸,从而导致我的 redis 框内存消耗巨大。
我已经探索了 elasticsearch,但是对于我拥有的数据类型,带有聚合的 elasticsearch 查询需要超过 200 毫秒的时间。
还有其他选择吗,我现在也在看 Aerospike。有人可以阐明在这种情况下 aerospike 聚合体是如何工作的吗?
Aerospike 支持在二级索引查询之上进行聚合。似乎您的大多数查询都以用户为中心。您可以在 userid 之上构建二级索引,并查询与用户对应的所有数据。然后,您可以拍打聚合逻辑并根据所需的时间范围过滤内容。您需要这样做,因为 Aerospike 尚不支持同时查询用户和时间范围的多个 where 子句。
您的查询 1 和 2 可以通过基于对 userid 的二级索引查询编写聚合 UDF 来完成,如上所述。
我对你的 3 个问题不是很清楚。Aerospike 不提供分组依据、总和、计数等作为本机查询。但是您始终可以编写聚合 UDF 来实现它。http://www.aerospike.com/docs/guide/aggregation.html