HBase的ACID http://hbase.apache.org/acid-semantics.html

来源:互联网 发布:尤克里里 调音软件 编辑:程序博客网 时间:2024/06/07 17:46

HBase的ACID
HBase不是一个ACID完整的数据库,然而HBase还是保证很多ACID的特性
1.ACID的定义:
原子性,一个操作是原子的则这个操作或者全部完成,或者不完成。
一致性,所有对表的操作都会使表从一个状态变成另一个状态。
隔离性,并发操作都是互不影响的。
持久性,任何在客户端显示‘操作成功’的操作说明数据肯定不会丢失。

另外HBase还有一个特性就是,如果一个更新操作被提交了,那么所有后续的读操作都是看到这个更新操作的影响。

2.HBase对ACID的支持:
2.1对原子性的支持
所有的改变的操作在一个行级内生效,所有的put操作会整个成功或者整个不成功。如果一次对多行进行操作,那么HBase将会返回一个各个行执行结果的列表。另外,对于一行来说,比如一个操作是“a=1,b=1,c=1”,另一个操作是“a=2,b=2,c=2”,那么这行的结果会是“a=1,b=1,c=1”或是“a=2,b=2,c=2”而绝对不会是像“a=1,b=2,c=1”这样的结果。
2.2对一致性和隔离性的支持
对一个整行的操作1、2、3、4、5,这个操作的结果只会是操作1到操作5之间的一个。
对于scan操作,一个scan操作总会反映这个scan操作开始的时候的时间点的数据展示,
例如,一个客户端A写数据X,任何客户端B的scan操作都会展示X,一个scan操作必须反映所有优先于这个scan操作的commit,也就是和关系数据库的read committed隔离级别一样。
2.3对持久性的支持
所有可见的数据都是持久化的数据,也就是说,一个读操作永远不会返回没有在持久在硬盘的数据。所有返回‘操作成功’的操作都是会将数据持久化的,所有返回‘操作失败’的操作都不会让数据持久化。
2.4其他特性
当一个客户端收到‘操作成功’的信号时,这个成功的状态也会被其他客户端知晓。如果一系列的对一行的操作发生时,任何并发的读操作会返回这一系列操作之一的状态。

0 0
原创粉丝点击