Cassandra 为什么不';难道不能在卡桑德拉建造墓碑吗?

Cassandra 为什么不';难道不能在卡桑德拉建造墓碑吗?,cassandra,datastax,upsert,tombstone,Cassandra,Datastax,Upsert,Tombstone,如图所示,为什么上部不创建墓碑? 根据datastax文档,对于每一次upsert,cassandra都认为是先删除后插入,因为插入的新时间戳覆盖了旧时间戳。旧的时间戳数据必须标记为删除,这与墓碑有关 为什么我们有相互矛盾的陈述?否则我会错过什么吗 用例: 在Cassandra中使用唯一键(uuid)插入数据,并且该数据中的某些列保持频繁更新。你推荐哪种方法 在中插入具有新列值的相同数据 插入查询 根据给定的uuid更新现有记录 在更新查询中使用新列值 哪种方法可以或不可以创建墓碑?卡桑德拉是如

如图所示,为什么上部不创建墓碑? 根据datastax文档,对于每一次upsert,cassandra都认为是先删除后插入,因为插入的新时间戳覆盖了旧时间戳。旧的时间戳数据必须标记为删除,这与墓碑有关

为什么我们有相互矛盾的陈述?否则我会错过什么吗

用例: 在Cassandra中使用唯一键(uuid)插入数据,并且该数据中的某些列保持频繁更新。你推荐哪种方法

  • 在中插入具有新列值的相同数据 插入查询
  • 根据给定的uuid更新现有记录 在更新查询中使用新列值

  • 哪种方法可以或不可以创建墓碑?卡桑德拉是如何处理这两个问题的?

    正如罗斯所指出的,你可能想阅读关于这个主题的其他类似问题。但是,

    upsert/overwrite只是另一个单元格,带有名称、时间戳和值

    墓碑就像覆盖一样,只是它得到一个额外的字段,指示它已被删除,所以它不会作为有效输出返回。墓碑通常有害的原因是,它们可以积累在糟糕的数据模型中,即使人们认为数据已经消失了——而跳过墓碑获取实时数据实际上需要内存

    当您按照所述更新/升级插入时,您创建的单元将阴影(废弃)上一个单元,该单元将在压缩时删除。前一个单元格不是墓碑,即使它不再处于活动状态-只要压缩允许,它将被压缩掉并完全替换为新的、活动的、最高的时间戳值

    要记住的最重要的一点是:墓碑不一定要通过压缩来移除——它们会被保留(保留/重写)至少几秒钟,如果它们需要对SSTABLE中尚未压缩的其他单元格进行阴影/覆盖,则可能会保留很长时间。因此,墓碑会保留很长一段时间,但阴影/覆盖的单元格会在压缩它们所在的sstable后立即进行gc

    可能重复的