如何解决分区键的第一个键可以是集群键吗?
使用 Cassandra 数据库中的以下架构:
CREATE TABLE IF NOT EXISTS stackoverflow_sorted_by_key_part_two (
key_part_one UUID,key_part_two UUID,idempotence_key int,data TEXT,PRIMARY KEY((key_part_one,idempotence_key),key_part_two)
);
(key_part_one,idempotence_key)
是一个分区键 & key_part_two
是聚类键。
使用上述模式,记录按 key_part_two
升序排序(作为表索引的一部分)
但是,为了更快的选择查询(使用 WHERE key_part_one == "some_uuid"
),我们希望记录按 key_part_one
排序(作为表索引的一部分)。
以下架构是否增强了选择查询的性能?
CREATE TABLE IF NOT EXISTS stackoverflow_sorted_by_key_part_one (
key_part_one UUID,key_part_two)
)WITH CLUSTERING ORDER BY (key_part_one ASC);
解决方法
不,您不能这样做 - 您只能在 WITH CLUSTERING ORDER BY
中指定聚类列。如果列是分区键的一部分,则它不可排序 - Cassandra 将散列函数应用于此列的值(或列,如果它是复合键),并使用该散列(令牌)来查找哪个节点负责该令牌。然后按聚类列排序只发生在分区内部。
附言阅读“Cassandra:权威指南,第 3 版”一书的第一章,该书是 freely available from DataStax site - 它将帮助您进行 Cassandra 的数据建模。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。