我有一个关于Cassandra分区的问题。我有一个表
CREATE TABLE books (
isbn text,
title text,
author text,
publisher text,
category text,
timestamp text,
PRIMARY KEY (timestamp)
);
我想根据时间戳创建分区,我的时间戳是以分钟为单位的日期时间。因此,在某些情况下,该时间戳将重复。
如果我对Cassandra的理解正确的话,当插入相同的时间戳条目时,它会做的是更新具有该时间戳的条目。
这不是我想要的。我想要时间戳作为我的分区,但我也想要复制时间戳条目。
如果你不能输入重复的条目,它是不是与整个基于主键的分区相矛盾?
我刚认识Cassandra,所以我可能错了。
Cassandra中的分区键必须是全局唯一的,因为它们在集群中标识一个唯一的分区(记录)。
在Cassandra中,当你插入一个具有相同分区键的新记录时,它会导致"upsert"这意味着分区将被新值覆盖。
作为旁注,为表使用人工键是没有意义的。ISBN是唯一的,所以你应该用它来划分你的books
表。
如果您想在表中保留多个版本的书籍,我建议相应地建模您的表。例如:
CREATE TABLE books_by_isbn (
isbn text,
version timestamp,
title text,
author text,
publisher text,
category text,
PRIMARY KEY (isbn, version)
)
在这个表中,每本书都由其ISBN标识,并且每个分区中有多行可以由version
列标识。干杯!