0

在 Aerospike 中,我有一个集合ac_1_2015-06-13_15,其中包含帐户 1 在 2015-06-13 的支出信息,按 15 分钟分段细分,即每条记录代表一天中的 15 分钟分段。由于一小时有 4 个 15 分钟的片段,一天有 24 小时,因此有 96 条记录。每条记录都有一个 bin spend

为了计算当天的总支出,我AerospikeClient.scanAll()将所有支出值相加:

totalSpend += record.getDouble("spend");

这需要 351 毫秒。有没有更有效的方法来计算总和,或者就是这样?

4

1 回答 1

1

通常,对于键值存储,如果可能,您希望在单个记录上就地进行此类聚合,并尽量减少用于对信息建模的记录数。

如果您的集合描述了一天,那么帐户不是单条记录是否有原因?它可能每个小时都有一个 bin,该 bin 的数据类型是一个列表或保存这些段的地图。其他 bin 可以保存聚合数据。

我也会小心每天有一套。每个命名空间有1023 组限制。是否有理由说明这一天不是整数或字符串,并在其上构建了二级索引?这样您就可以查询当天的数据。或者,如果它是一个 unix-timestamp 值(整数上的二级索引),您可以查询精确的时间范围。每天记录所有精确到分钟的数据(假设限制)对我来说更有意义。

于 2015-06-14T17:10:55.487 回答