2017-03-22 17 views
2

私はFlyway DB Migrationsに関する質問があります。同じDBスキーマを扱う複数のプロジェクト(マイクロサービス)を一般的に管理する方法。各プロジェクトのマイグレーション・マイグレーション・スクリプトは、他のプロジェクトによって変更されている場合は開始できません。彼らは同じ文書やベストプラクティスを持っていますか?単一スキーマと複数のプロジェクトを使用したフライウェイ移行

+0

各マイクロサービスは、独自のデータを管理し、個別のDBスキーマを持つことが理想的です。これは悪い習慣であり、サービス間でDBスキーマを共有するためのマイクロサービスアーキテクチャのルールを破ります。 – sezerug

+1

DBスキーマを1つのモジュールで管理(有効な移行)する必要がありますが、多くのモジュールで共有できます。共有DBを持つマイクロサービスアーキテクチャは新しいものではなく、私は何千もの用途で広く使われているアーキテクチャだと考えています。 – user3808122

答えて

1

これが価値があることは、これが私たちがしたことです。スキーマは複数のプロジェクトによって共有されていたので、そのスキーマを維持するタスクを持つ1つのプロジェクトによってスキーマが管理されていました。スキーマの作成とメンテナンスの集中化には、単一の軌跡があるという点で他の利点がありました。変更のためにいくつかのプロジェクトをスキャンする必要はありません。

私は正直なところ、これが最適なソリューションだと思います。私はflywayがプロジェクト間スキーマ依存関係管理を持っているとは思わない。

+0

この個別のプロジェクトには、Flywayの設定と移行ファイルのみが含まれていましたか、またはすべてのアプリケーションSQL文(通常のSELECTなど)をこの中央プロジェクトに移動しましたか? –

0

私たちはこれを行う過程にあります。私たちには、スキーマの作成/管理を管理する1つの中心的なプロジェクトがあり、他のプロジェクトは、独自のフライウェイバージョン管理を介して、すべて独自の関数作成を処理します。これは、他のプロジェクトがスキーマバージョンをチェックするテーブルの名前を変更し、migrateのベースラインをtrueに設定することによって行われます。私たちはspring/flyway-db設定を使用していますので、最初に加えて各プロジェクトに以下を追加するだけです。application.properties

flyway.baselineOnMigrate=true 
flyway.table=schema_verison_*<some_other_identifier>* 

私はあなたの質問が明示的に春の設定をspecifiyなかったけど、私は、これはあなたがフライウェイを使用しているかは関係ないように設定することができると信じています。私は自分自身で質問をしていたときに答えを投稿したかったので、あなたのSOの質問は一番の結果でした。私の答えは誰かがトラックを助けてくれるかもしれないと思いました。

関連する問題