0

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

  • 用户在某个时间范围内完成的交易数量是多少。
  • 用户在一个时间范围内完成的成功交易的总和是多少。
  • 查询应该支持对大量数据进行分组、计数、求和等 sql 结构。

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

我已经探索过弹性搜索,但是对于我拥有的那种数据,具有聚合的弹性搜索查询花费的时间超过 200 毫秒。

还有其他选择吗,我现在也在看 Aerospike。有人可以了解一下 aerospike 骨料在这种情况下是如何工作的吗?

4

1 回答 1

1

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

您的查询 1 和 2 可以通过编写基于用户 ID 上的二级索引查询的聚合 UDF 来完成,如上所述。

你的3个问题我不是很清楚。Aerospike 不提供 group by、sum、count 等作为本机查询。但是您总是可以编写一个聚合 UDF 来实现它。http://www.aerospike.com/docs/guide/aggregation.html

于 2016-02-20T18:16:00.750 回答