删除后,Cassandra UPDATE无法正常工作

时间:2016-01-25 10:08:09

标签: cassandra cql insert-update datastax-java-driver nosql

我在Cassandra中使用了宽行模式。我的表定义如下:

CREATE TABLE usertopics (
    key text,
    topic text,
    score counter,
    PRIMARY KEY (key, topic)
)

我使用以下方式插入条目:

UPDATE usertopics SET score = score + ? WHERE key=? AND topic=?

这样如果密钥不存在,它将插入,如果它存在,它将更新。

我删除使用的条目:

Delete form usertopics where key in ?

但是在删除后我再次尝试更新时,它没有更新。它没有给出任何错误,但它也没有在db中反映出来。

当我截断表格时,它会再次完美插入。我使用Datastax java驱动程序访问Cassandra。有什么建议吗?

1 个答案:

答案 0 :(得分:5)

来自cassandra文档 -

  

反移除本质上是有限的。例如,如果您发出   很快,序列“递增,移除,递增”它   可能会导致删除(如果由于某种原因删除   恰好是最后收到的消息)。因此,删除柜台   仅用于最终删除,即删除时   之后,计数器不会增加。 这也适用于行删除:   如果删除一行计数器,则递增该行中的任何计数器   (在删除之前存在)将导致未确定   行为即可。请注意,如果您需要重置一个计数器,一个选项(那个   不幸的是,并非安全)可能是读取它的价值和   add -value。

删除后,不能/不应使用具有相同密钥的计数器。请使用以下链接获取更多信息 -

https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html https://wiki.apache.org/cassandra/Counters

相关问题