首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于时间戳的Cassandra更新或插入

问基于时间戳的Cassandra更新或插入
EN

Stack Overflow用户
提问于 2017-09-07 21:56:46
回答 1查看 1.5K关注 0票数 2

我正在尝试写一个查询,这样

  1. 如果主键与行不匹配,则插入新行
  2. 如果匹配一行,则仅在所提供的时间戳晚于lastTimestamp列值的情况下更新值。

这里的困难之处(如果我错了,请纠正我)是,我不能使用Cassandra内置的“使用时间戳”功能,因为在创建新行时,请求提供的时间戳几乎肯定低于默认时间戳,因此它将无法创建新行。

因此,我只能创建一个新列来存储时间戳。然后我要满足一个OR条件:"if lastTimestamp == null或lastTimestamp <时间戳“,但不幸的是,Cassandra不支持IF子句中的" OR”逻辑。

我能想到的另一个选择是,我总是通过“插入(如果不存在)”来创建一个新行,并填充lastTimestamp = 0。然后应用“如果时间戳更大的话更新”操作。但这实质上是两个写比一个写。还有其他可能的解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-11 04:20:07

On insert/update/delete您需要以微秒为单位指定时间戳。

这样做的简单方法是将时间戳乘以1000毫秒。

例子:

代码语言:javascript
复制
INSERT INTO data(id, map) VALUES('123-123-12321', {'object2' : {value : '2', timestamp : '2017-09-09 16:24:06.197000+0000'}}) USING TIMESTAMP 1504952646912000;

这里的1504952646912000是从1504952646912毫秒转换而来的以微秒为单位的时间戳。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46105666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档