我有一个案例需要在Cassandra中记录用户操作,然后在任意时间段内检索具有最大操作数的用户的排序列表。
有人可以建议一种以预先聚合的方式存储和检索此数据的方法吗?
答案 0 :(得分:1)
在Cassandra之外我建议使用stream-summary或计算最小草图,你可以用更少的空间解决这个问题,并立即得到结果。只需更新并定期序列化并保持它(假设您不需要保证准确性)
在Cassandra中,您可以按小时保持一行,例如按小时计算,并在该行中为每个用户设置一个计数器,并在使用时递增它们。然后使用批处理作业来运行它们并找到重型击球手。您将被限制为将最小可查询时间设置为1小时,并且它不会特别便宜或快速计算,但它会起作用。
通常情况下,将这些视为操作日志会很好,每次有事件存储它并让批处理作业使用hadoop或custom对其进行分析。如果需要它,实时id建议采用上述方法将流摘要保存在内存中。