ScyllaDB:防止特定列上的重复条目

ScyllaDB: Prevent duplicate entries on specific columns

我正在使用 ScyllaDB 并且我有一个包含以下 5 列的 table:

K1 K2 V1 V2 V3

其中K1是分区键,K2是集群键,V1..V3是代表table中3个不同值的三列。

我想防止将重复值添加到 table,其中 K1, K2, V1 and V2 与 table 中的现有条目匹配。换句话说,不应该 add/store 超过一行,其中该行中的所有 4 列都与具有相同值的现有行相匹配。

这可以用 Scylla 实现吗?

谢谢

实现这一点的最可靠方法是使所有 4 个列成为 table 的主键的一部分。键自然是 de-duplicated 或者更好的说法,一个新的键值写入只会用该键覆盖旧值。 您提到当前模式是这样的(为简单起见,假设文本为类型):

CREATE TABLE ks.tbl (
    K1 text,
    K2 text,
    V1 text,
    V2 text,
    V3 text,
    PRIMARY KEY(K1, K2)
);

您可以将主键更改为:PRIMARY KEY(K1, (K2, V1, V2))。 您仍然可以仅基于 K1K2 进行查询,因为集群限制只允许指定集群键的前缀。