【问题标题】:Batch Mutation In Cassandra?Cassandra中的批量突变?
【发布时间】:2013-12-25 11:12:04
【问题描述】:

我想更新 2 个 CF 中的多行。 我不在乎他们更新的顺序? 但是,如果某个 C* 节点在两者之间发生故障,是否可以保证如果一个成功了,那么最终其他人也会成功吗?

Hector BatchMutation 类使用批量更新或原子批量更新,因为它们是两个不同的东西。

【问题讨论】:

    标签: cassandra cql hector astyanax


    【解决方案1】:

    您应该在 CQL3 中使用原子批处理。这保证了整个批次成功或整个批次失败。来自CQL3 docs 的示例:

    BEGIN BATCH
      INSERT INTO users (userid, password, name) VALUES ('user2', 'ch@ngem3b', 'second user');
      UPDATE users SET password = 'ps22dhds' WHERE userid = 'user3';
      INSERT INTO users (userid, password) VALUES ('user4', 'ch@ngem3c');
      DELETE name FROM users WHERE userid = 'user1';
    APPLY BATCH;
    

    Hector BatchMutation 类使用 Thrift 操作 batch_mutate。这比 atomic_batch_mutate 弱,后者是上述的 Thrift 等价物。 batch_mutate 仅对同一键的更新是原子的(尽管可以是不同的 CF),而 atomic_batch_mutate 对所有更新都是原子的。我不认为 Hector 已经实现 atomic_batch_mutate 所以你需要转移到 CQL3 和支持 CQL3 的驱动程序,例如DataStax 的 java 驱动程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2011-10-28
      • 2017-10-19
      • 2021-11-20
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      相关资源
      最近更新 更多