kagamihogeの日記

kagamihogeの日記です。

Webエンジニアのための データベース技術実践入門

俺が最近RDBMS関連の勉強をしているのは、Oracleの運用で痛い目にあったからである。危機感というか、いくらなんでもDB知らなさすぎやばい、という感情に背中を押されてのことである。ところで、本書の対象読者として、既に現場で技術者として働いておりデータベースを勉強したいが、何から勉強したものか分からない方、を上げている。俺ももれなくその例の一人となっている。つまり、データベースの重要性に気付かされるのは、本格的にデータベースを実際の業務で触れるようになってから、というケースは割とポピュラーなようである。

そんなわけで、本書はまず、なぜデータベースとりわけRDBMSを使わなければならないのか? から始まる。なぜ、データをただ保存するためだけにこんな大仰な仕組みが必要なのか、CSVファイルとかエクセルではダメなのか? とかに答える形で導入部は始まる。俺もかつては抱いていた疑問だけに、苦々しい表情になりながら読み進めることになった。しかし、著者の生々しい実体験に支えられているだけに、本書の持つ説得力は高いものがある。

その後の章では、そうした疑問やデータベースに求められる要件とその回答としてのRDBMSRDBMSの各機能の解説、という形で進んでいく。本書の目的は、データベースの持つおおまかな役割や思想をつかむことにある。なので、この本を読んで即座にMySQLのスキルが上がるとか、そういうことはない。RDBMSの個々の分野、インデックスやモデリング、トランザクション排他制御、バックアップやリカバリ……などなどは一つ一つだけで充分複雑なものになっている。それらは別途、学習する必要がある。そのため、この本の使用法は、本書を起点に自分に足りない分野に挑んだり、全般的な知識に不足がないかを確認するために使うのが良いと思われる。複雑巨大なデータベースの山脈を、まずこの本で俯瞰する。それから個々のトピックに取り組んで、山を一つ一つ登っていく。本書は、そういうアプローチを推奨している。

本書の独特な部分としておもしろかったのは、MySQLソースコードを読んで障害解析したり新しい機能を追加したりしてみる章が上げられる。本書は特定のRDBMSに依存しないように書かれているが、具体的な話が必要な場面ではMySQLを使用している。その真骨頂がその章である。といっても、ソースコードの静的解析はlinuxgrepやらを使用した一般的なファイル操作で、動的解析はgbdを使用したもので、使う技術そのものはごく一般的なもの。俺が驚いたのは、RDBMSという複雑巨大なミドルウェアも、linux上で動くC言語のアプリケーションに過ぎず、オープンソースなので自由に見れるし、手も入れられる、というところ。もちろん、トランザクションとか高度に複雑なものはそうおいそれと読めないんだろうけど、内部動作をソースで追えてしまうのは新鮮な感じであった。

最後になったが、サンプルデータにP3,P4の人物名使っちゃうあたりに深い親近感を覚える一冊であった。

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)