빅테이블(Bigtable)은 구글(Google)이 개발한 분산형 데이터 스토리지 시스템으로, 구조화된 데이터를 대규모로 관리하기 위해 설계되었다. 2004년에 개발이 시작되어 2005년 2월부터 구글 내부에서 사용되기 시작했으며, 2015년 5월 6일에는 구글 클라우드 플랫폼(Google Cloud Platform)의 공개 서비스인 Cloud Bigtable으로 출시되었다.
개요 및 분류
빅테이블은 관계형 데이터베이스(RDBMS)가 아닌, 와이드 컬럼(wide-column) 저장소 및 키-값(Key-Value) NoSQL 데이터베이스로 분류된다. 이는 희소(sparse)하고, 분산된, 다차원 정렬 맵(distributed multi-dimensional sorted map)의 형태로 데이터를 저장한다. 즉, 두 개의 임의 문자열 값(로우 키와 컬럼 키)과 타임스탬프를 조합하여 연관된 임의의 바이트 배열에 매핑하는 3차원 매핑 구조를 가진다.
기술적 구조
빅테이블은 다음과 같은 구글의 기술들을 기반으로 구축되었다:
- 구글 파일 시스템(Colossus/GFS): 데이터의 물리적 저장 계층
- Chubby 락 서비스: 분산 락 및 조정 서비스
- SSTable(로그 구조 스토리지): 데이터의 효율적인 저장을 위한 포맷 (LevelDB와 유사)
데이터는 여러 개의 태블릿(tablet)이라는 단위로 분할되어 저장되며, 각 태블릿은 수백 MB에서 수 GB 크기의 테이블 세그먼트이다. 수천에서 수십만 개의 태블릿 샤드가 수백에서 수천 대의 서버에 분산되어 서비스된다. 데이터 압축에는 BMDiff 알고리즘과 Zippy 압축 알고리즘(오픈소스로 공개된 Snappy와 동일)이 사용된다.
주요 특징
- 확장성: 수백에서 수천 대의 일반 서버에 걸쳐 페타바이트(PB) 단위의 데이터를 저장할 수 있도록 설계되었다. 2024년 4월 기준으로 빅테이블은 10엑사바이트(Exabyte) 이상의 데이터를 관리하고 초당 70억 건 이상의 요청을 처리한다.
- 지연 시간: 밀리초(ms) 미만의 지연 시간을 제공한다.
- 호환성: Apache HBase 및 Apache Cassandra와 호환되는 API를 제공한다.
- 버전 관리: 각 셀은 타임스탬프를 기반으로 여러 버전의 데이터를 저장할 수 있으며, 오래된 데이터의 가비지 컬렉션도 지원한다.
활용 분야
구글 내부에서 빅테테이블은 다음과 같은 다양한 서비스에 사용된다:
- 웹 색인(web indexing)
- 구글 지도(Google Maps)
- 구글 어스(Google Earth)
- 유튜브(YouTube) - 썸네일 저장
- 지메일(Gmail)
- 구글 애널리틱스(Google Analytics)
- 구글 도서 검색(Google Books Search)
- 블로거닷컴(Blogger.com)
영향 및 오픈소스
빅테이블은 NoSQL 데이터베이스 분야에 큰 영향을 미쳤다. Apache HBase와 Apache Cassandra는 빅테이블을 모델로 하여 개발된 대표적인 오픈소스 프로젝트들이다. 빅테이블의 설계와 구현에 관한 상세한 내용은 2006년 USENIX OSDI 학회에서 발표된 논문 "Bigtable: A Distributed Storage System for Structured Data"(Fay Chang, Jeffrey Dean 등)에 기술되어 있다.
라이선스 및 플랫폼
빅테이블은 구글의 사유(proprietary) 소프트웨어이며, 구글 클라우드 플랫폼을 통해 서비스 형태로 제공된다. 핵심 엔진은 C++로 작성되었으며, 자바(Java), 파이썬(Python), 고(Go), 루비(Ruby) 등 다양한 언어를 지원한다.