More actions
[[pagelist(^Bigtable)]]
구조
테이블 -> 태블릿 -> SSTABLE -> memtable & block
테이블
- Key - value
- row key : url(또는 데이터값의 대표, 제목등)
- column family : column 종류
- 앵커
- 콘텐츠(제목?) <- value와 뭐가 다른거지?
- Time Stamp
- value : 해당 사이트/키와 매핑되는 구조화된 데이터값
태블릿
태블릿을 모두 합병하면 테이블이 된다. 태블릿은 SSTABLE들로 이루어져있다.
- 태블릿의 이름은 : 마지막 키:밸류 -> 카탈로그에 매핑필요??
- 태블릿은 하나 이상의 row로 구성됨.
- 태블릿은 SSTABLE로 이루어져 있다. sstable의 이름+오프셋을 리스트로
ISSUE
- 태블릿의 분할을 하지 않는다면 하나의 row는 하나의 태블릿에만 존재한다.
SPLIT
- 트리거 : 태블릿 크기가 200MB 이상일때
SSTABLE
SSTABLE은 하나의 memtable과 block의 시작주소와 오프셋들로 이루어져있다.
- SSTABLE 명?
- 인덱스
블록
GFS 파일
- 블록은 64KB이하의 자료구조이다.
- 블록은 항상 64kb이어야 할 필요는 없다.
- 실제 키/밸류들은 블록에 저장되어있다.
memtable
- 메모리에 할당되어있다.
- 태블릿당 한개
- 쓰기밖에 안됨.
- 할당된 메모리 크기가 다 차서 더이상 쓸 수 없을 때 SSTABLE로 저장한다.
- issue
- 메모리 크기는?
로컬리티 그룹
셀
커밋로그
- 태블릿의 이름 + 쓰려는 키:밸류
- 태블릿의 이름은 태블릿의 가장 마지막 키를 이용해 만든다.
- 태블릿의 이름은 매핑테이블(카탈로그)에서 짧은 이름으로 대체됨.
- 커밋로그의 가장 마지막 타임스탬프와 memtable의 가장 오래된 타임스탬프와 비교하여 memtable의 타임스탬프가 더 최신이라면 로그삭제가능
카탈로그
- 카탈로그는 chubby에 등록되어있다.
B+-트리
루트태블릿, 메타테블릿, 유저태블릿으로 구성됨. write only
- key : row key?
value : IP