聚合的数据存储

时间:2016-02-11 06:37:17

标签: redis aerospike nosql-aggregation

什么是快速聚合数据的首选数据存储区? 我有定期从其他系统提取的数据,数据存储应支持以下查询:

  • 用户在一个时间范围内完成的交易数量。
  • 用户在一个时间范围内完成的成功交易的总和是多少。
  • 查询应该支持sql构造,例如group by,count,sum等大量数据。

现在,我在Redis中使用自定义数据模型,并在内存中提取数据,然后在其上运行聚合。这个模型的问题在于它与我的枢轴(列)和任何其他枢轴密切相关,如果添加将导致我的数据爆炸导致我的redis盒上的大量内存消耗。

我已经探索过elasticsearch,但对于我拥有的数据类型,使用聚合的elasticsearch查询花费的时间超过200毫秒。

还有其他选择,我现在也在看Aerospike。有人可以说明在这种情况下,空气动力学聚合如何发挥作用吗?

1 个答案:

答案 0 :(得分:1)

Aerospike支持在二级索引查询之上进行聚合。似乎您的大多数查询都是基于用户的。您可以在userid之上构建二级索引,并查询与用户对应的所有数据。然后,您可以打击聚合逻辑并根据所需的时间范围过滤内容。你需要这样做,因为Aerospike还不支持你在同一时间查询用户和时间范围的多个where子句。

您的疑问1&如上所述,可以通过基于userid上的二级索引查询编写聚合UDF来完成图2的处理。

我对你的3个问题不是很清楚。 Aerospike不提供分组,总和,计数等作为本机查询。但是你总是可以编写一个聚合UDF来实现它。 http://www.aerospike.com/docs/guide/aggregation.html