Hbase Data Model에 대해

No Image

Hbase Data Model에 대해

  • Hbase는 Data를 Table 형태로 저장한다.

Tables

Row

  • 하나의 Row Key와 여러개의 Column으로 구성되어 있다.
  • Row들은 이름순으로 정렬되어 저장된다.

Column

  • Column은 Column FamilyColumn Qualifier로 구성되어 있고 구분자는 :를 사용한다.

Column Families

  • 좋은 Disk I/O을 위해 여러 Column들을 물리적으로 가깝게 저장한다.
  • 각각의 Column Family는 Storage 관련 설정파일을 가지고 있다.
    • 메모리에 Cache Option
    • 압축 Option
    • Row Key를 인코딩 Option
  • 테이블내의 각각의 Row는 같은 Column Families를 가지고 있다.

Column Qualifiers

  • Data에 추가적으로 Index를 하기 위해 Column Family에 추가한다.
  • 테이블이 생성될때 Column Family가 고정적이더라도
    • Column Qualifiers는 유동적으로 다룰 수 있다.

Cell

  • Row
  • Column Family, Qualifier
  • Value
  • TimeStamp로 이루어져있다.

Timestamp

  • value와 함께 같이 작성된다.
  • 기본적으로 RegionServer의 데이터가 추가된 시간을 의미한다.
  • 설정으로 타임스탬프에 쓰여질 값을 다르게 할 수 있다.

Example

논리적인 모습

  • 중간중간 빈 공간을 볼 수 있다.
  • 하지만 실제로 저장할때에는 빈 공간은 생기지 않는다.

Multi-dimensional Map

{
  "com.cnn.www": {
    contents: {
      t6: contents:html: "<html>..."
      t5: contents:html: "<html>..."
      t3: contents:html: "<html>..."
    }
    anchor: {
      t9: anchor:cnnsi.com = "CNN"
      t8: anchor:my.look.ca = "CNN.com"
    }
    people: {}
  }
  "com.example.www": {
    contents: {
      t5: contents:html: "<html>..."
    }
    anchor: {}
    people: {
      t5: people:author: "John Doe"
    }
  }
}

물리적으론 어떻게 저장할까?

  • column Family로 저장한다.

column Family : anchor

column Family : contents

Reference

0%