cassandra - CQL 3 Cassandra 1.2 计数器 : how to insert primary key?

标签 cassandra counter

我想像这样在 CQL3 中使用 Cassandra 计数器

create table count1 (id int PRIMARY KEY , c1 counter );



我知道为了更新计数器,我需要执行以下形式的操作:

update count1 set c1 = c1+1 where ..



但在此之前我需要在 key (id); 中插入一个值但我得到:
cqlsh:test2> insert into count1 (id) values (4);
Bad Request: INSERT statement are not allowed on counter tables, use UPDATE instead

是什么赋予了 ?

最佳答案

Cassandra 没有主键存在与否的概念——它只是存在某个主键的单元格。

因此,对于普通列族(即非计数器),您可以 insertupdate (它们在语义上是相同的)无论之前是否使用该主键插入了任何内容。

至于计数器表,CQL 要求你使用 update而不是 insert ,要清楚它是递增而不是设置值。您不能在 Cassandra 中设置计数器值,只能设置 inc/dec。如果之前没有计数器,则假定其值为 0。因此您可以运行

update count1 set c1 = c1 + 1 where id = 2;

并且计数器的值为 1:
select * from count1;

 id | c1
----+----
  2 |  1

关于cassandra - CQL 3 Cassandra 1.2 计数器 : how to insert primary key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711240/

相关文章:

mysql - 为什么在正确的方法之后读取并不能产生一致的结果?

mysql - 对于给定的设计目标,Google Cloud SQL 与 Google Cloud Datastore 的优缺点

iphone - touchesMoved 工作速度不够快

python - 计算数组中唯一数组的出现次数

python-3.x - python 3.4 计算 .txt 文件中的出现次数

python - while 循环计数器比较两个列表

hadoop - 为什么 Guava 在我的 build.sbt 中没有正确着色?

具有弹性 IP 地址的 Amazon EC2 上的 Cassandra

python - 从 Cassandra 检索有序计数器的最佳方法

javascript - JS onunload 事件并不总是有效