cassandra的事务(1.x,2.x)
?
1.x2.0行级操作原子性BATCH事务,即一个Batch原子性执行多个DML操作。当一个请求需要操作多个table的时候,它非常有用。添加轻量级事务,避免race condition问题。举例:两个人同时提交相同用户名的注册请求,确认not exist 后,同时提交注册请求。这种情况因为是相同的rowkey(用户名),所以cassandra会将后后提交的人信息会覆盖前者。cassandra通过paxos解决该问题。
BEGIN BATCH
? INSERT INTO?...
? UPDATE?....
? INSERT?...
? DELETE?...
? INSERT .....
APPLY BATCH;
# 轻量级事务通过IF子句实现
INSERT INTO USERS (login, email, name, login_count)
values ('jbellis', 'jbellis@datastax.com', 'Jonathan Ellis', 1)
IF NOT EXISTS
?