3

我的列族需要两个复合列,关键数据类型是 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)';

我不确定如何在创建列族命令中定义第二个复合列。

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

4

1 回答 1

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
    ...
}
于 2012-06-28T14:50:27.127 回答