ISBN 9784873119540

詳説 データベース : ストレージエンジンと分散データシステムの仕組み

詳説 データベース : ストレージエンジンと分散データシステムの仕組み
刊行
2021-07

概要

ストレージエンジンと分散データシステムの内部構造を原理から理解する

想定読者

データベースを業務で選定・運用・保守するバックエンドエンジニアおよび DBA

こんな人には向いていない

  • SQL の基本操作や特定 DB プロダクトの使い方を学びたい初学者(本書は利用者向けの操作入門書ではなく、内部実装層を扱う設計者・運用者向けの書籍)
  • 特定プロダクトの設定・チューニング手順を手早く参照したい人(本書はプロダクト横断の原理解説であり、個別 DB の操作ガイドとしては使えない)

この本で身につくこと

  • B-Tree と LSM-Tree の構造的差異と、各ストレージエンジンが採用するトレードオフを根拠とともに説明できる
  • コンパクション戦略やバッファ管理の動作原理を理解し、ワークロードに合ったエンジン選定の判断軸を持てる
  • 分散データベースにおけるレプリケーション・パーティショニングの仕組みと一貫性モデルの違いを体系的に説明できる
  • データベース選定時に「なぜそのエンジンか」を内部実装の差異を根拠として技術的に説明できる

ハイライト(外部からの言及)

データベース内部の一般ユーザには見えないレイヤについて深く解説。データベースの内部について深く知ることで、データベース選び、使用、保守に役立ちます。 — 出典

本書が操作入門書でなく「見えないレイヤ」を扱う点を端的に示す箇所。選定・運用の両フェーズに効くことが明示されている

別に分散システムの仕組みを知らなくても問題なかったりするものですが、いざシステム障害などが起きると これそもそもの仕組み知らんと無力じゃね?ってなったりします。(無情にもやばいバグが時々起きたりします) — 出典

分散システムの内部を知らない状態でシステム障害に直面したときの無力感を現場エンジニアの一人称で描写。「見えないレイヤを知る価値」を実体験から裏付ける角度であり、既存ハイライトの公式説明とは補完関係にある

DynamoDBは分散システムだし、時代的にも分散システムがアーキテクチャの基本となっているのでちゃんと勉強したい。エアプ卒業したい — 出典

実際のバグ体験を経た開発者が分散システムを原理から学ぶ決意を表明した箇所。「雰囲気で使う」から「理解して使う」への転換動機を示し、本書が参考文献として挙がる記事の結論に位置する角度

章立て

第1章 基本事項の紹介と概要

第I部 ストレージエンジン。後続章を理解する前提

第2章 Bツリーの基本

DB の主要データ構造の理論。書き込み増幅・空間局所性の理解の起点

第3章 ファイルフォーマット

ページレイアウト・スロット配列・スパースインデックスなど、ディスク上の物理データ配置の仕組みを解説する。第4章の B-Tree 実装を読み解く前提として構造の全体像を把握しておくと理解が深まる

第4章 Bツリーの実装

ノード分割・マージ・オーバーフロー処理など実装詳細を扱う。第2章の理論を具体的なアルゴリズムに落とし込む章で、OSS ストレージエンジンのコードを読む際の参照点になる

第5章 トランザクション処理とリカバリ

ARIES アルゴリズム / WAL の本質的解説。実装視点での ACID 保証

第6章 Bツリーの亜種

Bw-Tree / FractalTree など先進的なバリエーション

第7章 ログ構造化ストレージ

LSM Tree / Cassandra の中核データ構造。書き込み性能の理論

第8章 基本事項の紹介と概要

第II部 分散システム。後続の分散テーマすべての土台

第9章 障害検出

Failure Detector / Φ-Accrual の理論

第10章 リーダー選出

Bully / Ring / Paxos リーダー選出の比較

第11章 レプリケーションと一貫性

Quorum / Eventual / Strong / Linearizability の関係

第12章 アンチエントロピーと情報散布

Gossip Protocol / Merkle Tree。Cassandra / DynamoDB の核心

第13章 分散トランザクション

2PC / 3PC / Paxos Commit の比較

第14章 合意

Paxos / Raft / Multi-Paxos の理論。本書の到達点

関連記事 / 参考情報

学習のヒント

  • 本書はストレージエンジン編と分散システム編の二つの軸で構成されている。業務上の直近課題(例: 書き込み性能チューニング vs. 分散トランザクション設計)に近い側を先に読むと知識の定着が早い
  • 自分が日常的に使っている DB プロダクト(PostgreSQL / RocksDB / Cassandra 等)を手元に置き、各章で学んだ概念がそのプロダクトのどの設定や挙動に対応するかを確認しながら読むと理解が実体化しやすい
  • 分散システム編は一貫性・コンセンサス・レプリケーションが密結合したトピックで dense になりやすい。Martin Kleppmann 著『データ指向アプリケーションデザイン』の対応章と並走すると相互補完でき、概念の輪郭が明確になる

前提知識

  • SQL の基本操作とトランザクション(ACID)の概念
  • OS の基礎知識(ファイルシステム・ディスク I/O の仕組みの概要)
  • 基本的なデータ構造(ツリー・ハッシュテーブル)の理解

次に読む本

データ指向アプリケーションデザイン

「詳説 データベース」がストレージ内部の実装原理(B-Tree・LSM-Tree・WAL)を積み上げるのに対し、本書は分散データシステムの設計判断(レプリケーション方式・スキーマ設計・ストリーム処理)を応用者視点から体系化する。実装層の理解を設計・選定の語彙に変換したい段階で読むと両者の知識が接続しやすい

Database Internals(原著)

「詳説 データベース」の原著であり、翻訳版で習得した B-Tree・LSM-Tree・Quorum 等の概念を英語の一次資料で照合できる。アルゴリズム論文・海外技術ブログ・OSS 実装議論を読む際に翻訳語と英語術語の対応が明確になり、情報収集の幅が広がる

出版社による内容紹介

データベースとストレージエンジン内部のコンセプトについて開発者に向けて解説! データベースを選び、使用し、保守する際には、データベースの内部を理解することが必要ですが、多くの分散型データベースやツールがあるため、それぞれが何を提供しており、どう違うのかを理解することは困難です。本書は最新のデータベースとストレージエンジン内部のコンセプトについて開発者に向けて解説する書籍です。データベース内部の一般ユーザには見えないレイヤについて深く解説。データベースの内部について深く知ることで、データベース選び、使用、保守に役立ちます。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。