# Bigtable
## 概要
[[Google]] が設計・実装した[[分散ストレージ]]システムであり、ペタバイト規模の構造化データを数千台のコモディティサーバ上で管理する。データモデルは `(row:string, column:string, time:int64) → string` という多次元疎ソート済みマップであり、リレーショナルモデルを採用しない。クライアントはカラムファミリ、ローカリティグループ、タイムスタンプなどのスキーマパラメータを通じてデータレイアウトとアクセス特性を制御する。
テーブルは行範囲ごとにタブレットに動的分割され、タブレットサーバが読み書きを処理する。書き込みは LSM-Tree 型のパス(コミットログ → memtable → SSTable)で永続化され、[[Google File System]] 上に保存される。マスタ選出やタブレットサーバ管理には [[Chubby]] 分散ロックサービスを利用する。
2006 年 8 月時点で 60 以上の Google プロダクト(Google Analytics、Google Earth、Personalized Search など)が本番利用し、388 クラスタ・約 24,500 台のタブレットサーバが稼働していた。
2026 年の経験論文 [[@2026__SIGMOD Companion__Twenty Years of Bigtable]] では、Bigtable が 20 年後も Google 内部の主要データベースシステムとして稼働し、10 EB のデータ、ピーク 70 億 QPS、単一テーブル 1.6 千兆行超、単一テーブル 1 EB 超、単一クラスタ 2.5 億 QPS 超を扱うと報告された。中核アーキテクチャは維持されつつ、レプリケーション、SQL、CDC、カウンタ/CRDT、マテリアライズドビュー、外部コンパクション、行キャッシュ、オートサイジングが追加されている。
## 技術的特徴
- **タブレット**: 行範囲の動的分割単位(既定 100--200 MB)。分散と負荷分散の粒度
- **SSTable**: キーから値への永続的・順序付き不変マップ。ブロック単位(既定 64 KB)で構成
- **三階層位置特定**: Chubby → ルートタブレット → METADATA → ユーザーテーブル
- **コンパクション**: マイナー(memtable → SSTable)、マージング(複数 SSTable 統合)、メジャー(全 SSTable 統合・削除エントリ除去)
- **ローカリティグループ**: カラムファミリのグループ化による読み取り効率化。インメモリ宣言可能
- **ブルームフィルタ**: SSTable への不要なディスクシーク削減
- **二段階圧縮**: Bentley-McIlroy + 高速圧縮で Webtable 10:1 の圧縮率
- **レプリケーションウォーターマーク**: レプリカ・行範囲・論理時刻ごとに結果整合性の進行を追跡する仕組み
- **データベース内処理**: SQL、CDC、カウンタ/CRDT、マテリアライズドビューにより、従来外部処理基盤に逃がしていた分析・派生データ生成を一部内蔵する
- **サービス運用モデル**: 2006 年半ば以降、Bigtable SRE チームが全社サービスとして運用し、プローバ、標準サーバ形状、既定バックアップ、パーティション分離を整備する
## 関連
- ソース: [[@2006__OSDI__Bigtable - A Distributed Storage System for Structured Data]] / [[@2026__SIGMOD Companion__Twenty Years of Bigtable]]
- エンティティ: [[Google]] / [[Jeffrey Dean]] / [[Sanjay Ghemawat]] / [[Google File System]] / [[Chubby]]
- 概念: [[分散ストレージ]] / [[LSMツリー]] / [[データベース O&M]]
## 出典
- [[@2006__OSDI__Bigtable - A Distributed Storage System for Structured Data]]
- [[@2026__SIGMOD Companion__Twenty Years of Bigtable]]