Cassandra复合柱-如何选择复合类型?
我试图理解创建复合列时使用的类型 我使用CQL3(通过cqlsh)创建CF,然后使用CLI发出descripe命令。 按以下方式排序的列中的类型:…CompositeType(Type1,Type2,…)不是我期望的类型 我用的是卡桑德拉1.1.6Cassandra复合柱-如何选择复合类型?,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,
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的话),而不是任何组合列名的一部分。