web-dev-qa-db-ja.com

開発中に頻繁に変更されるデータベースモデルに対処するための推奨戦略は何ですか

多くのプロジェクトでは、開発の初期段階でデータベースモデルを決定する必要があります。これは、多くのSQLを頻繁に書き換えなければならないことを意味します。これに対処するための推奨戦略は何ですか?特に、RADのようなアプリケーションを開発したい場合や、最終的な要件がまったく設定されていない場合はどうでしょうか。主におもちゃのプロジェクト。

理想的なシナリオは、プロジェクトの開始時にSQLをまったく記述できず、データモデルがより固まったときにのみ、実際にプロジェクトのデータベースをセットアップしてSQLを書き込むことです。開発の初期段階では、SQLを何度も変更することなくエンティティクラスを変更できるようにしたいだけです。

(私がこれを求めているプロジェクトでは、Spring 4とMySQLデータベースを使用しています)

5
Kristof

私の現在のプロジェクトで使用している手法(おそらくあなたに役立つでしょう)は Liquibase を使用することです。すべてのデータベースの変更は、ソース管理にチェックインされ、アプリケーションの起動時に自動的に実行される構成ファイルを介して行われます。これにより、データベーススキーマとコードの同期を保つことができます。最新のリビジョンをブランチにプルすると、最新のデータベース構成が得られます。テーブルや列を追加する以上のことを行うと少し面倒になりますが、IMEは新しいシステムの開発中に行われるほとんどの変更はそれだけです。

他にも「コードファースト」スタイルのORM製品がいくつかあると思いますが、これは私がよく知っている唯一の製品です。それと.NET Entity Managerですが、Spring 4を使用しているので、Javaを使用していると思います。他のコードファーストソリューションでは、スキーマが変更されたときにデータベースを完全に削除して再作成する必要がある場合があることに注意してください。通常、これは開発の初期段階では問題になりませんが、後で面倒になる可能性があります。

4
TMN

私は、データレイヤー全体を最後まで単純化しないでおくよりも、垂直方向の機能スライスで作業することを好みます。

多くのORMにはデータベース生成機能があります。それは洗練されていて、DBスキーマのdiffをサポートする必要はありません。なぜなら、開発では、実際にはデータを気にせず、DBを最初から再作成することを気にしないからです。ただし、アプリケーションがメンテナンスモードになるとき、それは将来にとって素晴らしい資産になる可能性があります。

0
guillaume31