cassandra - 在 Cassandra 中为 map 中的元素选择 TTL

标签 cassandra cql3

有什么方法可以使用 CQL3 在 Cassandra 中为 map 中的元素选择 TTL 值?

我试过这个,但它不起作用:

SELECT TTL (mapname['element']) FROM columnfamily

最佳答案

可悲的是,我很确定答案是从 Cassandra 1.2 和 CQL3 开始这是不可能的。您不能查询集合的单个元素。如 this blog entry说,“您只能检索整个集合”。不过,我也非常希望能够查询集合元素。

您仍然可以为集合中的单个元素设置 TTL。我想如果您想确保 TTL 是您的集合元素的某个值,您可以读取整个集合,然后使用所需的 TTL 更新集合(整个事物或仅选择的几个元素)。或者,如果您绝对需要知道单个数据的 TTL,您可能只需要将架构从集合更改回旧的动态列,TTL 查询肯定适用于这种情况。

或者,第三种可能性可能是您将另一列添加到您的架构中,以保存您的集合的 TTL。例如:

CREATE TABLE test (
  key text PRIMARY KEY,
  data map<text, text>,
  data_ttl text
) WITH ...

然后,您可以通过在更新“数据”时始终更新“data_ttl”列来跟踪整个 map 列“数据”的 TTL。然后,您可以像查询任何其他列一样查询 'data_ttl':
SELECT ttl(data_ttl) FROM test;

我意识到这些解决方案都不是完美的......我仍在努力找出最适合我的方法,也是。

关于cassandra - 在 Cassandra 中为 map 中的元素选择 TTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17038330/

相关文章:

索引上的 Cassandra IN 子句

cassandra - Cassandra (CQL) 中的结果分页

python - 如何使用 Python 的 cqlengine 从 Cassandra 中通过 blob 主键查询行

cassandra - 数据税 : Re-preparing already prepared query warning

cassandra - Astyanax 键范围查询

cassandra - 如果我在列族中有两个簇键,如何在 cassandra 中进行查询

Cassandra:内存表失败

cassandra - 如何在 Cassandra 的查询中同时使用 ORDER BY 和 IN?

scala - Scala 中的 JanusGraph 索引

cassandra - Cassandra中的Counter Vs Int列?