2013-07-17 34 views
4

我想在CQL3使用Cassandra的计数器这样CQL 3 Cassandra 1.2计数器:如何插入主键?

创建表COUNT1(ID INT PRIMARY KEY,C1计数器);

我知道,以更新,我需要做的形式的东西柜台:

更新COUNT1组C1 = C1 + 1,其中..

,但在此之前我需要在我key (id);插入值,但我得到:

cqlsh:test2> insert into count1 (id) values (4); 
Bad Request: INSERT statement are not allowed on counter tables, use UPDATE instead 

怎么办?

回答

6

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 
+0

感谢理查德,我明白了,所以我必须更新柜台桌上有一个任意的标识符可以工作。有点奇特,但是有效 - 谢谢 –

+0

这是您用来检索它的计数器的ID。您可以在列族中尽可能多地添加。 – Richard