nekoTheShadow’s diary

IT業界の片隅でひっそり生きるシステムエンジニアです(´・ω・`)

曽根壮大『失敗から学ぶRDBの正しい歩き方』(技術評論社) を読んだ。

失敗から学ぶRDBの正しい歩き方 (Software Design plus)

失敗から学ぶRDBの正しい歩き方 (Software Design plus)

Twitterのタイムラインで話題になっていたので読みました(ミーハー)が、とても良い本でした。「失敗から学ぶ」「RDB」とタイトルにある通り、本書はRDBSQLに関するアンチパターン集で、1章に1個の割合で、合計20個のアンチパターンが紹介されています。「RDBSQLに関するアンチパターン」というと『SQLアンチパターン』という名著があり、本書でもたびたび言及されています。正直なところをいうと、重複している部分もあるのですが、『SQLアンチパターン』はどちらかといえばDBやテーブルの設計に関する記述が多かったのに対し、本書はDBの運用やアプリケーションとの連携といった部分にまで話が及んでおり、『SQLアンチパターン』と比べると、話題のスコープが広いように感じました。

SQLアンチパターン

SQLアンチパターン

タイトルに関連して述べておくと、表紙には大きく「MySQLPostgreSQLの設計・運用を見直す」とありますが、基本的には特定のRDBMSに限定されない記述になっています。「どういう設定をすればよいのか」「どこを確認すればよいのか」など、具体的な部分でMySQLPostgreSQLを例示している部分はありますが、そこはある程度読み流してしまっても、本書の価値を大きく損なわないと思います。事実、こう書いているわたし自身、MySQLPostgreSQLを本番環境で使ったことがありません……。SIer勤務だとどうしても商用DBが中心になるんや(´・ω・`)

個人的に本書を読んでいて感心したのは、各アンチパターンを紹介する前に「そのアンチパターンを採用すると、どういう場面で困るのか」をストーリー形式で示していること。「XXXはアンチパターンなのでやめましょう」するにあたって、そのアンチパターンがもたらすデメリットが具体的に述べられていれば述べられているほど、その主張は説得的になりますし、読者も自分事のように感じて、まじめに読むようになるはずです。また「どういう場面で困るのか」を示したストーリーですが、目を閉じれば情景が浮かんできそうなほど「あるある」な内容になっています。わたしも似たような場面を経験したことがちらほら……。そうした「あるある」なストーリーを描くことができるということは、筆者のRDBに関する経験の豊かさや造詣の深さをうかがわせており、これも本書の説得力を増強していると思いました。

個人的な経験で申し訳ないのですが、DBやテーブルについて奇妙な設計をしてしまっても、開発自体は意外と何とかなったりします。ただし運用は死ぬ。また本書でも言及されていますが、アプリケーションに比べるとデータはずっと長生きで、「新しいシステムを作ったが、データは古いシステムから引き継いで使う」という話はよく聞きます。要はテーブルやDBやSQL関連の考慮不足が問題として爆発するまでにはタイムラグがあって、開発者はその遠い未来の爆発が起きないような手法を身に着ける必要があります。その点で、本書は量も手ごろに、アンチパターンとその対策が説得的にまとめられていると感じました。