Cassandra无聚簇键主键疑问:PRIMARY KEY ((a,b))的含义是什么
Cassandra
PRIMARY KEY ((a, b)) 定义说明 核心结论
PRIMARY KEY ((a, b)) 中的a和b同时承担两个身份:
- 二者共同组成复合分区键,参与哈希计算决定数据对应的存储节点
- 二者共同作为整张表的完整主键,唯一标识一行数据,且表不存在聚簇键
规则拆解
Cassandra的主键语法遵循统一规则:
PRIMARY KEY (<分区键定义>, <可选的聚簇键列表>)
- 分区键如果是单字段,可以直接写字段名,不需要额外加括号
- 分区键如果是多个字段组成的复合分区键,必须额外用一层括号包裹所有分区键字段,也就是你写法里的
(a, b)外层括号,就是用来标识这两个字段都属于分区键部分 - 聚簇键需要写在分区键定义的后面,用逗号分隔,你当前的写法没有额外追加字段,所以不存在聚簇键
常见写法对比
你可以通过和另一种常见写法的差异快速区分:
PRIMARY KEY (a, b):a是单字段分区键,b是聚簇键,主键由a+b共同组成,同一a值下可存储多个不同b值的行,数据按b排序PRIMARY KEY ((a, b)):a和b共同组成复合分区键,无聚簇键,仅当a和b的值同时相同时才会判定为同一行,不存在同分区下的多行排序逻辑
你的写法完全符合「使用两个字段作为不含聚簇键的主键」的需求。
内容的提问来源于stack exchange,提问作者sparkless
相关产品推荐
相关产品推荐

