Cassandra ttl 连续

标签 cassandra row ttl

我知道 Cassandra 中的列有 TTL。但是也可以在一行上设置 TTL 吗?在每列上设置 TTL 并不能解决我的问题,如下面的用例所示:

在某些时候,一个进程想要删除一个带有 TTL 的完整行(假设行“A”的 TTL 为 1 周)。它可以通过替换具有相同内容但 TTL 为 1 周的所有现有列来实现此目的。

但是可能有另一个进程在“A”行上同时运行,它插入新列或替换没有 TTL 的现有列,因为该进程不知道要删除该行(它同时运行!)。因此,1 周后,除了这些新插入的列之外,“A”行的所有列都将因 TTL 被删除。我也希望它们被删除。

那么这个用例是否有或将有 Cassandra 支持,还是我必须自己实现一些东西?

亲切的问候
斯特凡

最佳答案

目前无法在 Cassandra 中对一行设置 TTL。 TTL 设计用于在写入时已知其生命周期时删除单个列。

您可以通过延迟过程来实现您想要的 - 而不是想要插入 1 周的 TTL,而是在一周后运行它并删除该行。行删除具有以下语义:之前插入的任何列都将被删除,但之后插入的列不会被删除。

如果将来插入的列仍然需要删除,您可以在将来插入带有时间戳的行删除以确保这一点,但要非常小心:如果您以后想插入到该行中,您不能,列只会写入该行时消失(直到墓碑被垃圾收集)。

关于Cassandra ttl 连续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16544051/

相关文章:

iTextSharp 错误 : infinite table loop : row content is larger than page

redis - 集合成员的 TTL

Redis ttl payload 内存大小

apache-spark - 如何获取 saveToCassandra 并使用它?

Cassandra 将 Keyspace 存储到新磁盘

Cassandra 性能随时间更新行

mongodb - Spring Data 的 TTL 索引定义

Cassandra 空单元!= 逻辑删除单元计数

r - 如何抑制 data.frame 行号的显示?

php - 表行并排