2012-06-03 130 views
5

如何使用cassandra中的CQL3創建計數器列家族?如何在cassandra中使用CQL3創建計數器列家族

我曾經使用過: CREATE COLUMNFAMILY userstats(username varchar PRIMARY KEY,images counter)WITH default_validation = counter AND comment ='User Stats';

現在,當我運行在CQL3我得到: 錯誤的請求:default_validation不是有效的關鍵字參數在創建的ColumnFamily

回答

3

CQL3不再與「動態列名」的模式枝。它仍然可以生成任意寬度的cassandra行,但它們看起來像CQL中的「正常」窄表,所有列都被命名和定義。這就是爲什麼CQL3不再支持設置default_validationcomparator等等。

在做任何不平凡的事情之前,您應該先閱讀並理解http://www.datastax.com/dev/blog/schema-in-cassandra-1-1

回答你的問題,但是,是它的作爲留下關閉default_validation簡單:

CREATE TABLE userstats (
    username varchar PRIMARY KEY, 
    images counter 
) WITH comment='User Stats'; 

雖然目前還不清楚是否打算使用每行有多個計數器,因爲你想要一個default_validation 。如果你這樣做,你的comparator本來varchar,你可以這樣做:

CREATE TABLE userstats (
    username varchar, 
    countername varchar, 
    value counter, 
    PRIMARY KEY (username, countername) 
) WITH comment='User Stats'; 

..和讓images僅僅是counternames之一。

+0

我試圖從CQL3提示符中使用您推薦的命令並獲得:TSocket讀取0字節 – mithrix

+1

根據我的經驗,cqlsh滯後於功能。你應該嘗試直接使用節點execute_cql – Alar

+1

@Alar cqlsh不落後於cql特性,因爲實際的cql處理是在Cassandra端完成的。 Cqlsh只是幫助使輸出看起來很漂亮,並提供了很好的選項卡完成和readline功能。它使用相同的節儉通話。 –