gpt4 book ai didi

cassandra-2.0 - 为什么 Cassandra UPDATE 不违反写前不读规则

转载 作者:行者123 更新时间:2023-12-04 13:49:20 25 4
gpt4 key购买 nike

我对关于 Cassandra 的两个看似矛盾的陈述感到困惑

  • 写之前没有读(大概这是因为写是顺序的,而读需要扫描主键索引)
  • INSERT 和 UPDATE 具有相同的语义(在 older versionCQL manual 中说明,但大概仍被认为本质上是正确的)

  • 假设我创建了以下简单表:
    CREATE TABLE data (
    id varchar PRIMARY KEY,
    names set<text>
    );

    现在我插入一些值:
    insert into data (id, names) values ('123', {'joe', 'john'});

    现在,如果我进行更新:
    update data set names = names + {'mary'} where id = '123';

    结果如预期:
     id  | names
    -----+-------------------------
    123 | {'joe', 'john', 'mary'}

    这不是在写入之前必须进行读取的情况吗? “成本”似乎如下
  • 阅读专栏费用
  • 创建两个集合的并集的成本(此处可以忽略,但对于较大的集合可能会很明显)
  • 用key和新列数据写入数据的成本

  • 插入只是做最后一个。

    最佳答案

    在写之前不需要阅读。在内部,每个集合使用每个条目的一列存储数据——当您要求集合中的新条目时,操作在单列中完成*:如果该列已存在,它将被覆盖,否则将被创建 (InsertOrUpdate )。
    这就是为什么集合中的每个条目都可以具有自定义 ttl 和 writetime 的原因。

    *同时与 MapSet这是透明的,有一些内部技巧可以在 List 中允许多个具有相同名称的列。 .

    关于cassandra-2.0 - 为什么 Cassandra UPDATE 不违反写前不读规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908295/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com