HBASE 에서 제공하는 ACID 개념과 특징 들에 대해서 설명한다.
- Atomicity - 하나의 operation 은 전부 성공 혹은 전부 실패이다.
- Consistency - 모든 action 들은 테이블의 상태가 하나의 유효한 상태에서 다른 상태로 변하게 한다.
- Isolation - 하나의 operation 은 동시에 실행되는 transaction 들과는 완벽히 독립적으로 수행된다.
- Durability - update 가 성공했으면, 이 update 는 유실되지 않는다.
- Visibility - 업데이트에 수반된 read operation 은 update 되는 것을 볼 수 있다.
HBASE 에서 보장하는 ACID
- Atomicity
- 하나의 row 에 행해지는 변경사항은 모두 성공 혹은 실패로 끝이 난다.
- 하나의 row 에 여러가지 column 이 있어도 이러한 사항은 적용된다.
- 여러개의 row 에 대해서 수행되는 변경사항은 이러한 사항이 보장 되지 않는다.
- checkAndPut API 는 atomic 하게 수행된다.
- 변경사항들의 순서는 서로 간섭을 받지 않는다.
- 에를 들어서 a=1, b=1,c=1 의 변경사항과 a=2,b=2,c=2 의 변경사항이 섞이지 않는다. 둘 중에 하나만 선택된다.
- Consistency and Isolation
- access API 를 통해서 얻은 모든 row 들은 테이블의 특정 시점의 모든 데이터를 완벽하게 나타낸다.
- 이러한 사항이 여러개의 column family 에 대해서도 같이 적용된다.
- Consistency of Scans
- scan 은 table 관점에서 consistent 하지 않다, 즉, scan 은 snapshot isolation 을 나타내지는 않는다.
- scan 으로 얻는 row 는 consistent view 를 갖는다.
- scan 은 항상 scan 이 시작할 시점의 모든 데이터를 나타내야 한다.
- scanner 의 생성시점 전에 쓰여진 데이터는 scan 할 경우 나타나야 한다.
- scan 하기 전에 쓰여진 데이터들은 모두 포함한다.
- Visibility
- client 가 특정 변경사항에 대해서 성공 메시지를 받았다면, 이 변경사항은 즉시 client 와 다른 특정 client 들에서도 보여져야 한다.
- 하나의 row 는 time-travel 성질을 갖지 않아야 한다. 예를 들어, 하나의 row 의 cell 이 incrementColumnValue API 를 통해서 변경된다면, client 는 이 어떤 cell 에 대해서도 감소된 값을 볼수 있으면 안된다.
- read operation 으로 얻는 cell 은 durably store 되어야 한다.
- Durability
- 보이는 데이터는 durable 데이터 이다, 즉 읽기는 디스크에 쓰여진 데이터만 할 수 있다.
- operation 이 성공했을 경우 durable 하다.
- operation 이 실패한 경우 durable 하지 않다.
- Tunability
- 가시성은 time travel 이나 stale read 를 위해서 조율할 수 있다.
- Durability 는 오직 주기적으로 데이터를 디스크에 flush 하기 위해서 조율할 수 있다.
참고 URL - https://hbase.apache.org/acid-semantics.html
'Programming > HBase' 카테고리의 다른 글
HBase 에서 region 수를 작게 해야 하는 이유 (0) | 2018.08.06 |
---|---|
HBase rolling restart (0) | 2016.12.01 |