Refactoring Databases: Evolutionary Database Design
相変わらずバカ高いAddison Wesleyの”Refactoring Databases”を、何となく。
最近のソフトウェア開発は、短期間での仮リリース→改良の繰り返しによる、いわゆるRAD (Rapid Application Development)な手法がクールとされている。こうした「agileにあらずんばソフトウェア開発者にあらず」的な風潮の中、そしてデータベースが多くのソフトウェアにとって必要不可欠にも関わらず、データベースの(スキーマの)リファクタリングについては、あまり語られてこなかったように思う。この”Refactoring Databases”は、そんな”agile database”のための方法論にスポットを当てた、少しニッチだけど割と重要そうな本だ。
Refactoring Databases: Evolutionary Database Design
Martin Fowler John Graham Sachin Rekhi
Addison-Wesley Pub (Sd) 2006-03-06
主な想定読者は、それなりの規模のRADなプロジェクトで、複数アプリから使用されるデータベースを開発しているようなDB開発者。他のプロジェクトとの整合性を取るため移行期間を設け、その間は従来のコードもサポートできるような改良手法が紹介されている。ただ、やはりと言うか何と言うか、最も重要なのはregression testだそうで、頑張ってテストを作っておいてDB変更前・変更後でパスするように保つ(小さな改良毎に行うのを推奨)、というのがこの本の方法論のポイントみたいだ。また、後半は”Drop Column”からStored proceduresまで、DBのリファクタでありそうな改変項目を具体的に挙げ、どんなときにその変更をすべきか、ありうるリスクやスキーマの変え方、(DBの)クライアント・コードのサンプルを示してくれている。
何かと真面目に書かれた本であり、中身もいちいちもっともで、RADとDBを一通り学んだ人なら良くも悪くもサプライズは少ないだろう。前半の方法論にはざっと目を通して、後半のリファレンスは必要に応じて参照する、というのが正しい使い方だと思う。ただ、リファレンスの各項目についている”Motivation”欄は、どのようなときにそのリファクタをすべきか書いてあるので、あらかじめDB設計前に読んでおけば逆にリファクタ回数を減らせるかも知れない。”agile database administrator”を目指すなら、持っておいてまあ損は無いかなあ、という程度には良書。(★★★★)