Ruby on Rails と Java の両方を使用しています。Rails プロジェクトに取り組んでいるときは、マイグレーションをとても楽しんでいます。だから私は、Java用のツールのような移行があるのだろうか? そのようなツールがない場合、Java プロジェクトで使用されるデータベースを制御するためのツールとして移行を使用することは良い考えですか?
8 に答える
間の機能比較については、
- フライウェイ
- リキベース
- c5-db-移行
- dbdeploy
- マイバティス
- MIGRATEdb
- migrate4j
- dbmaintain
- 自動パッチ
http://flywaydb.orgをご覧ください
これは、あなたにとっても他の人にとっても、仕事に適したツールを選択するための良い出発点になるはずです
Liquibaseは、チェックする価値のあるこの分野の別のプロジェクトです。
HibernateのSchemaUpdateを使用して、移行と同じ機能を実行しました。アプリを起動するたびにデータベース構造を調べてマッピングと同期するため、移行よりも実際には簡単です。追加のrake:db:migrateステップがなく、アプリが実行中のデータベースと同期しなくなることはありません。に対して。HibernateマッピングファイルはRailsの移行ほど複雑ではないため、アプリでHibernateを使用していなくても、Hibernateを利用できます。欠点は、ロールバック、移行、DMLステートメントの実行に関しては柔軟性がないことです。コメントで指摘されているように、テーブルや列も削除されません。Hibernate初期化プロセスの一部として、これらを手動で実行する別のメソッドを実行します。
ただし、Railsの移行を使用できなかった理由はわかりません。スタック(Ruby、Rake、Rails)をインストールしてもかまわない限り、アプリに触れる必要はありません。
同じ質問を調査しているときに、この投稿に出くわしました。私はまだ最良のツールやアプローチについて結論を出していませんが、これまで他の回答で言及されていない、私が遭遇したツールの1つはdbdeployです。これらのツールの比較を読みたいと思います。
その他の関連リソース:MartinFowlerとPramodSadalageによるEvolutionaryDatabase Designに関するやや古い投稿、および 『Refactoring Databases:Evolutionary Database Design by Sadalage and Scot Ambler』という本。
また、Java のレールのような移行の 2 つの独立した実装があります。
1) Carbon Fiveからの Maven ベースの移行
2) Hashrocketの Ant ベースのタスク(個人的にお気に入り)
これらのパッケージは特に Maven と Ant 用に作成されたものですが、いくつかの作業を行うことで、ほぼすべてのものに適応させることができます。
Migrate4jは候補のように見えますが、このプロジェクトは本番環境で使用するには十分に成熟していないようです。
また、最初はUnitils内で開発されたDbMaintainもありますが、現在は専用プロジェクトになっています。私たちは現在それを使用しており、非常に満足しています (これは、良い代替手段がないという意味ではありません)。データベース + 移行ブックマークにそれらをさらにリストします (Maven をサポートするツールに焦点を当てています)。