首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra :数据建模

Cassandra :数据建模
EN

Stack Overflow用户
提问于 2015-09-28 15:49:17
回答 1查看 86关注 0票数 0

我目前在cassandra中有一个名为macrecord的表,它看起来像这样:

代码语言:javascript
复制
 macadd            | position | record | timestamp
-------------------+----------+--------+---------------------
 23:FD:52:34:DS:32 |        1 |      1 | 2015-09-28 15:28:59

但是,我现在需要进行查询,该查询将使用时间戳列来查询范围。我认为如果没有时间戳作为主键(在本例中是macadd) i-e的一部分而不是聚集键,就不可能做到这一点。

如果将时间戳作为主键的一部分,则表如下所示:

代码语言:javascript
复制
 macadd            | timestamp           | position | record
-------------------+---------------------+----------+--------
 23:FD:52:34:DS:32 | 2015-09-28 15:33:26 |        1 |      1

但是,现在每当我得到一个重复的macadd时,我就不能更新时间戳列。

代码语言:javascript
复制
update macrecord set timestamp = dateof(now()) where macadd = '23:FD:52:34:DS:32'; 

给出一个错误:

代码语言:javascript
复制
message="PRIMARY KEY part timestamp found in SET part"

在这种情况下,我想不出其他的解决方案,除了删除整个行,如果有一个重复的macadd值,然后插入一个带有更新的时间戳的新行。

有没有更好的解决方案来更新时间戳,只要有一个重复的macadd值,或者在我的原始表中只有macadd是主键的范围内查询时间戳值的替代方法。

EN

回答 1

Stack Overflow用户

发布于 2015-09-29 01:11:54

要在CQL中执行范围查询,您需要将时间戳作为聚类键。但是正如您所看到的,如果不删除和插入新的键,就不能更新键字段。

Cassandra 3.0将在10月份发布时提供的一个选项是物化视图。这将允许您将时间戳作为基表中的值列和视图中的聚类列。请参阅示例here

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

https://stackoverflow.com/questions/32818048

复制
相关文章

相似问题

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