由于 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

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

最新更新