我刚观看了Patrick McFadin关于cassandra数据模型的YouTube视频.
有一张表,如下:
create table user_activity_history {
username varchar,
interaction_date varchar,
activity_code varchar,
detail varchar,
PRIMARY KEY((username,interaction_date),interaction_time)
);
Run Code Online (Sandbox Code Playgroud)
为什么是主键((username,interaction_date),interaction_time).这有什么不同(username,interaction_date,interaction_time).
lor*_*can 13
差异与表格有关partition_key.通常,PRIMARY KEY中的第一个元素也是分区键 - 这定义了集群中数据的物理位置,例如,通过使用以下内容:
PRIMARY KEY(username,interaction_date,interaction_time)
Run Code Online (Sandbox Code Playgroud)
插入表中的数据将按照分区(物理上)进行分区username,而使用以下内容:
PRIMARY KEY((username,interaction_date),interaction_time)
Run Code Online (Sandbox Code Playgroud)
它将根据username,interaction_date组合进行分区.后一种方案的优点是username可以跨群集中的节点存储与单个数据相关的数据.
有关CREATE TABLE上datastax的CQL文档中partition_keys的更多详细信息:
使用复合PRIMARY时,Cassandra会将定义中声明的第一列视为分区键,并将该行的所有列存储在同一物理节点上.使用复合分区键时,Cassandra会将嵌套括号中的列视为分区键,并将行的列存储在多个节点上.使用一组额外的括号声明复合分区键,以定义对数据进行分区的列.
| 归档时间: |
|
| 查看次数: |
4632 次 |
| 最近记录: |