# 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]]