01 / 読書ガイド
読書ガイド
引用
Ramakrishnan, R., & Gehrke, J. (2002). Database Management Systems (3rd ed.). McGraw-Hill.
章の要約
第3版は七つの部に29章があり、全体で約1,100ページである。出版社はモジュール式の構成を強調している。システム系の各部は概観の章(第8、12、16章)で始まり、各部の詳細な章は省略してもよい。そのため、同じ本をアプリケーション重視の授業にも、システム重視の授業にも、その折衷の授業にも使える。出版社の章の関係図では、各部は、基礎(1–5)、アプリケーション(6–7)、三つのシステムの部(8–11、12–15、16–18)、第二のアプリケーションの部(19–21)、発展的話題(22–29)である。以下の見出しは、各グループの主題を示す。
第I部、第1–5章:基礎
第1章「データベースシステム入門」は、通常のファイルとの対比(データの受け渡し、同時アクセス、障害回復、セキュリティ)によってDBMSの必要性を説明する。第2章「データベース設計入門」は、実体関連モデルによる概念設計を扱い、キー制約、参加制約、ISA制約を含む。第3章「関係モデル」は、関係をインスタンスとスキーマで定義し、整合性制約を導入する。第4章「関係代数と関係論理」は形式的な問合せ言語を示し、代数は問合せ計画の内部で使われる表現とされる。第5章「SQL:問合せ、制約、トリガ」は、水兵と予約を例にSQLを説明し、NULL値、整合性制約、トリガを含む。
第II部、第6–7章:アプリケーション
第6章「データベースアプリケーション開発」は、埋込みSQLと動的SQL、カーソル、JDBC、SQLJ、ストアドプロシージャを扱う。第7章「インターネットアプリケーション」は、URIとHTTP、HTMLとXML、3層アーキテクチャ、フォーム、サーブレット、JavaServer Pages、Webアプリケーションでの状態の保持を扱う。
第III部、第8–11章:ストレージと索引
第8章「ストレージと索引の概観」は、データエントリを導入し、索引をクラスタ化・非クラスタ化、主・副、密・疎に分類する。第9章「データの格納:ディスクとファイル」は、ディスクのコストとバッファマネージャを扱う。第10章「木構造索引」と第11章「ハッシュ索引」は、木索引(バルクローディングを含む)と、静的・拡張可能・線形ハッシュを扱う。
第IV部、第12–15章:問合せ評価
第12章「問合せ評価の概観」は、問合せが演算子の木になる仕組みと、最適化が重要な理由を説明する。第13章「外部ソート」は外部マージソートを扱う。第14章「関係演算子の評価」は、結合などの演算子のアルゴリズムを扱う。第15章「典型的な問合せ最適化器」は、計画の列挙(左深計画)とコスト見積りを扱う。
第V部、第16–18章:トランザクション管理
第16章「トランザクション管理の概観」は、トランザクションと先行書込みログを紹介する。第17章「並行性制御」は、ロッキング、直列化可能性、デッドロックの扱い、多粒度ロックと索引ロック、楽観的手法とタイムスタンプ手法を扱う。第18章「障害回復」は、チェックポイントと、分析・やり直し・取消しの各段階による回復を扱う。
第VI部、第19–21章:データベース設計とチューニング
第19章「スキーマの精緻化と正規形」は、関数従属性と正規化を扱う。第20章「物理データベース設計とチューニング」は、クラスタリング、概念スキーマのチューニング、非正規化を扱う。第21章「セキュリティと認可」は、機密性、完全性、可用性、任意アクセス制御と強制アクセス制御、統計データベースを扱う。
第VII部、第22–29章:発展的話題
第22章、並列・分散データベース。第23章、データウェアハウスと意思決定支援(ビューを含む)。第24章、オブジェクトデータベースシステム。第25章、演繹データベース。第26章、データマイニング。第27章、情報検索とXMLデータ管理(ブール型テキスト検索、ベクトル空間モデル、Web検索エンジン、半構造データとXQuery)。第28章、空間データベース。第29章、参考文献案内。
主要概念
第I部:基礎
- 実体関連モデルと関係モデル:概念設計と、それを関係へ写像すること。
- 関係代数とSQL:形式的および実用的な問合せ言語。
第II–IV部:アプリケーション、ストレージ、問合せ評価
- 埋込みSQL、JDBC、3層アーキテクチャ:プログラムやWebアプリケーションをデータベースに接続すること。
- 索引:B木系とハッシュ系の構造、およびクラスタ化・非クラスタ化の区別。
- 問合せ計画と最適化:演算子の木、結合アルゴリズム、コスト見積り。
第V–VI部:トランザクションと設計
- 並行性制御と回復:ロッキングによる直列化可能な実行と、先行書込みログによる障害回復。
- 正規形とチューニング:関数従属性とワークロードに導かれるスキーマの精緻化。
批判的分析
長所
- 柔軟な構成。 出版社のモジュール式の部立てと、各部冒頭の概観の章により、教員はアプリケーション重視、システム重視、混合のいずれの道筋も選べる。概観の章は、システム系の各部の詳細に入る前に要点をまとめる。
- アプリケーションと内部の両立。 アプリケーション開発(JDBC、XML、3層アーキテクチャ)と、ストレージ、索引、問合せ評価、トランザクション、回復の内部を一冊で扱う。
- 無料の付属資料。 著者のサイトには、各章の講義スライド、第21章までの奇数番号の演習の解答、SQL演習用のサンプル表とスクリプト、教育用DBMSのMinibaseがある。
- 発展的話題の幅。 第VII部では、並列・分散データベース、データウェアハウス、オブジェクトデータベース、演繹データベース、データマイニング、情報検索、XML、空間データを加えている。
短所
- 技術的な土台が古い。 アプリケーションの章と付属資料は2000年代初めの環境に結びついている。SQL:1999、JDBC、SQLJ、サーブレットとJavaServer Pages、Apache Tomcat 4、当時のデータベース製品である。概念は今も通用するが、道具は現在の実践と合わない。
- 分量。 約1,100ページ・29章は一つの授業で使い切れる量を超えており、読者や教員が取捨選択することが前提になる。
- 解答は一部のみ。 無料の解答は第21章までの奇数番号の演習に限られ、完全な解答は教員に限定される。
コースにおける位置づけ
このコースの書籍リストの中で、Ramakrishnan と Gehrke は主要な汎用データベース教科書の一つである。Michael Hernandez の Database Design for Mere Mortals や Coronel と Morris の Database Systems: Design, Implementation, and Management は、より穏やかな設計寄りの入門書。Silberschatz、Korth、Sudarshan の Database System Concepts や Elmasri と Navathe の Fundamentals of Database Systems は最も近い総合的教科書で、モデリング、SQL、問合せ処理、トランザクション、設計理論を扱う。Gray と Reuter の Transaction Processing は、第16–18章のロッキング、ログ、回復の内容をはるかに深く掘り下げる。
アプリケーションの道筋とシステムの道筋のどちらも辿れる構造を持ち、ストレージと索引、問合せ評価、トランザクションそれぞれに専用の部がある教科書を望むなら、Ramakrishnan と Gehrke を選ぶとよい。
本書の使い方
プログラミングができ、基本的なデータ構造を知っているコンピュータサイエンスの学部生や大学院の初年次の学生に向く。出版社の授業ガイドによれば、システム重視の進め方ではCまたはC++のプログラミングに習熟していることが前提となる。
実践的な進め方:
- 全員の中核: 第1–5章(モデリング、関係モデル、SQL)と、正規化の第19章。
- アプリケーションの道筋: 第6・7章、続いてチューニングの第20章とセキュリティの第21章。
- システムの道筋: 概観の第8、12、16章を先に読み、続いて各部の詳細な章を順に読む。索引(9–11)、問合せ評価(13–15)、並行性制御と回復(17–18)。
- 発展的話題: 関心に応じて第22–28章から選ぶ。
- 練習: 用意されたサンプル表を実際のシステムに読み込み、第5章のSQL演習に取り組む。各問題はまず自分で解いてから、奇数番号の解答で確認する。
