【发布时间】:2018-12-15 08:33:30
【问题描述】:
我们需要从表中加载最近 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)
任何指针...
【问题讨论】:
-
你的表定义是什么样的?这最终决定了数据的排序方式以及查询方式。
-
表定义有 lastupdated_timestamp(在这个字段上有一个索引)。
-
Sam 的回答很到位。如果您希望能够查询最近 30 天的更新数据,则需要构建您的表以从一开始就支持该查询。
-
同意,如果我正在创建一个新的表设计,Sams 解决方案很好,但在这里我将扩展这个表作为设计扩展的一部分,并根据业务维护当前的主键(分区和集群键)需要。
-
如果可能,请考虑将搜索引擎放在前面。像太阳能或弹性搜索。这将是您获得灵活性的最佳选择(现在和将来)。另一种解决方案是运行数据管道,将“最近 30 天更新”的记录(或 ID)保存在单独的数据库中,然后使用它来获得您需要的结果。
标签: cassandra nosql cassandra-3.0