Google Cloud Bigtable은 페타바이트 규모의 데이터를 밀리초 이하 지연으로 처리하는 완전 관리형 NoSQL wide-column 데이터베이스다. HBase 호환 API를 제공한다.
아키텍처
클라이언트
↓
Front-end Server (로드 밸런싱)
↓
Tablet Server (데이터 서빙)
↓
Colossus (Google 분산 파일 시스템)
Row Key → 사전순 정렬 저장
Column Family → 관련 컬럼 그룹
데이터 모델
테이블: user-events
Row Key: user#12345#20240115T143000
Column Family: meta
- meta:event_type = "purchase"
- meta:ip = "192.168.1.1"
Column Family: payload
- payload:item_id = "PROD-789"
- payload:amount = "29900"
python
from google.cloud import bigtable
from google.cloud.bigtable import column_family
client = bigtable.Client(project='my-project', admin=True)
instance = client.instance('my-instance')
table = instance.table('user-events')
# 행 쓰기
row_key = b'user#12345#20240115T143000'
row = table.direct_row(row_key)
row.set_cell('meta', b'event_type', b'purchase')
row.set_cell('payload', b'amount', b'29900')
row.commit()
# 범위 스캔
for row in table.read_rows(start_key=b'user#12345#', end_key=b'user#12346#'):
print(row.row_key, row.cells)
Bigtable vs 다른 NoSQL
| 항목 | Bigtable | DynamoDB | Cassandra |
|---|
| 제공사 | GCP | AWS | 오픈소스 |
| 모델 | Wide-column | Key-Value | Wide-column |
| 일관성 | 강한 일관성 | 최종 일관성 | 조정 가능 |
| 적합 사례 | 시계열, IoT | 범용 | 멀티 리전 |
관련 문서