BaikalDB根据range对数据进行分割,每个分区称为region,连续的region构成了整个数据区间。不同的region位于不同的BaikalStore实例中。在不同的机器上,当一个SQL句子涉及多个region更新时,如何增加所有更新,要么成功,要么失败,需要分布式事务。说到事务,我们先回顾一下事务的ACID特性:
lAtomicity(原子性):一项事务(transaction)中的所有操作,要么完成,要么失败,不会出现中间状态。当事务在执行过程中出现错误时,会被回滚(Rollback)到事务开始前的状态,就像这件事从未执行过一样;lConsistency(一致性):数据库在事务执行前后处于一致性状态,完整性没有被破坏;
lIsolation(隔离):数据库允许多个并发事务同时读写和修改数据,隔离可以防止多个并发事务在执行过程中因交叉执行而导致数据不一致;lDurability(持久性):事务处理后,对数据的修改是的,即使系统出现故障也不会丢失。
分布式事务是在分布式环境下实现与传统数据库事务相同的ACID功能。目前,BaikalDB已经实现了分布式事务的功能,支持与事务相关的SQL语句包括:
l BEGIN/STARTRANSACTION开始交易。
l COMMIT提交事务。
l ROLLBACK事务回滚。
l SETAUTOCOMIT设置自动提交状态=0/1。