我的列族需要两个复合列,关键数据类型是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创建的表将生成两个复合列。
答案 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
...
}