移行スクリプトまたはMyBatis Scheme Migration Extendedの管理

すべての開発者は何らかの形で「移行スクリプト」の概念を知っていると思います。 原則として、これはデータベースの関連性を維持するために作成されたsqlスクリプトを意味します。 移行スクリプトを作成して使用する方法は非常に簡単であるため、このプロセスは手動で実行することもできます。 いくつかの場所で、移行スクリプトの操作を簡単にするツールについてお話したいと思います。



MyBatisスキーマの移行


興味深いMyBatisストレージライブラリ(旧称iBatis)には、移行スクリプト管理ツールが含まれています。 コマンドラインから動作し、LinuxシステムとWindowsシステムの両方に実装されています。 使用するコンソールスクリプト(bat、sh)は、コマンドを対応するJavaクラスに渡し、Javaマシンで実行するだけです。

ライブラリでできること:

  1. 移行スクリプトのリストを表示する
  2. 特定の移行スクリプトのステータスの決定(すでにロールされているかどうか)
  3. 移行スクリプト実行日表示
  4. 移行スクリプトテンプレートの作成
  5. 移行スクリプトの実行
  6. 変更をロールバックする
  7. データベースのバージョン間の任意の移動
  8. 移行スクリプトを別のファイルにエクスポートします。 この場合、エクスポートする価値がある移行スクリプトのバージョンを指定できます。
MyBatis Schema Migrationsを初めて起動すると、彼は理解している移行スクリプトプロジェクト構造を慎重に作成できます。

ユーティリティを使用したプロセスは次のようになります(すべてのコマンドは、migrates << command >>の形式でツール自体を起動するコンテキストで実行されます)。

  1. initコマンドで移行スクリプトリポジトリを初期化する
  2. 新しいコマンドでスクリプト名を指定して、移行スクリプトを作成します
  3. 作成されたスクリプトスタブには2つのブロックがあります。 それらを埋めます:
    • 移行スクリプト自体
    • スクリプトのロールバックは現在の移行を変更します
  4. upコマンドで移行スクリプトを実行します
  5. statusコマンドでスクリプトのステータスを確認します
  6. スクリプトがある場合(たとえば、バージョン管理システムを介してプロジェクトを更新した後に表示される場合)、upコマンドで実行します
  7. データベースの特定の状態に戻す必要がある場合は、downまたはversionコマンドで変更をロールバックします
  8. 多数の移行スクリプトを個別のファイルにエクスポートします。たとえば、fromVersionとtoVersionのコマンドスクリプトを顧客に提供します。ここで、fromVersionとtoVersionはエクスポートされるデータの範囲を決定します
  9. リストの中央にある未実行のスクリプトの場合は、pendingコマンドを使用してのみ実行できます。 他のスクリプトは変更されたスクリプトに依存する可能性があるため、コマンドは危険です。
これは、プロジェクトデータベースのステータスを監視するのが非常に簡単です。

しかし、微妙さなしではありません。 そのため、Linuxから、このユーティリティはデフォルトの移行スクリプトテンプレートの検索を拒否しました。 テンプレートファイルへのパスを構成ファイル(migration.properties)に登録する必要がありました。

new_command.template=20110925094101_first_migration.sql





initコマンドで作成した移行スクリプトプロジェクトでユーティリティコマンドを実行する必要があります。 どこでも見つけることができますが、各コマンドに--pathパラメーターを割り当てます。

MyBatis Schema Migrationsの使用方法の詳細については、公式チュートリアルおよびツールの使用例を示す公式ビデオから学ぶことができます。



MyBatis Schema Migrations Extended(Migro)


このユーティリティは私にとって興味深いものであり、いくつかの問題を解決しますが、現在の実装では、このツールの実装に伴う欠点も見られます。 このプロジェクトはjavaで書かれており、 Apache License 2の下で配布されているため、必要な機能を実装できるこのプロジェクトのフォークを作成するように促されました。 myBatis移行ツールプロジェクトは完全に完了したと見なし、移行スクリプトの保守に関する開発者のビジョンを理解しているとすぐに言います。 しかし、私はこのテーマに関する独自のビジョンを持っているため、このツールは大規模なプロジェクトでの使用には適さないと考えています。



大規模プロジェクトに必要なものについて


私のプロジェクトに既に実装されているもの:

実装されるもの:

ここからダウンロードできます: https : //github.com/evgenij-kozhevnikov/Migro

ソースプロジェクト: myBatis

ビデオ: MyBatisスキームの移行例



All Articles