S.O*_*O.S 1 database duplicates cassandra nosql scylla
我正在使用ScyllaDB并且有一个包含以下 5 列的表:
K1 K2 V1 V2 V3
Run Code Online (Sandbox Code Playgroud)
其中K1是分区键,K2是聚类键,V1..V3是代表表中 3 个不同值的三列。
我想防止将重复值添加到与表K1, K2, V1 and V2中现有条目匹配的表中。换句话说,应该不可能添加/存储多于一行,其中该行中的所有 4 列都与具有相同值的现有行匹配。
用 Scylla 可以实现吗?
谢谢
实现这一目标的最可靠方法是使所有 4 个列成为表主键的一部分。键自然会被重复数据删除,或者更好地说,带有键值的新写入只会用所述键覆盖旧值。您提到当前的架构是这样的(为简单起见,假设文本为类型):
CREATE TABLE ks.tbl (
K1 text,
K2 text,
V1 text,
V2 text,
V3 text,
PRIMARY KEY(K1, K2)
);
Run Code Online (Sandbox Code Playgroud)
您可以将主键更改为如下所示:PRIMARY KEY(K1, (K2, V1, V2))。您仍然可以仅基于K1和进行查询K2,因为集群限制仅允许指定集群键的前缀。