# 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 台のタブレットサーバが稼働していた。 ## 技術的特徴 - **タブレット**: 行範囲の動的分割単位(既定 100--200 MB)。分散と負荷分散の粒度 - **SSTable**: キーから値への永続的・順序付き不変マップ。ブロック単位(既定 64 KB)で構成 - **三階層位置特定**: Chubby → ルートタブレット → METADATA → ユーザーテーブル - **コンパクション**: マイナー(memtable → SSTable)、マージング(複数 SSTable 統合)、メジャー(全 SSTable 統合・削除エントリ除去) - **ローカリティグループ**: カラムファミリのグループ化による読み取り効率化。インメモリ宣言可能 - **ブルームフィルタ**: SSTable への不要なディスクシーク削減 - **二段階圧縮**: Bentley-McIlroy + 高速圧縮で Webtable 10:1 の圧縮率 ## 関連 - ソース: [[@2006__OSDI__Bigtable - A Distributed Storage System for Structured Data]] - エンティティ: [[Google]] / [[Jeffrey Dean]] / [[Sanjay Ghemawat]] / [[Google File System]] / [[Chubby]] - 概念: [[分散ストレージ]] ## 出典 - [[@2006__OSDI__Bigtable - A Distributed Storage System for Structured Data]]