【问题标题】:Cassandra UPDATE not working after deletionCassandra UPDATE在删除后不起作用
【发布时间】:2016-05-01 14:22:06
【问题描述】:

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

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

我正在使用以下方法插入条目:

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

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

我正在删除使用的条目:

Delete form usertopics where key in ?

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

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

【问题讨论】:

  • 你的cql版本是多少?
  • [cqlsh 5.0.1 |卡桑德拉 2.1.11 | CQL 规范 3.2.1 |原生协议 v3]

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


【解决方案1】:

来自 cassandra 文档 -

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

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

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

【讨论】:

  • 感谢 Anupam 的信息。我会调查的。
猜你喜欢
  • 2016-05-25
  • 1970-01-01
  • 2018-04-06
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多