java - 由于 Cassandra 没有事务并且所有语句都是原子的,因此如果需要,如何模拟回滚?

标签 java cassandra

如果我有两个不同的表(可能代表两个不同的查询)并且我需要使它们保持同步,如果我更新第一个表中的值,然后在更新第二个表时发生错误,我将如何回滚第一个表的更新?

示例:

 CREATE TABLE IF NOT EXISTS sample.hotels (
  id UUID,
  name varchar,
  address varchar,
  state varchar,
  zip varchar,
  primary key((id), name)
 );

 CREATE TABLE IF NOT EXISTS sample.hotels_by_letter (
  first_letter varchar,
  hotel_name varchar,
  hotel_id UUID,
  address varchar,
  state varchar,
  zip varchar,
  primary key((first_letter), hotel_name, hotel_id)
 );

最佳答案

Cassandra 确实支持此类用途的批处理语句:http://docs.datastax.com/en/cql/3.1/cql/cql_reference/batch_r.html

这将保证批处理中的所有语句要么全部成功,要么全部失败。除此之外,无法回滚事务。

关于java - 由于 Cassandra 没有事务并且所有语句都是原子的,因此如果需要,如何模拟回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405170/

相关文章:

java - 计算多个表中的实体数量

java - Dagger 2 的可交换模块

Cassandra 作为分布式缓存数据存储

hadoop - 在映射器中创建和映射键值是不好的做法?

node.js - 从 NodeJS 使用 UUID 查询 Cassandra

java - 将 JComboBox 连接到 JTextField

java - 当参数是构造函数参数声明类型的子类时,反射找不到构造函数

Cassandra CQL3 切片查询问题 - 如何切片

java - 从不同类的返回值检索对象时出现编译时错误。

node.js - 哪种技术可以与Cassandra以及NodeJS连接?