Cassandra CQL:如何只插入不超过 3 年的记录?

Cassandra CQL: How to insert only records, which are not older than 3 years?

我有一些 table 这样的:

CREATE TABLE events (
   id int,
   eventdate timestamp,
   PRIMARY KEY (id)
);

我想做的是条件插入,它会验证 eventdate 是否不超过 3 年,如果满足条件则插入数据。

在 SQL 中,DATEADD

可以实现类似的功能

在Cassandra中如何处理?

select * from events 并迭代(分页)结果集。为超过 3 年的所有内容发布插页。一个快速的 python 脚本并给它一两天到 运行 将比更复杂的事情在更短的时间内完成。特别是如果这是一次性的事情。如果您需要定期执行此操作,我建议您编写一个 spark 作业来执行此操作。如果您不想使用 spark 并希望在本地 运行 通过将 select 语句上的标记范围拆分为环边界,您可以获得更高的效率。

Cassandra 不支持需要先读后写的大型批量操作,而后者必须读取整个数据集。它不适用于其设计支持的集群(想想跨越许多数据中心的 PB)。