ReplaceSchemaの紹介・おさらい


DBFluteには、自動生成と全く関係の無い便利機能があります。

「ReplaceSchema」

1. 既存DBのFKとTableを全て削除。
2. %DBFLUTE_CLIENT_HOME%/playsql/replace-schema.sqlを実行(CreateTable文)

結構開発でうっとおしいのが、DBの反映(作り直し)。
かつ、それがプロジェクトによってやり方がバラバラであること。
それらをどうにかしたいと思って作りました。

ReplaceSchemaを使えば、ERDツール・独自ツール・手動にて、
FKのDropとTableのDropを生成する必要はありません。
DBFluteが、JDBCのメタ情報からFKとTableのDrop文を生成して実行します。
そのため、名前が変わったり削除されたりした古いテーブルが残ったりすることもありません。
(何も考えず運用するとERDツールは現存のテーブルのDROP文しか作らないので
古いテーブルが残るのです)

DBA(ある一人の人)がDDLを生成して、replace-schema.sqlとしてコミットします。
そして、開発者が最新のDDLを落として、replace-schema実行。
→ その開発者のスキーマが最新の状態に!

マスタデータも入れたいですよね。
実は、ReplaceSchemaの処理には続きがあります。

3. %DBFLUTE_CLIENT_HOME%/playsql/data/ut/tsv/[encoding]/***.tsvをDBへ登録
4. %DBFLUTE_CLIENT_HOME%/playsql/data/ut/csv/[encoding]/***.csvをDBへ登録
5. %DBFLUTE_CLIENT_HOME%/playsql/data/ut/xls/***.xlsをDBへ登録
(フォーマットはS2Unitと同じ)

DBAはDDLを最新にすると共に、マスタデータや開発用のテストデータをTSVやXLSとして
作成してコミットします。
そして、開発者が最新のDDLを落として、replace-schema実行。
→ その開発者のスキーマがデータが入った状態に!

実際に自分の周りのプロジェクトではこれを使って、
各開発者に「最初のDB作成」や「その後のDB変更」を展開しています。
かなり開発者は楽になっているようです。
本番環境のDBの構築で利用したこともありました。
(LINUX上で動かした(マスタデータ投入まで))

#
# ここで紹介しています
# http://dbflute.sandbox.seasar.org/ja/view/concept/basic/task/index.html
#