Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bigtable論文から学ぶシンプルなデザイン

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for katayan katayan
February 04, 2026

 Bigtable論文から学ぶシンプルなデザイン

Avatar for katayan

katayan

February 04, 2026
Tweet

More Decks by katayan

Other Decks in Technology

Transcript

  1. かたやん 株式会社AJA DSP Division • Golang / GoogleCloud / Kubernetes

    • 24新卒バックエンドエンジニア • ダイレクト広告 daisuke0x17 wwktyn Profile 2
  2. Googleが抱えていた課題 • 商用 DB の限界 ◦ コストとスケーラビリティ 4 • 爆発的なデータ量

    ◦ Webインデックス ◦ 衛星画像 • 多様なワークロード ◦ バッチ処理(スループット) ◦ リアルタイム配信(低レイテンシ) → わいらが作るやで💪
  3. 5

  4. Bigtable 誕生 • Not a RDB • 分散ストレージ • 疎で分散された、永続的な多次元ソート済みマップ

    ◦ Sparse, Distributed, Persistent, Multi-dimensional Sorted Map → どういうこと🤔 6
  5. データモデル構造 • Row Key ◦ 任意の文字列 ◦ 行単位のアクセスはAtomic • Column

    Key ◦ “family: qualifier” の形式 ◦ family: 事前定義 ◦ qualifier: 動的に追加可能 • Timestamp ◦ バージョン管理に利用 → 多次元マップ 8
  6. • 辞書順ソート ◦ データは RowKey の辞書順に保存 • 局所性 ◦ 関連するデータが物理的に近くに保存

    • Tablet ◦ 行の範囲ごとにデータを分割した単位 • 分散の単位 ◦ Tablet が分散と負荷分散の基本単位 → 疎で分散された、多次元ソート済みマップ RowとTablet 9
  7. • Column Family ◦ 列の集合 ◦ アクセス制御や圧縮の単位 • タイムスタンプ ◦

    各セルは複数のバージョンを持てる ◦ 64bit 整数 • ガベージコレクション ◦ 古いバージョンを自動的に削除する設定が可能 Column Familyとタイムスタンプ 10
  8. アーキテクチャの構成要素 13 • GFS(Google File System) ◦ ログファイルとデータファイルの保存に使用 • Chubby(分散ロックサービス)

    ◦ Master の選出 ◦ Tablet Server の生存確認 ◦ スキーマ情報の保存 • SSTable(Google SSTable file format) ◦ 内部で使用される Immutable な ファイルフォーマット 疎で分散された、永続的な多次元ソート済みマップ
  9. クラスタの全体像 14 • Master Server ◦ 1台のみ ◦ Tablet の割り当て、負荷分散を担当

    ◦ データは扱わない • Tablet Server ◦ 多数存在 ◦ データの読み書きを担当 • Client ◦ データの読み書きは Master を経由せず 直接 Tablet Server と通信
  10. 復習:Tablet とは 16 データは Row Key の範囲ごとに「Tablet」という単位で分割される • 1つの Tablet

    = 100〜200MB 程度 • 各 Tablet は1台の Tablet Server が担当 • データ量が増えると自動で分割(Split)
  11. 3層の階層構造 17 問題:数千〜数万の Tablet があるとき、どうやって目的の Tablet を見つける? → 3 階層で管理

    • Root Tablet:METADATA Tablet の場所を保存(目次) ◦ ※ 絶対に分割されない • METADATA:User Tablet の場所を保存(索引) • User Tablet:実データ
  12. 読み込みの仕組み 18 Client は最大3回の問い合わせでデータに到達 1. Chubby に聞く→ Root Tablet の場所を取得

    2. Root Tablet に聞く → 該当範囲の METADATA Tablet の場所を取得 3. METADATA Tablet に聞く → 目的の User Tablet の場所を取得 4. User Tablet に直接アクセス → データ取得 ※ 結果はキャッシュされ、次回以降は ④ のみ
  13. Appendix:Compaction 20 • Minor Compaction ◦ Memtable を SSTable に変換して保存

    • Merging Compaction ◦ 複数の SSTable と Memtable をマージ • Major Compaction ◦ 全 SSTable を1つに統合 ◦ 削除済みデータを物理的に消去 ◦ リソース回収
  14. まとめ 22 • Simple designs are valuable ◦ 単一行のみアトミック(複雑なトランザクションなし) ◦

    Master はメタデータ管理のみ(データパスから除外) ◦ SSTable は Immutable(並行制御がシンプルに) ◦ 階層は常に3層(探索コストが予測可能) 参考:https://cloud.google.com/blog/ja/products/gcp/google-technology-through-published-papers-part3 Chang, Fay, et al. "Bigtable: A distributed storage system for structured data." ACM Transactions on Computer Systems (TOCS) 26.2 (2008): 1-26.