1

我是 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”来搜索数据,因为键的第二部分将是动态的。当我给出完整的行键时它工作正常。请告诉我如何做到这一点。我也在列上提供搜索条件以及指定键。

谢谢哈里什库马尔

4

1 回答 1

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 的组合。

于 2013-05-29T12:39:28.663 回答