More actions
imported>rabierre No edit summary |
imported>rabierre No edit summary |
||
| Line 1: | Line 1: | ||
__TOC__ | |||
[[pagelist(^Bigtable)]] | |||
== 구조 == | |||
테이블 -> 태블릿 -> SSTABLE -> memtable & block | |||
== 테이블 == | |||
# Key - value | |||
## row key : url(또는 데이터값의 대표, 제목등) | |||
## column family : column 종류 | |||
## 앵커 | |||
## 콘텐츠(제목?) <- value와 뭐가 다른거지? | |||
## Time Stamp | |||
## value : 해당 사이트/키와 매핑되는 구조화된 데이터값 | |||
== 태블릿 == | |||
태블릿을 모두 합병하면 테이블이 된다. | |||
태블릿은 SSTABLE들로 이루어져있다. | |||
# 태블릿의 이름은 : 마지막 키:밸류 -> 카탈로그에 매핑필요?? | |||
# 태블릿은 하나 이상의 row로 구성됨. | |||
# 태블릿은 SSTABLE로 이루어져 있다. sstable의 이름+오프셋을 리스트로 | |||
=== SPLIT === | |||
# split 허용 | |||
## 트리거 : 태블릿 크기가 200MB 이상일때 | |||
## row는 하나 이상의 태블릿에 존재할 수 있다. | |||
# 제한적 split | |||
## 같은 row내에서는 split하지 않는다. | |||
## 태블릿 내에 두개 이상의 row가 존재할 때만 split가능 | |||
# split X | |||
## 태블릿은 split되지 않는다. | |||
=== ISSUE === | |||
# 태블릿의 분할 정책 어떤것을 할까? | |||
== SSTABLE == | |||
SSTABLE은 하나의 memtable과 block의 시작주소와 오프셋들로 이루어져있다. | |||
# SSTABLE 명? | |||
# 인덱스 | |||
== 블록 == | |||
GFS 파일 | |||
# 블록은 64KB이하의 자료구조이자 GFS파일이다. | |||
# 실제 키/밸류들은 블록에 저장되어있다. | |||
== memtable == | |||
# 메모리에 할당되어있다. | |||
# 태블릿당 한개 | |||
# 쓰기밖에 안됨. | |||
# 할당된 메모리 크기가 다 차서 더이상 쓸 수 없을 때 SSTABLE로 저장한다. | |||
* issue | |||
## 메모리 크기는? | |||
== 로컬리티 그룹 == | |||
특정 컬럼 패밀리를 그룹화한것. | |||
== 커밋로그 == | |||
# 태블릿의 이름 + 쓰려는 키:밸류 | |||
## 태블릿의 이름은 태블릿의 가장 마지막 키를 이용해 만든다. | |||
## 태블릿의 이름은 매핑테이블(카탈로그)에서 짧은 이름으로 대체됨. | |||
# 커밋로그의 가장 마지막 타임스탬프와 memtable의 가장 오래된 타임스탬프와 비교하여 memtable의 타임스탬프가 더 최신이라면 로그삭제가능 | |||
== 카탈로그 == | |||
# 카탈로그는 chubby에 등록되어있다. | |||
__TOC__ | __TOC__ | ||
[[pagelist(^Bigtable)]] | [[pagelist(^Bigtable)]] | ||
| Line 56: | Line 112: | ||
# 카탈로그는 chubby에 등록되어있다. | # 카탈로그는 chubby에 등록되어있다. | ||
== B+-트리 == | == B+-트리 == | ||
루트태블릿, | 루트태블릿, 메타데이터 태블릿, 유저태블릿으로 구성됨. 일반 태블릿과 마찬가지로 SSTABLE로 이루어져있으며 write only임. | ||
# 루트태블릿 : chubby에 위치가 기록된다? <-> 마스터에 기록된다? | |||
## 메타태블릿이 분할될 때(또는 삽입될 때) 갱신됨. | |||
# key : row key? | # 메타데이터 태블릿 | ||
## 유저태블릿이 분할될 때(또는 삽입될 때) 갱신됨 | |||
# 유저태블릿 : | |||
# 저장 데이터 | |||
## key : row key? | |||
value : IP | |||
Revision as of 04:32, 10 August 2011
[[pagelist(^Bigtable)]]
구조
테이블 -> 태블릿 -> SSTABLE -> memtable & block
테이블
- Key - value
- row key : url(또는 데이터값의 대표, 제목등)
- column family : column 종류
- 앵커
- 콘텐츠(제목?) <- value와 뭐가 다른거지?
- Time Stamp
- value : 해당 사이트/키와 매핑되는 구조화된 데이터값
태블릿
태블릿을 모두 합병하면 테이블이 된다. 태블릿은 SSTABLE들로 이루어져있다.
- 태블릿의 이름은 : 마지막 키:밸류 -> 카탈로그에 매핑필요??
- 태블릿은 하나 이상의 row로 구성됨.
- 태블릿은 SSTABLE로 이루어져 있다. sstable의 이름+오프셋을 리스트로
SPLIT
- split 허용
- 트리거 : 태블릿 크기가 200MB 이상일때
- row는 하나 이상의 태블릿에 존재할 수 있다.
- 제한적 split
- 같은 row내에서는 split하지 않는다.
- 태블릿 내에 두개 이상의 row가 존재할 때만 split가능
- split X
- 태블릿은 split되지 않는다.
ISSUE
- 태블릿의 분할 정책 어떤것을 할까?
SSTABLE
SSTABLE은 하나의 memtable과 block의 시작주소와 오프셋들로 이루어져있다.
- SSTABLE 명?
- 인덱스
블록
GFS 파일
- 블록은 64KB이하의 자료구조이자 GFS파일이다.
- 실제 키/밸류들은 블록에 저장되어있다.
memtable
- 메모리에 할당되어있다.
- 태블릿당 한개
- 쓰기밖에 안됨.
- 할당된 메모리 크기가 다 차서 더이상 쓸 수 없을 때 SSTABLE로 저장한다.
- issue
- 메모리 크기는?
로컬리티 그룹
특정 컬럼 패밀리를 그룹화한것.
커밋로그
- 태블릿의 이름 + 쓰려는 키:밸류
- 태블릿의 이름은 태블릿의 가장 마지막 키를 이용해 만든다.
- 태블릿의 이름은 매핑테이블(카탈로그)에서 짧은 이름으로 대체됨.
- 커밋로그의 가장 마지막 타임스탬프와 memtable의 가장 오래된 타임스탬프와 비교하여 memtable의 타임스탬프가 더 최신이라면 로그삭제가능
카탈로그
- 카탈로그는 chubby에 등록되어있다.
[[pagelist(^Bigtable)]]
구조
테이블 -> 태블릿 -> SSTABLE -> memtable & block
테이블
- Key - value
- row key : url(또는 데이터값의 대표, 제목등)
- column family : column 종류
- 앵커
- 콘텐츠(제목?) <- value와 뭐가 다른거지?
- Time Stamp
- value : 해당 사이트/키와 매핑되는 구조화된 데이터값
태블릿
태블릿을 모두 합병하면 테이블이 된다. 태블릿은 SSTABLE들로 이루어져있다.
- 태블릿의 이름은 : 마지막 키:밸류 -> 카탈로그에 매핑필요??
- 태블릿은 하나 이상의 row로 구성됨.
- 태블릿은 SSTABLE로 이루어져 있다. sstable의 이름+오프셋을 리스트로
SPLIT
- split 허용
- 트리거 : 태블릿 크기가 200MB 이상일때
- row는 하나 이상의 태블릿에 존재할 수 있다.
- 제한적 split
- 같은 row내에서는 split하지 않는다.
- 태블릿 내에 두개 이상의 row가 존재할 때만 split가능
- split X
- 태블릿은 split되지 않는다.
ISSUE
- 태블릿의 분할 정책 어떤것을 할까?
SSTABLE
SSTABLE은 하나의 memtable과 block의 시작주소와 오프셋들로 이루어져있다.
- SSTABLE 명?
- 인덱스
블록
GFS 파일
- 블록은 64KB이하의 자료구조이자 GFS파일이다.
- 실제 키/밸류들은 블록에 저장되어있다.
memtable
- 메모리에 할당되어있다.
- 태블릿당 한개
- 쓰기밖에 안됨.
- 할당된 메모리 크기가 다 차서 더이상 쓸 수 없을 때 SSTABLE로 저장한다.
- issue
- 메모리 크기는?
로컬리티 그룹
특정 컬럼 패밀리를 그룹화한것.
커밋로그
- 태블릿의 이름 + 쓰려는 키:밸류
- 태블릿의 이름은 태블릿의 가장 마지막 키를 이용해 만든다.
- 태블릿의 이름은 매핑테이블(카탈로그)에서 짧은 이름으로 대체됨.
- 커밋로그의 가장 마지막 타임스탬프와 memtable의 가장 오래된 타임스탬프와 비교하여 memtable의 타임스탬프가 더 최신이라면 로그삭제가능
카탈로그
- 카탈로그는 chubby에 등록되어있다.
B+-트리
루트태블릿, 메타데이터 태블릿, 유저태블릿으로 구성됨. 일반 태블릿과 마찬가지로 SSTABLE로 이루어져있으며 write only임.
- 루트태블릿 : chubby에 위치가 기록된다? <-> 마스터에 기록된다?
- 메타태블릿이 분할될 때(또는 삽입될 때) 갱신됨.
- 메타데이터 태블릿
- 유저태블릿이 분할될 때(또는 삽입될 때) 갱신됨
- 유저태블릿 :
- 저장 데이터
- key : row key?
value : IP