快速聚合数据的首选数据存储是什么?
我定期从其他系统中提取数据,数据存储应支持以下查询:
用户在一个时间范围内完成的事务数。
用户在一个时间范围内成功完成的事务总数是多少?
查询应该支持一大组数据上的sql结构,如group by、count、sum等。
现在,我在redis中使用一个自定义的数据模型,数据被提取到内存中,然后在它上面运行聚合。这个模型的问题是,它与我的数据透视(列)和任何附加的数据透视紧密相关,如果添加,将导致我的数据爆炸,导致我的redis盒子上的大量内存消耗。
我已经探索过elasticsearch,但是对于我所拥有的数据类型,elasticsearch查询的聚合时间超过200毫秒。
还有其他选择吗,我现在也在看Aerospike。有人能解释一下Aerospike聚集体在这种情况下是如何工作的吗?

最佳答案

Aerospike支持二级索引查询之上的聚合。似乎大多数查询都以用户为中心。您可以在userid之上构建一个二级索引,并查询与用户对应的所有数据。然后,您可以拍打聚合逻辑,并根据所需的时间范围过滤内容。您需要这样做,因为Aerospike还不支持多个where子句,您可以在其中同时查询用户和时间范围。
您的查询1和查询2可以通过编写基于上述userid的二级索引查询的聚合udf来完成。
我不太清楚你的三个问题。Aerospike不提供GROUPBY、SUM、COUNT等本地查询。但您始终可以编写一个聚合udf来实现它。http://www.aerospike.com/docs/guide/aggregation.html

关于redis - 聚合的数据存储区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35332425/

10-12 12:48