MyBatisスキーマの移行
興味深いMyBatisストレージライブラリ(旧称iBatis)には、移行スクリプト管理ツールが含まれています。 コマンドラインから動作し、LinuxシステムとWindowsシステムの両方に実装されています。 使用するコンソールスクリプト(bat、sh)は、コマンドを対応するJavaクラスに渡し、Javaマシンで実行するだけです。
ライブラリでできること:
- 移行スクリプトのリストを表示する
- 特定の移行スクリプトのステータスの決定(すでにロールされているかどうか)
- 移行スクリプト実行日表示
- 移行スクリプトテンプレートの作成
- 移行スクリプトの実行
- 変更をロールバックする
- データベースのバージョン間の任意の移動
- 移行スクリプトを別のファイルにエクスポートします。 この場合、エクスポートする価値がある移行スクリプトのバージョンを指定できます。
ユーティリティを使用したプロセスは次のようになります(すべてのコマンドは、migrates << command >>の形式でツール自体を起動するコンテキストで実行されます)。
- initコマンドで移行スクリプトリポジトリを初期化する
- 新しいコマンドでスクリプト名を指定して、移行スクリプトを作成します
- 作成されたスクリプトスタブには2つのブロックがあります。 それらを埋めます:
- 移行スクリプト自体
- スクリプトのロールバックは現在の移行を変更します
- upコマンドで移行スクリプトを実行します
- statusコマンドでスクリプトのステータスを確認します
- スクリプトがある場合(たとえば、バージョン管理システムを介してプロジェクトを更新した後に表示される場合)、upコマンドで実行します
- データベースの特定の状態に戻す必要がある場合は、downまたはversionコマンドで変更をロールバックします
- 多数の移行スクリプトを個別のファイルにエクスポートします。たとえば、fromVersionとtoVersionのコマンドスクリプトを顧客に提供します。ここで、fromVersionとtoVersionはエクスポートされるデータの範囲を決定します
- リストの中央にある未実行のスクリプトの場合は、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移行ツールプロジェクトは完全に完了したと見なし、移行スクリプトの保守に関する開発者のビジョンを理解しているとすぐに言います。 しかし、私はこのテーマに関する独自のビジョンを持っているため、このツールは大規模なプロジェクトでの使用には適さないと考えています。
大規模プロジェクトに必要なものについて
私のプロジェクトに既に実装されているもの:
- スクリプトはビルドバージョンごとにグループ化できるため、プロジェクト全体の移行スクリプトの長い文字列を1つのフォルダーに保存する必要がなくなります。
- 作成済みの移行スクリプトを編集するには、編集コマンドを呼び出して移行スクリプトを実行します。
- 変更されたファイルは更新済みとしてリストされます。 保留中のコマンドを使用してそれらを更新できます。 改訂にもかかわらず、保留中のコマンドはまだ安全ではありません。
- コマンドラインによるビルドバージョンのグループ化
- 特定の移行スクリプトまたは任意の範囲の実行
- エクスポートスクリプト、特定のビルドバージョン
- スクリプトをテンプレートファイルにエクスポートする
- IDE統合
- 最適化とリファクタリング:)
ソースプロジェクト: myBatis
ビデオ: MyBatisスキームの移行例