具有PRIMARY KEY(哈希,已创建)的Cassandra表中的行唯一性



我正在尝试创建一个包含2列的表,其中一列是唯一的哈希,另一列是创建行的时间戳。

CREATE TABLE IF NOT EXISTS keyspace.table (
account varchar,
hash varchar,
lt bigint,
created timestamp,
PRIMARY KEY (hash, created)
)  WITH CLUSTERING ORDER BY (created DESC);

我希望该表按created字段排序,但仅在hash字段上唯一。我相信,唯一性目前被检查为两个字段的并集;并且只有当新行对于两个字段具有相同的值时,才将其视为重复。

你想要的是不可能的。

为了给您一点背景信息,每个hash(分区键(都唯一地标识表中的每个分区。由于您的模式有一个复合主键(分区键+集群键(,因此表中的每个分区都有一行或多行created(。因此,整个主键标识分区中的每个唯一行。

仅仅分区键hash是一行的唯一标识符是不可能的。如果这是你想要的,你需要用对你的数据进行不同的建模

CREATE TABLE accounts_by_hash (
...
PRIMARY KEY (hash)
)

最终,您需要回到Cassandra中数据建模的主要原则,即需要基于应用程序查询设计表。干杯

最新更新