HBase事务支持Omid
-
Omid 项目来自 Yahoo,用于给使用快照隔离的键值存储提供事务支持。 Omid 是 Optimistically transactional Management in Datasources (数据源事务管理优化)的缩写。HBase 是目前唯一支持的数据库, 但适配其他提供一单元多版本的数据也会很简单。
OMID 包含三个组件:The Transaction Status Oracle (TSO),指定事务时间戳和解决事务之间的冲突。The commit table,保存一个开始时间戳到提交时间戳的映射。Shadow cells,于数据单元一同写入数据库,允许客户端解决未咨询 commit table 即读取的问题。
Trafodion是一个分布式数据库,操作分布在集群的不同节点执行,比如两条写操作可能由两个不同的ESP在不同节点运行,所以Trafodion还需要处理分布式事务。
Trafodion的事务处理器将并发控制的职责分成两部分,TM(Transaction Manager)负责整个事务的分布式并发控制,保证事务本身的一致性;RM(Resource Manager)负责数据访问的并发控制,保证数据的一致性。
具体来说,RM采用前面所说的MVCC技术,提供Snapshot Isolation级别的数据一致性。
在Trafodion中,每个HBase的Region都是一个RM。一个事务很可能会在多个Region上操作,比如事务需要更新两行数据,而它们分别属于两个不同的Region。在这种情况下,一个事务会有多个RM参与。而HBase的Region很可能运行在不同的物理节点上,因此这是一种分布式事务。分布式事务由TM保证整个事务的一致性。
项目地址: https://github.com/domino-succ/domino