3

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

我正在使用 CQL3(通过 cqlsh)创建 CF,然后使用 CLI 发出描述命令。列中的类型按以下顺序排序: ...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)

为什么和我定义表格时使用的类型不一样?我可能在类型分配中遗漏了一些基本的东西......

谢谢!

4

1 回答 1

4

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

(因此,如果您有 5 个非键字段,那么您将有五个这样的列,并且它们的列名将仅在最后一个组合值中有所不同,该值将是非键字段名称。)

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

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

于 2012-11-04T16:11:22.350 回答