使用cassandra-cli创建两个复合列

时间:2012-06-28 11:40:30

标签: nosql cassandra

我的列族需要两个复合列,关键数据类型是BytesType。

以下是使用CQL的表的定义:

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

我想要做的是使用Cassandra CLI创建列族。这是我的镜头。

第一个复合材料的结构是:

CompositeType(Int32Type, BytesType, AsciiType)

它将包含一个整数。

第二种复合材料的结构是:

CompositeType(Int32Type, BytesType)

并将保留BytesType。

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

我不确定如何在create column family命令中定义第二个复合列。

当然我假设使用CQL创建的表将生成两个复合列。

1 个答案:

答案 0 :(得分: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
    ...
}