Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Bigtable/DataModel

From ZeroWiki
Revision as of 04:19, 10 August 2011 by imported>rabierre

[[pagelist(^Bigtable)]]

구조

테이블 -> 태블릿 -> SSTABLE -> memtable & block

테이블

  1. Key - value
    1. row key : url(또는 데이터값의 대표, 제목등)
    2. column family : column 종류
    3. 앵커
    4. 콘텐츠(제목?) <- value와 뭐가 다른거지?
    5. Time Stamp
    6. value : 해당 사이트/키와 매핑되는 구조화된 데이터값

태블릿

태블릿을 모두 합병하면 테이블이 된다. 태블릿은 SSTABLE들로 이루어져있다.

  1. 태블릿의 이름은 : 마지막 키:밸류 -> 카탈로그에 매핑필요??
  2. 태블릿은 하나 이상의 row로 구성됨.
  3. 태블릿은 SSTABLE로 이루어져 있다. sstable의 이름+오프셋을 리스트로

SPLIT

  1. split 허용
    1. 트리거 : 태블릿 크기가 200MB 이상일때
    2. row는 하나 이상의 태블릿에 존재할 수 있다.
  2. 제한적 split
    1. 같은 row내에서는 split하지 않는다.
    2. 태블릿 내에 두개 이상의 row가 존재할 때만 split가능
  3. split X
    1. 태블릿은 split되지 않는다.

ISSUE

  1. 태블릿의 분할 정책 어떤것을 할까?

SSTABLE

SSTABLE은 하나의 memtable과 block의 시작주소와 오프셋들로 이루어져있다.

  1. SSTABLE 명?
  2. 인덱스

블록

GFS 파일

  1. 블록은 64KB이하의 자료구조이자 GFS파일이다.
  2. 실제 키/밸류들은 블록에 저장되어있다.

memtable

  1. 메모리에 할당되어있다.
  2. 태블릿당 한개
  3. 쓰기밖에 안됨.
  4. 할당된 메모리 크기가 다 차서 더이상 쓸 수 없을 때 SSTABLE로 저장한다.
  • issue
    1. 메모리 크기는?

로컬리티 그룹

커밋로그

  1. 태블릿의 이름 + 쓰려는 키:밸류
    1. 태블릿의 이름은 태블릿의 가장 마지막 키를 이용해 만든다.
    2. 태블릿의 이름은 매핑테이블(카탈로그)에서 짧은 이름으로 대체됨.
  2. 커밋로그의 가장 마지막 타임스탬프와 memtable의 가장 오래된 타임스탬프와 비교하여 memtable의 타임스탬프가 더 최신이라면 로그삭제가능

카탈로그

  1. 카탈로그는 chubby에 등록되어있다.

B+-트리

루트태블릿, 메타테블릿, 유저태블릿으로 구성됨. write only

  1. key : row key?
value : IP