본문 바로가기

Programming/HBase

HBase ACID Reference

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