Cassandra复合柱-如何选择复合类型?

Cassandra复合柱-如何选择复合类型?,cassandra,cql3,Cassandra,Cql3,我试图理解创建复合列时使用的类型 我使用CQL3(通过cqlsh)创建CF,然后使用CLI发出descripe命令。 按以下方式排序的列中的类型:…CompositeType(Type1,Type2,…)不是我期望的类型 我用的是卡桑德拉1.1.6 CREATE TABLE CompKeyTest1 ( KeyA int, KeyB int, KeyC int, MyData varchar,

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

我使用CQL3(通过cqlsh)创建CF,然后使用CLI发出descripe命令。 按以下方式排序的列中的类型:…CompositeType(Type1,Type2,…)不是我期望的类型

我用的是卡桑德拉1.1.6

CREATE TABLE CompKeyTest1 (
             KeyA int,
             KeyB int,
             KeyC int,
             MyData varchar,
             PRIMARY KEY (KeyA, KeyB, KeyC)
           );
返回的复合类型为

CompositeType(Int32,Int32,UTF8)
CompositeType(UTF8,Int32,UTF8)
是不是应该是(Int32,Int32,Int32)

返回的复合类型为

CompositeType(Int32,Int32,UTF8)
CompositeType(UTF8,Int32,UTF8)
为什么它与我定义表时使用的类型不一样?我可能在类型分配中遗漏了一些基本内容


谢谢

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

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

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


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

谢谢您的回答。为了确保我理解,第一个键是原始键,在本例中始终是int。下一个“键”是由其余主键字段和第一个数据字段(在本例中,它是唯一的数据字段)组成的复合键。几乎。每个非键字段存储在其自己的列中,其组合名称由键2…n的值和存储的非键字段的名称组成。如果您有5个非关键字段,那么您将有5个这样的列,它们的列名仅在最后一个组合值(即非关键字段名)中不同。第一个主键是分区键,它的值仅用作行键(如果您熟悉Cassandra的话),而不是任何组合列名的一部分。