【问题标题】:Duplicate entries on partition key in CassandraCassandra中分区键上的重复条目
【发布时间】:2021-10-29 11:29:21
【问题描述】:

我有关于 Cassandra 分区的问题。我有一张桌子

CREATE TABLE books (
   isbn text,
   title text,
   author text,
   publisher text,
   category text,
   timestamp text,
   PRIMARY KEY (timestamp)
);

我想根据时间戳进行分区,我的时间戳是以分钟为单位的日期时间。因此,在某些情况下,此时间戳会重复。

如果我正确理解 Cassandra,当插入相同的时间戳条目时,它将更新具有该时间戳的条目。

这不是我想要的。我想要时间戳作为我的分区,但我也想要重复的时间戳条目。

如果你不能输入重复的条目,这是否与整个基于主键的分区相矛盾。

我是 Cassandra 的新手,所以我可能错了。

【问题讨论】:

    标签: database-design cassandra nosql


    【解决方案1】:

    Cassandra 中的分区键必须是通用唯一的,因为它们标识集群中的唯一分区(记录)。

    在 Cassandra 中,当您插入具有相同分区键的新记录时,会导致“更新插入”,这意味着分区会被新值覆盖。

    附带说明,为您的表使用人工键是没有意义的。 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 列标识。干杯!

    【讨论】:

    • 哦,错字@Andrew不错。谢谢你的编辑,伙计! ?
    • 正确吗?我认为主键需要是唯一的,即分区键+集群键。不仅是分区键。
    • @html_programmer 集群键标识分区中的一行。唯一分区键用于标识表中的特定分区。干杯!
    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 2014-09-16
    • 2015-06-21
    相关资源
    最近更新 更多