본문 바로가기

HBase

HBase 소개

HBase는 NoSQL이다. 그리고 클라이언트 라이브러리, 마스터서버 하나, 리전 서버 다수 등으로 구성되며
테이블은 컬럼, 로우, 셀 등으로 구성된다.

컬럼지향 데이터베이스 VS 로우 지향 데이터베이스


HBase를 이해하려면 컬럼 지향 데이터베이스에 대해 먼저 이해하는것이 수월하다.

컬럼 지향 데이터베이스는 데이터를 컬럼 단위로 묶어 저장한다. RDBMS에서 I/O는 Row단위인 반면, 항상 모든 컬럼을 필요로 하지 않는다.

컬럼 지향 데이터베이스는 필요한 컬럼만 읽고 씀으로써 더 빠른 속도와 높은 압축률을 제공한다.

HBase와 컬럼 지향 데이터베이스의 관계


HBase는 NoSQL이다. RDBMS방식의 컬럼 지향 데이터베이스가 아니라 디스크상의 컬럼 저장 방식을 활용했음에 주목하자.

 

HBase의 구성 요소 : 테이블, 로우, 컬럼, 셀


저장 형식은 키/값의 쌍이다.({'RowKey' : {'ColumnFamily:Qualifier' : ['Val', 'TimeStamp']}}

로우는 컬럼으로 이루어지고, 이들은 차례대로 컬럼패밀리로 그룹화된다.
컬럼패밀리는 데이터를 의미적으로 또는 주제별로 분류하게 해 준다.
또한 그룹화된 데이터에 압축이나 메모리 상주같은 특정 기능을 적용하게도 해 준다.

하나 이상의 컬럼이 모이면 하나의 로우를 이루며, 이 로우는 로우 키라는 유일한 주소를 가진다.
컬럼은 여러개의 버전을 가질 수 있는데, 버전의 값은 각각 별도의 셀에 저장된다.
모든 컬럼값(셀)은 타임스탬프를 갖는데, 이를 통해 최근의 값을 먼저 읽을 수 있다.

로우가 다수 모이면 테이블을 이루고, 다시 테이블은 여러개가 될 수 있다.

HBase의 구성요소 : 클라이언트 라이브러리, 마스터서버, 리전서버


마스터서버는 리전서버간에 리전의 부하분산을 처리하고, 리전서버에 리전을 할당하는 일을 담당한다.  
이를 위해 아파치 주키퍼를 사용한다.
  • 리전서버는 실제로 읽고 쓰는 작업이 이뤄지는 서버이다. 작업량의 변화에 맞추어 시스템이 운용되는동안 추가하거나 제거할 수 있다.

HBase는 디스크상의 컬럼 저장 형식을 갖는다. 따라서 쿼리를 할 때 필요한 컬럼을 더 빨리 색인할 수 있고(컬럼 패밀리들은 같은 디스크에 저장된다.), Null을 저장하기 위해 따로 공간을 필요로 하지 않는다(그저 컬럼을 생략하면 된다).
HBase에 저장하는 셀은 타임스탬프를 갖는다. 따라서 최근의 값을 색인할 가능성이 높다는 가정 하에 효율적이다.

'HBase완벽가이드'를 읽으며 일부를 발췌, 재가공한 내용입니다.
혹시 오개념이 기술되어있다거나, 부족한 부분 있다면 피드백 부탁드립니다.
읽어주셔서 감사합니다.

참고 및 발췌


라스 조지,HBase 완벽가이드, 이진석 옮김 ,O'Reilly(2013), 1장

Figure 1-1 : 개발자, DBA가 함께 만들어가는 구루비 지식창고, HBase 완벽 가이드

CyberImaginationBlog, HBase 개념 정리