読者です 読者をやめる 読者になる 読者になる

kagamihogeの日記

kagamihogeの日記です。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶ SQL徹底指南書 - kagamihogeのblog と同じ著者の一冊。前の本がSQLに焦点を深く絞っていたのに対し、今回はDB全般にまたがって概念や技術を広く解説している。本書の結構な部分は、それなりの経験年数があればどこかで読んだことが書いてあることだと思う。しかし、だからといってこの本が凡庸かというとそうでもない。むしろ、ごく当たり前のことがなぜ当たり前なのかをハッキリ記述させていくことや、この巻では様々なトレードオフを学ぶことになるが、これらのテキストからは非常に洗練されたスキルが感じられる。

この本を読んですごく感心したと同時に感動した部分がまずある。それは、著者のDBに対する基本的な態度の一つである、基礎理論疎かにするべからずというか(数学などの)理論によって裏打ちされた概念は強い、というもの。これは例えばこの本では正規化のあたりに強く出てきて、イマサラ正規化かよとやはり俺も思わずにはいられなかった。しかし第三章の副題「なぜテーブルは分割する必要があるのか?」にあるとおり、この疑問に答える形で正規化の解説を丹念に行いかつその意味もしっかりと書かれている。

また、正規化の章の最後には「正規化を学ぶことに対する的外れな批判について」というコラムがある。これは、正規化なんてカンタンなものをイチイチ理論の形としてまとめて教える必要があるのか? という批判に対するもの。俺自身少なからずそう思っていた節あり苦笑してしまった。なので、著者の「常識は、多くの人に広めてこそ常識として価値を持つようになる」という一言はすごく胸に刺さると同時に、基礎理論の重要さを思い知るのでした。

もう一つの本書の重要なポイントは、DBにはトレードオフが沢山存在する、ということ。たとえば、論理設計と物理設計の違いの重要さでは、各レイヤで表現するものが根本的に異なることについて触れていて、本来的にはそれぞれのレイヤがそれぞれの都合でしか変更すべきではない。しかし、パフォーマンスやらなんやらの都合でテーブル構造を崩さざるをえないケースはどうしても存在する。ここにはトレードオフが発生し、エンジニアにとってはレイヤを超えての変更がどのように波及するのかを学ぶ必要がある。

結局のところDBを使った開発というのは美しいモデリングの世界だけで終わることはなく、ドロドロした物理レイヤであるところのRDBMSの実装と無縁ではいられない。この本では基礎理論だけでなく、各々が使うことになるRDBMSを学ぶことも疎かにしてはいけない、というメッセージも発している。この辺りも、理想と現実のトレードオフを考えるべしという著者の理念が大きくでている部分であろう。

そして最後まで読み進むと「おわりに」で、著者のある種のぶっちゃけトークが展開され背中がのけぞることになる。それがどのような含蓄のあるものかのかについては是非皆さんの目で確かめて頂きたい。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