索引 / 001 JA
Database System Concepts(データベースシステム概論) cover

コンピュータサイエンス

コンピュータサイエンス

Database System Concepts(データベースシステム概論)

Abraham Silberschatz; Henry F. Korth; S. Sudarshan

英語原題: Database System Concepts

データベースの設計と実装を幅広く学ぶ、コンピュータサイエンス学生向けの教科書です。リレーショナルモデルとSQL、問い合わせ処理、トランザクション、並行制御、障害回復、分散データベースを扱います。序文では、基本的なデータ構造、コンピュータ構成、高水準プログラミング言語の知識を前提としています。

前提知識: 基本的なデータ構造、コンピュータ構成、高水準プログラミング言語の知識。データベースの予備知識は不要です。

難易度レベル
中級
学術レベル
学部
database systemsSQLdata modelingtransactions教科書

01 / 読書ガイド

読書ガイド

引用

Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw Hill.

章の要約

第7版は、9つの部にまとめられた印刷版26章、大学スキーマの全体を示す付録、そして著者のウェブサイトでのみ提供される6つの追加章(第27~32章)からなる。印刷版の章は約1,280ページに及ぶ。著者は、本書を学部3~4年次、または大学院1年次レベルの最初のデータベースの講義向けとし、補助教材や上級講義の導入として使える発展的な内容も含むと述べている。例の多くは、学科、教員、学生、科目を持つ大学という、一貫した例題から取られている。

第1章:序論

動機づけ、歴史、説明を兼ねた章。データベースシステムの目的、データの見え方、データベース言語と設計、データベースエンジン、アプリケーションの構成、利用者と管理者、そして短い歴史を述べる。大学の例題もここで導入される。

第2~5章:関係モデル入門、SQL入門、中級SQL、上級SQL

第1部。第2章は関係データベースの構造、スキーマ、キー、スキーマ図、関係代数を扱う。関係代数は、この版で本書の後ろの部分からこの章に移された。第3章から第5章でSQLを学ぶ。基本的な問合せ、集合演算、空値、集約、入れ子の副問合せ(第3章)、結合、ビュー、トランザクション、整合性制約、データ型、索引、認可(第4章)、プログラミング言語からのアクセス、関数と手続き、トリガ、再帰的問合せ、高度な集約(第5章)である。

第6~7章:E-Rモデルによるデータベース設計、関係データベース設計

第2部。第6章は設計の過程とエンティティ・リレーションシップ・モデルを示し、写像カーディナリティ、関係スキーマへの変換、拡張E-R機能、代替の表記法(UMLクラス図を含む)を扱う。第7章は関数従属性、分解、正規形を扱い、分解のアルゴリズムと時間的データのモデリングの節も含む。著者は、正規化はまず直観的に導入されるので、より詳しい従属性の理論は省いても差し支えないと述べている。

第8~9章:複雑なデータ型、アプリケーション開発

第3部。第8章は半構造データ(XML、JSON、RDF、SPARQL)、オブジェクト指向、テキストデータ、空間データを扱う。第9章はウェブの基礎、サーブレット、ほかのサーバ側フレームワーク、クライアント側のコードとウェブサービス、アプリケーションの構成と性能、アプリケーションのセキュリティと暗号を扱う。

第10~11章:ビッグデータ、データ分析

第4部。第10章は、ビッグデータの記憶システム、MapReduce、Hadoop と Spark、ストリームデータ、グラフデータベースを、利用者の視点から扱う。第11章はデータウェアハウス、オンライン分析処理、データマイニングを扱う。

第12~14章:物理的記憶システム、データ記憶構造、索引

第5部。記憶媒体(フラッシュメモリとRAIDを含む)、ファイルとレコードの編成、バッファ、列指向およびメインメモリ上の記憶、そして順序付き索引、B+木、ハッシュ、書込み最適化構造、ビットマップ索引、空間索引による索引付けを扱う。

第15~16章:問合せ処理、問合せ最適化

第6部。第15章は問合せコストの尺度と、選択、整列、結合のアルゴリズムを扱う。第16章は関係式の変換、統計量の推定、評価計画の選択、マテリアライズド・ビューを扱う。

第17~19章:トランザクション、同時実行制御、回復システム

第7部。第17章はトランザクション、分離、直列可能性を導入する。第18章はロック、タイムスタンプ、検証、多版の各方式とスナップショット分離を扱う。第19章はログと回復を ARIES まで扱う。序文によれば、トランザクションの概観だけを望む講義は、第17章だけを使うことができる。

第20~23章:データベースシステムのアーキテクチャ、並列・分散ストレージ、並列・分散問合せ処理、並列・分散トランザクション処理

第8部。序文はこの版で全面的に作り直されたと述べている。アーキテクチャとクラウドサービスに始まり、分割、複製、分散ファイルシステムを経て、並列・分散の問合せ処理、コミットプロトコル、合意に至る。

