Cassandra:如何选择最近30天更新的数据

时间:2018-07-06 17:38:30

标签: cassandra nosql cassandra-3.0

我们需要从表格中加载最近30天的更新数据。

以下一种可能的解决方案不允许这样做。

select * from XYZ_TABLE where WRITETIME(lastupdated_timestamp) > (TOUNIXTIMESTAMP(now())-42,300,000);

select * from XYZ_TABLE where lastupdated_timestamp > (TOUNIXTIMESTAMP(now())-42,300,000);

该表的列为

lastupdated_timestamp (with an index on this field)
lastupdated_userid (with an index on this field)

任何指针...

1 个答案:

答案 0 :(得分:6)

除非您的表是基于此查询构建的,否则查询将搜索数据库的每个分区,一旦您的数据集变大,这将变得非常昂贵,并且可能导致超时。

要有效完成此查询,XYZ_TABLE应该具有如下主键:

PRIMARY KEY ((update_month, update_day), lastupdated_timestamp)

这是为了让Cassandra知道在哪里可以找到数据。它具有可以快速查找的月份和日期时段,然后您可以运行类似的查询来查找特定日期的更新。

SELECT * FROM XYZ_TABLE WHERE update_month = 07-18 and update_day = 06