【发布时间】:2019-09-29 00:29:10
【问题描述】:
我正在尝试使用 Cassandra 进行数据建模,但我对应该选择什么作为分区键和复合键感到困惑。我的表格如下所示
CREATE TABLE mykeyspace.mytable (
id UUID,
A text,
B text,
C text,
D text,
... other columns
PRIMARY KEY(id)
);
我在表中引入了一个id列,并把它作为主键,这样用id查询就更快了。
我面临的问题是列集 (A,B,C,D) 唯一标识数据,每当我执行插入时,我想防止重复和搜索列集 (A,B, C,D) 可能很昂贵,因为它不是我的主键的一部分。
我随机生成 id,我认为的一种方法是散列 4 列,然后它可以解决重复问题,但我怀疑如果我开始为 id 获取散列,数据将如何分布。
我想到的其他方法是将 (A,B,C,D) 作为集群键,这样我的主键现在看起来像 ((id), A,B,C,D) 并在插入之前使用集群键以防止重复,这里我不确定仅使用聚类键的搜索效率如何?
上述哪种数据建模方法更适合,还是有其他方法?
【问题讨论】:
-
根据您想要查询的方式设计您的表,而不是按照您想要插入的方式(写入非常便宜,读取相对昂贵)。如果您想以多种方式访问数据,您可能最终会出现重复,这没关系。
-
我建议在academy.datastax.com上参加 DS220 课程
标签: database cassandra nosql data-modeling datastax-enterprise