【发布时间】:2019-01-17 10:29:07
【问题描述】:
我需要一个 Cassandra 表的数据模型来满足以下要求。
注意:这有助于加入两个 kafka 主题,并且任何一个 kafka 正在发生任何更新,两者都将以非规范化格式反映在 Cassandra 表中
create table stackoverflow_composite (
key_part_one text,
key_part_two int,
data text,
PRIMARY KEY(key_part_one, key_part_two)
);
insert into stackoverflow_composite (key_part_one, key_part_two, data)
VALUES ('ronaldo', 9, 'football player');
insert into stackoverflow_composite (key_part_one, key_part_two, data)
VALUES ('ronaldo', 10, 'ex-football player');
insert into stackoverflow_composite (key_part_one, key_part_two, data)
VALUES ('ronaldo', 11, 'ex-football player');
select * from stackoverflow_composite where key_part_one = 'ronaldo';
key_part_one | key_part_two | data
--------------+--------------+--------------------
ronaldo | 9 | football player
ronaldo | 10 | ex-football player
根据我们的要求,主键的任何一个值都是相同的,应该被更新。没有插入。
insert into stackoverflow_composite (key_part_one, key_part_two, data)
VALUES ('Messi', 10, 'ex-football player');
基于第二个主键
cqlsh:key1> select * from stackoverflow_composite ;
key_part_one | key_part_two | data
--------------+--------------+--------------------
ronaldo | 9 | football player
Messi | 10 | ex-football player
基于第二个第一主键
insert into stackoverflow_composite (key_part_one, key_part_two, data)
VALUES ('Messi', 12, 'ex-football player');
cqlsh:key1> select * from stackoverflow_composite ;
key_part_one | key_part_two | data
--------------+--------------+--------------------
ronaldo | 9 | football player
Messi | 12 | ex-football player
【问题讨论】:
-
已修改示例:
-
您能否指定您将对数据模型执行哪些读取查询?在 Cassandra 中,根据您要执行的查询构建模型很重要
-
感谢您的回复。请查找更多详细信息。考虑 - 表 A 有 3 列。 Col-1、Col-2、Col-3。在不考虑主键的情况下,如果源有任何更新,则表中的所有记录都应更新。 col-1 | col-2 | col-3 -------------- 100 | 11 |蓝色 200 | 11 |蓝色 300 | 11 | Green All col-3 = 'Blue' 应该用 'Red' 更新而不考虑 Key 值
-
我已经明白这一点了,我的问题是关于你的阅读查询(选择查询)......你要问 Cassandra 什么?
-
选择查询将基于主键..这不是问题。
标签: cassandra datastax cassandra-3.0 composite-primary-key