第24~26章:高度な索引技法、高度なアプリケーション開発、ブロックチェーンデータベース

第9部。第24章は索引に戻り(ブルームフィルタ、LSM木、ビットマップ索引、空間索引、ハッシュ)、第25章は性能チューニングとベンチマークを扱う。第26章は、データベースの観点から見たブロックチェーンを扱う新しい章である。

オンライン章(第27~32章)

形式的関係問合せ言語、高度な関係データベース設計、オブジェクトベースのデータベース、XML、情報検索、PostgreSQL がオンラインで提供される。

主要概念

第1~9章:モデル、言語、設計

  • 関係モデルと関係代数:SQLの土台となるデータモデルと形式的な演算。
  • SQL:3つの章にわたり、問合せからトリガと再帰まで教える。
  • E-Rモデリングと正規化:要求からスキーマまでの設計。
  • 半構造データ(XML、JSON、RDF/SPARQL)とウェブアプリケーション開発。

第10~26章:ビッグデータ、内部構造、分散

  • MapReduce、Hadoop、Spark、データウェアハウス、OLAP。
  • B+木とLSM木:負荷の種類に応じた索引構造。
  • 問合せ最適化:変換規則とコスト推定。
  • ACIDトランザクション、直列可能性、スナップショット分離。
  • ARIES による回復。
  • 合意とコミットのプロトコル(2相コミット、Paxos、Raft)と CAP定理。
  • ブロックチェーンデータベース。

批判的分析

長所

  • 一貫した例題。 大学のデータベースが全体を通して現れ、付録Aとウェブサイトに完全なスキーマと、それを作成して値を入れるSQL文があるので、読者は本書の問合せを実際に実行できる。
  • 意図的な形式より直観。 序文は、重要な結果は取り上げるが形式的な証明は省き、結果がなぜ成り立つかを図と例で示すと述べている。
  • モジュール化された構成。 序文は、講義が途中で止めてもよい箇所を示している(たとえば第7章の最初の正規化の部分、トランザクションについては第17章だけ)。
  • 無料の補助資料。 著者のサイトには、スライド、演習問題の解答、サンプルの表、実習問題、ブラウザ上で動くSQLツールがあり、6つのオンライン章とPostgreSQLの概説もある。
  • 現在のシステムの扱い。 ソリッドステートディスク、列指向ストア、メインメモリデータベース、ビッグデータシステム、ブロックチェーンのそれぞれが取り上げられている。

短所

  • 分量。 印刷版は9つの部で約1,280ページあり、1つの講義が扱える範囲をはるかに超える。教員も独習者も取捨選択が必要になる。
  • 理論は意図的に控えめ。 形式的な証明は研究論文や上級の教科書に任されている。第6版で詳しく印刷されていた関係論理、オブジェクトベースのデータベース、XML、情報検索は、簡略化されるか、オンライン章に移された。
  • 技術に依存する部分は古びやすい。 第9章は特定のツール(サーブレット、JSP、Django、Hibernate)を挙げ、ビッグデータの章は Hadoop と Spark を挙げているので、ツールが変わればこれらの部分は補う必要がある。

コースにおける位置づけ

Database System Concepts は、SQLと設計から内部構造、分散システムまでを扱う幅広い中心的教科書で、最初のデータベースの講義の主教材にふさわしい。Elmasri と Navathe の Fundamentals of Database Systems はこの一覧にあるもう一つの包括的な教科書で、概念モデリングにより重きを置く。両者はかなり重なっており、どちらも主教材になりうる。

Hernandez の Database Design for Mere Mortals は関係設計の平易な手法で、理論より先に設計を学びたい読者に向く。Ramakrishnan と Gehrke の Database Management Systems は本書と同じ領域の基礎的な手引きで、Coronel と Morris の Database Systems は、ビジネス志向の設計、実装、管理を対象とする。Gray と Reuter の Transaction Processing は、第17~19章の内容をさらに深く掘り下げた参考書である。

本書の使い方

必要な予備知識は多くない。序文は、基本的なデータ構造、計算機構成、そして Java、C、C++、Python のような高水準言語に慣れていることを前提としている。

1学期の進め方の例:

  • 中核: 第1章、第2~5章(関係モデルとSQL)、第6~7章(設計)。
  • 内部構造: 第12~14章(記憶と索引)、続いて第15~16章(問合せ処理)、そして第17章と第18~19章の一部(トランザクション)。
  • 任意: 応用とビッグデータには第8~11章、上級講義には第20~23章と第24~26章。

著者は実習の要素を強く勧めている。ウェブサイトから大学スキーマを用意し、掲載されている解答を見ながら演習問題に取り組み、読み進めるのと並行して実際のデータベースシステムで実習教材を動かすとよい。