Cassandra复合材料列 - 如何选择CompositeTypes?

时间:2012-11-04 13:20:07

标签: cassandra cql3

我正在尝试了解创建复合列时使用的类型。

我正在使用CQL3(通过cqlsh)创建CF,然后使用CLI来发出describe命令。 列中的类型排序依据:... CompositeType(Type1,Type2,...)不是我期望的那些。

我正在使用Cassandra 1.1.6。

CREATE TABLE CompKeyTest1 (
             KeyA int,
             KeyB int,
             KeyC int,
             MyData varchar,
             PRIMARY KEY (KeyA, KeyB, KeyC)
           );

返回的CompositeType为

CompositeType(Int32,Int32,UTF8)

不应该是(Int32,Int32,Int32)?

CREATE TABLE CompKeyTest2 (
             KeyA int,
             KeyB varchar,
             KeyC int,
             MyData varchar,
             PRIMARY KEY (KeyA, KeyB, KeyC)
           );

返回的CompositeType为

CompositeType(UTF8,Int32,UTF8)

为什么它与我定义表时使用的类型不一样?我可能在类型赋值中遗漏了一些基本内容......

谢谢!

1 个答案:

答案 0 :(得分:4)

复合列名称由主键2 ... n的和要保存的非主键列的名称组成。

(因此,如果你有5个非关键字段,那么你将有5个这样的列,它们的列名只会在最后一个组合值上有所不同,这个值将是非关键字段名。)

因此,在这两个示例中,复合列由KeyB,KeyC的和要存储的列的名称组成("MyData",两种情况)。这就是为什么你会看到那些CompositeTypes被退回的原因。

(顺便说一下,主键中的第一个键是分区键,它的值仅用作行键(如果你熟悉Cassandra的话)。它不作为任何一个的一部分使用。复合列名称。)