我是Cassandra的新手,只是玩弄它。我创建了一个列family
,其中包含复合键和复合列。以下是相同的脚本:
create column family TestCompositeKey with key_validation_class='CompositeType(UTF8Type, TimeUUIDType)' and comparator='CompositeType(UTF8Type, UTF8Type, UTF8Type, UTF8Type)' and default_validation_class='UTF8Type';
使用Hector在列族中插入数据之后是我在CLI上获得的视图:
RowKey: AB:e9a87550-c84b-11e2-8236-180373b60c1a
=> (column=0007:TAR:PUB:BD_2013_01_11_0125094813, value=TESTSEARCH, timestamp=1369823914277000)
现在我想通过行键中给出的'AB'来搜索数据,因为键的第二部分将是动态的。当我提供完整的行键时,它工作正常。请告诉我怎么做。我也在列上提供搜索条件以及指定密钥。
由于 哈里什库马尔
答案 0 :(得分:1)
你不能这样做(至少有效率):按行键查找你需要整个键。通常,应避免使用TimeUUID作为行键,除非您有一些其他表充当索引来检索查询的TimeUUID。
如果只想通过键的第一个组件进行查找,则应将第二个组件移动到列组合中,并将一个组件作为行键。定义是
create column family TestCompositeKey with key_validation_class='UTF8Type' and comparator='CompositeType(TimeUUIDType, UTF8Type, UTF8Type, UTF8Type, UTF8Type)' and default_validation_class='UTF8Type';
如果您使用了CQL3定义:
CREATE TABLE TestCompositeKey (
a varchar,
b timeuuid varchar,
c varchar,
d varchar,
e varchar,
f varchar,
PRIMARY KEY (a, b, c, d, e, f)
);
你会得到与我描述的模式基本相同的模式。行键(CQL语言中的分区键)是a,列名是b:c:d:e:f的组合。