Flywayは、複数のデータベースをサポートするアプリケーションでの実装に適していますか?
お客様が何を使用しているかはわかりません。MySQL、Postgres、Oracleのいずれかである可能性があります。Flywayを使用して、新しいバージョンのアプリケーション用にデータベースを移行できますか?
質問が次の場合:Flywayは、サポートするデータベース全体にDDL抽象化レイヤーを提供しますか?答えはノーです。
これは、移行ツールでサポートされている最小公分母だけでなく、基盤となるデータベースの全機能を利用できるようにするための、意識的な設計上の決定でした。
ユースケースでは、データベースごとに異なる移行スクリプトを提供できます。しかし、それらは非常に似ているはずです。
移行スクリプトを複製する可能性がなく、最小公分母のアプローチで生きることができる場合は、ユースケースにより適している可能性のあるLiquiBaseを参照してください(XMLで生きることができる場合)
jOOQの解析接続を使用できます。これは、ターゲットJDBC接続をラップし、入力DDLを任意のターゲット方言に変換できます(あまり凝っていなく、ベンダー固有でない場合)。Flywayは、この変換JDBCプロキシを認識していないため、認識している必要はありません。SQLトランスレータのオンラインバージョンはここで見ることができます。たとえば、入力SQLがMySQL固有の場合:
create table t (i int primary key auto_increment);
出力は次のようになります。
-- Oracle
create table T (
I number(10) generated by default as identity(start with 1) not null,
primary key (I)
);
-- SQL Server
create table T (
I int identity(1, 1) not null,
primary key (I)
)
-- PostgreSQL
create table T (
I int generated by default as identity not null,
primary key (I)
)
-- PostgreSQL 9.4
create table T (
I serial4 not null,
primary key (I)
)
免責事項:私はjOOQの背後にある会社で働いています。