2012-06-28 30 views
3

我的列族需要兩個組合列,關鍵數據類型是BytesType。使用cassandra-cli創建兩個組合列

下面是使用CQL表的定義:

CREATE TABLE stats (
     gid   blob, 
     period  int, 
     tid   blob, 
     sum   int, 
     uniques  blob, 
     PRIMARY KEY(gid, period, tid) 
    ); 

我想要做的就是創建柱族但卡桑德拉CLI。這是我的鏡頭。

第一複合物的結構是:

CompositeType(Int32Type, BytesType, AsciiType) 

,它會保持一個整數。

第二複合物的結構是:

CompositeType(Int32Type, BytesType) 

和意願保持BytesType。

create column family stats with comparator = 'CompositeType(Int32Type, BytesType, AsciiType)'; 

我不知道如何在create column family命令中定義第二個組合列。

當然,我假設用CQL創建的表將生成兩個複合列。

回答

3

您只能在cassandra的列族中使用一個比較器。這意味着您也可以在列族中只有一種類型的組合列。通過你使用會實際使用你提到的第一個複合型比較的CQL語句創建該表:

CompositeType(Int32Type, BytesType, AsciiType) 

這比較能描述所有的模式,因爲在你的組合結束了「AsciiType」組件。列名的這個組成部分將包含字符串'sum'或'uniques',並且列值將相應地匹配類型。

使用JSON樣式符號表示的一個實例:

<bytes> : {        # a row key in your stats column family 
    (100, <bytes>, "sum") : 100,   # one column in your row 
    (100, <bytes>, "uniques") : <bytes>, 
    (200, <bytes>, "sum") : 200, 
    (200, <bytes>, "uniques") : <bytes> 
} 
<bytes> : {        # another row in the cf 
    ... 
}