仅使用复杂分区键之一进行查询时,Cassandra 查询有效

Cassandra query works when querying only with one of the Complex Partition Key

我是 Cassandra 的初学者,正在通过 data-stax 社区获取教程。

根据文档,在 Cassandra 中,当创建 table 复杂分区键时,在查询 table 时必须同时指定分区键,否则查询将导致错误。

但对我来说,当我仅使用第一个分区键进行查询时它就可以工作。以下是对我有用的示例。

Table 说明:

CREATE TABLE killrvideo.videos5 (
    title text,
    added_year int,
    added_date timestamp,
    description text,
    user_id uuid,
    video_id timeuuid,
    PRIMARY KEY (title, added_year)
) WITH CLUSTERING ORDER BY (added_year ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

** 查询:**

cqlsh:killrvideo> select * from videos5 where title='DHANNYA';

结果:

 title   | added_year | added_date                      | description | user_id                              | video_id
---------+------------+---------------------------------+-------------+--------------------------------------+--------------------------------------
 DHANNYA |       2018 | 2018-04-23 11:38:12.811000+0000 |        Test | 50554d6e-29bb-11e5-b345-feff819cdc9f | ce0de9b1-46ea-11e8-839e-87bbc8b633f5

它应该抛出一个错误,但它没有。我想知道分区键的散列如何仅使用其中一个键来定位数据。

简单的答案:您已将 title 定义为分区键,将 added_year 定义为集群键。这是因为主键中的第一个键始终是分区键,除非您使用括号在分区键中有多个键。因此,在您的示例中,您应该使用以下内容在分区键中包含标题和 added_year:

PRIMARY KEY ((title, added_year))

这在另一个 Whosebug 答案中有进一步解释:https://whosebug.com/a/24953331/1516699