我一直在网上阅读文章,了解以下key类型之间的差异。但我似乎很难理解。举例肯定有助于更好地理解
主键,
分区键,
复合键
聚类键
关于这一点有很多困惑,我将尽可能简单
主键是一个通用概念,表示用于从表中检索数据的一列或多列
主键可以是简单的,甚至可以内联声明:
创建表堆栈溢出\u简单(
关键字文本主键,
数据文本
);
这意味着它是由单个列组成的
但是主键也可以是从更多列生成的复合键(也称为复合键)
创建表stackoverflow\u复合(
关键部分第一段文字,
第二部分第二部分,
数据文本,
主键(键第一部分,键第二部分)
);
在复合主键的情况下,";第一部分;键的第二部分称为分区键(在本例中键的第一部分是分区键),键的第二部分是集群键(在本例中键的第二部分)
请注意,分区键和群集键都可以由更多的列组成,如下所示:
创建多个表堆栈溢出(
k_第1部分文本,
k_第二部分int,
k_clust_一个文本,
k_clust_two int,
k_clust_三个uuid,
数据文本,
主键((k_第一部分,k_第二部分),k_第一部分,k_第二部分,k_第三部分)
);
在这些名字后面
- 分区键负责跨节点分发数据
- 集群键负责分区内的数据排序
- 主键相当于单个字段键表中的分区键(即简单)
- 复合/复合键只是任意多列键
更多使用信息:DATASTAX文档
小用法和内容示例
***简单***键:
插入stackoverflow_简单(键、数据)值('han','solo');
选择*from stackoverflow_simple where key='han';
表格内容
键|数据
----+------
汉·索洛
复合/复合键可以检索;“宽行”;(即,即使定义了集群键,也可以仅通过分区键进行查询)
插入stackoverflow_组合(键1,键2,数据)值('ronaldo',9,'football player');
插入stackoverflow_组合(键1,键2,数据)值(“罗纳尔多”,10,“前足球运动员”);
从stackoverflow_composite中选择*,其中键_part_one='ronaldo';
表格内容
按键第一部分|按键第二部分|数据
--------------+--------------+--------------------
罗纳尔多| 9 |足球运动员
罗纳尔多| 10 |前足球运动员
但是您可以使用所有键(分区和集群)进行查询
从stackoverflow\u组合中选择*
其中,第一部分=罗纳尔多,第二部分=10;
查询输出
按键第一部分|按键第二部分|数据
--------------+--------------+--------------------
罗纳尔多| 10 |前足球运动员
重要提示:分区键是使用where子句执行查询所需的最小说明符。
如果您有一个复合分区键,如下所示
例如:主键((col1,col2,col10,col4))
您只能通过至少传递col1和col2来执行查询,这两列定义了分区键。";“一般”;进行查询的规则是,您必须至少传递所有分区键列,然后可以选择按设置的顺序添加每个集群键
因此,有效查询是(不包括二级索引)
- col1和col2
- col1、col2和col10
- 第1列和第2列、第10列和第4列
无效:
- col1、col2和col4
- 不同时包含col1和col2的任何内容