我有一个包含timestamp
列的表格,我想操纵该列的值。例如,我需要做一些事情:
UPDATE mytable SET datetimecolumn = datetimecolumn + 10mins
如何在Apache Cassandra中完成?
更新:答案似乎是“你不能”。但选择的答案是我们最接近的答案。
答案 0 :(得分:3)
只有当数据类型为计数器时,您才可以查询类似的这个。
使用计数器:
计数器是一个特殊列,用于存储以增量方式更改的数字。例如,您可以使用计数器列来计算查看页面的次数。
仅在专用表中定义计数器并使用计数器数据类型。您无法索引,删除或重新添加计数器列。必须将表中的所有非计数器列定义为主键的一部分。
示例:
CREATE TABLE mytable (
pk1 int PRIMARY KEY,
datetimecolumn counter
);
这里你必须使用毫秒级的datetimecolumn值 第一次,您必须使用更新查询,时间以毫秒为单位,例如1487686182403
UPDATE mytable SET datetimecolumn = datetimecolumn + 1487686182403 where pk1 = 1
现在mytable with pk = 1包含datetimecolumn = 1487686182403的值。
如果要将datetimecolumn增加10分钟(600000毫秒)
UPDATE mytable SET datetimecolumn = datetimecolumn + 600000 where pk1 = 1
来源:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html
答案 1 :(得分:1)
read-before-write 是cassandra中的反模式。您已经在客户端操纵值并像往常一样更新;
换句话说:你必须搜索(选择)值,做更改(增加10分钟)并在cassandra更新新值。