# 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 チームが全社サービスとして運用し、プローバ、標準サーバ形状、既定バックアップ、パーティション分離を整備する
## SRE Book での位置づけ
[[@2016__OReilly__SRE Book - Chapter 2 The Production Environment at Google, from the Viewpoint of an SRE]] では、Bigtable を [[Colossus]] の上に構築されるデータベース層の一つとして位置づけ、行キー・カラムキー・タイムスタンプで索引付けされた疎で分散永続的な多次元ソート済みマップであり、結果整合性を持つクロスデータセンターレプリケーションをサポートすると説明する。同章のサンプルサービス Shakespeare では、MapReduce のバッチ処理で作成した単語 → 出現位置一覧のインデックスを Bigtable の行として書き込み、リージョンごとに Bigtable をレプリケートすることでリージョン間レイテンシを避けつつ障害耐性を確保する設計が例示される。
## ワイドカラムストアとしての位置づけ(詳説 データベース 第1章)
*詳説 データベース* 第1章は、Bigtableをワイドカラムストアの代表例(HBaseと並ぶ)として挙げ、列指向データベース(ClickHouse等)とはほとんど関連性がないと明示的に区別する。同章はBigtable論文[CHANG06]から引用したWebテーブル例を用い、逆順にしたURLで行を識別し、コンテンツとアンカーの列ファミリをタイムスタンプ付きでネストしたマップとして表現する概念的構造(図1-3)と、列ファミリごとに(行キー、タイムスタンプ、修飾子、値)の組として個別格納する物理的構造(図1-4)を示す。このレイアウトは単一キーまたは一連のキーによる取り出しに最適化されていると説明される。(Source: [[@2021__OReillyJapan__詳説 データベース - Chapter 1 基本事項の紹介と概要]] §1.3.4)
## テールレイテンシ緩和技術での利用例
[[@2013__CACM__The Tail at Scale]] は Bigtable を、tail-tolerant 技術の実測プラットフォームとして繰り返し用いる。1,000 台の Bigtable から 1,000 キーを読むベンチマークでは、10ms 遅延ヘッジリクエストにより 99.9 パーセンタイルレイテンシが 1,800ms から 74ms に短縮された(追加負荷はわずか 2%)。また Bigtable のデータがキャッシュされずファイルシステムから読み込まれるケースでの読み取りレイテンシ計測(Table 2)で、タイドリクエストが 99.9 パーセンタイルレイテンシを最大 38% 削減することを示した。Bigtable のマイクロパーティション(1 マシンあたり 20〜1,000 タブレット)は、負荷を約 5% 刻みでシェッドできる粒度として tail-tolerant な負荷分散の実例にも挙げられている。
## トランザクション API の基盤としての利用(詳説 データベース 第13章)
*詳説 データベース* 第13章は、[[Percolator]] が Bigtable を基盤としてその上に分散トランザクション API を実装するライブラリであると紹介する。Percolator はデータレコード・書き込みメタデータ・列ロックを格納するために、1回のリモートコールで読み取り変更書き込み(read-modify-write)を実行できる Bigtable の条件付き変更 API を利用しており、既存のシステムの上にトランザクション API を構築する例として位置づけられる。(Source: [[@2021__OReillyJapan__詳説 データベース - Chapter 13 分散トランザクション]] §13.7)
## HBase の起源としての参照(ウェブオペレーション第15章)
『ウェブオペレーション』第15章(2011年、[[Eric Florenzano]])は、[[Apache HBase|HBase]] を「Amazon の Dynamo とはまた違う、Google の BigTable のオープンソース実装」と紹介し、Bigtable を「Google のプロプライエタリな高分散型データベース」と位置づける。同章はBigtable自体の内部設計には立ち入らず、あくまでHBaseの設計の起源として一文で言及するにとどまる。(Source: [[@2011__OReillyJapan__ウェブオペレーション - Chapter 15 非リレーショナルデータベース]] §15.1.5, §15.2.2)
## 関連
- ソース: [[@2006__OSDI__Bigtable - A Distributed Storage System for Structured Data]] / [[@2026__SIGMOD Companion__Twenty Years of Bigtable]] / [[@2016__OReilly__SRE Book - Chapter 2 The Production Environment at Google, from the Viewpoint of an SRE]] / [[@2013__CACM__The Tail at Scale]] / [[@2021__OReillyJapan__詳説 データベース - Chapter 1 基本事項の紹介と概要]] / [[@2021__OReillyJapan__詳説 データベース - Chapter 13 分散トランザクション]] / [[@2011__OReillyJapan__ウェブオペレーション - Chapter 15 非リレーショナルデータベース]]
- エンティティ: [[Google]] / [[Jeffrey Dean]] / [[Sanjay Ghemawat]] / [[Google File System]] / [[Colossus]] / [[Chubby]] / [[Apache HBase]] / [[Percolator]]
- 概念: [[分散ストレージ]] / [[LSMツリー]] / [[データベース O&M]] / [[テールレイテンシ耐性技術]] / [[列指向OLAPデータベース]] / [[スナップショット分離とMVCC]]
## 出典
- [[@2006__OSDI__Bigtable - A Distributed Storage System for Structured Data]]
- [[@2026__SIGMOD Companion__Twenty Years of Bigtable]]
- [[@2016__OReilly__SRE Book - Chapter 2 The Production Environment at Google, from the Viewpoint of an SRE]](ストレージ階層とサンプルサービスでの利用例)
- [[@2013__CACM__The Tail at Scale]](ヘッジリクエスト・タイドリクエストの実測ベンチマーク)
- [[@2021__OReillyJapan__詳説 データベース - Chapter 1 基本事項の紹介と概要]](§1.3.4 ワイドカラムストアの代表例、Webテーブル概念構造・物理構造)
- [[@2021__OReillyJapan__詳説 データベース - Chapter 13 分散トランザクション]](§13.7 Percolator の基盤としての利用)
- [[@2011__OReillyJapan__ウェブオペレーション - Chapter 15 非リレーショナルデータベース]] §15.1.5, §15.2.2(2011年時点の実務書がHBaseの設計起源として言及)