Search

HBase

컬럼기반의 NoSQL 데이터베이스인 HBase는 하둡을 기반으로 하며, 구글 BigTable 이후에 모델링 된 오픈소스이다.
Column family로 구성된 스키마 없는 데이터베이스로서, join, index가 없다. 비정형 혹은 반정형 대량 데이터에 대해 Random access 및 강력한 일관성을 제공한다.
테이블은 n개의 컬럼 패밀리를 가질 수 있으며, 하나의 row는 유일한 인덱스인 rowkey와 컬럼 패밀리로 구성된다.
Table
다중 Row로 구성된 집합이다. 테이블 생성 시 Column을 지정해주는 것이 아니라 Column Family만 지정한다.
Row
RowKey와 Column으로 구성되며, RowKey를 기준으로 알파벳 오름차순으로 정렬되어 저장되기 때문에 RowKey 설계가 매우 중요하다.
HBase 데이터는 리전 서버에 저장이 되는데, 같은 리전서버에 있는 것과 다른 리전서버에 있는 데이터를 불러오는 경우 속도차이가 날 수 있어 좋은 RowKey 설계가 필요하다.
Row Key
Row를 구분하기 위한 구분자로 RDB에서의 primary key와 비슷한 개념을 가진다.
Column Famaily
물리적으로 모든 Column Family단위로 파일 시스템에 저장이 되는데 이 때문에 사실상 Table에 Column Family가 많아지면 서로 다른 Table에 저장하는 것과 같은 성능이 나타날 수 있다.
Column Qualifier
HBase에서의 Column Qualifier은 Table 생성시 지정하지 않으며 Table 생성시 지정한 [Column Family]:[Column Qualifier]형식과 같이 :으로 구분하여 사용된다. Column Family와의 구분자가 : 이기 때문에 Column Qualifier에는 :이 들어가면 안된다.
Column
Column Famaily와 Column Qualifler이 합쳐진 것으로 :으로 구분한다.
Cell
Row Key, Column, Version이 명시된 튜플이다.
Version
Timestamp를 이용하여 최근에 수정된 값들을 저장한다. 기본 설정은 3개이다.
Timestamp
주어진 값의 버전 식별자로 값과 나란히 기록되며 데이터가 기록될 때의 RegionSever의 시간을 가짐. Version옵션을 이용하여 각기 다른 Timestamp의 값을 한 row에 저장하는 것이 가능하다.
HBase는 create, get, put, scan 명령을 사용하여 데이터를 관리한다.
create: 데이터베이스 생성
put: 데이터 기록
get: 데이터 읽음
scan: 여러 행의 데이터를 읽음
RDB and HBase table