.NETコードと共謀してデータベーススキーマのバージョン管理をすることは、不安定なコードベースを管理するには、不可欠である。継続的な統合に従事しである。.NET空間の多くのチームは、手書きのスクリプトもしくはスキーマ比較ツールを使用する。Ruby on Railsは、DDL SQLをRubyコマンドに抽象化するポピュラーなソリューションにより、これを達成する。マイグレーション(リンク)と呼ばれる。
以下のRailsマイグレーションは、Rubyで記述されるが、データベースのUsersテーブルを作成したり、削除したりするアクションを定義する。
RikMigrationsライブラリを使用すると、同様のコードがC#で記述される。
理解するための重要なコンセプトは、データベーススキーマを定義するすべてのデータ定義言語は、抽象化され、アプリケーションコードに移行されている。これには、以下のようなメリットがある。
- データベースプラットフォームの中立性
DDLを.NETメソッドに抽象化することで、デベロッパはコードを記述し、テーブルを作成することができる。マイグレーションライブラリは、.NET コードをさまざまなデータベースプラットフォームに変換する処理をおこなう。もはやOracleのインストールの一連のスクリプトやSQL Serverのインストールの別個のスクリプトを保持する必要がない。
- 統合されたバージョン管理
マイグレーションコードがソースコントロールリポジトリのアプリケーションコードで保持されていると仮定すると、マイグレーションコードは容易に分岐可能で、タグ可能となり、コードベースのあらゆるバージョンでコンパチブルなデータベースが確実に作成される。
- 自動アップグレードおよびダウングレードパス
一般的にマイグレーションは、UpおよびDownメソッドがある。Upメソッドはアクションを定義して、テーブルを作成するなどの、データベースを修正する。Downメソッドは、アクションを定義して、テーブルを削除するなどの、操作を取り消す。マイグレーションがバージョン管理され、残りのコードでラベルが付けられている場合、アップグレードパスを自動的に取得し、ギャップマイグレーションを実行することで、古いデータベースを現在の状態にすることがで きる。
.NETコミュニティでは、マイグレーションはまだ広く普及していない。そのアプローチに精通していないことが、その主な原因であるが、マイグレーション に対する正当な主張がある。.NETチームの多くは、データベースストアードプロシージャーを大いに活用する。ストアードプロシージャーを使用しているシステムでは、バージョン管理されたスクリプトアプローチは、良く動作する場合があり、プラットフォームの中立性は、問題にならない。また、DBAによって管理されるデータベースを持つ大規模なアプリケーションでは、DDLを.NETコードに移行することは、オプションではない場合がある。
コミュニティを拡大している2つの.NETマイグレーションライブラリがある。それは、RikMigrations(リンク) (コード)(リンク)およびMigrator.NET(リンク)である。
RikMigrationsは 人気のあるライブラリであり、より流動性のインターフェイスやコマンドラインインターフェイスをサポートする。しかしながら、昨年の半ばに、主なデベロッパがそれへの寄与をやめた。Migrator.NETは人気を得て、新しい流動性のインターフェイスおよび自動的な統合ですばやく成熟している。そのどち らも、デベロッパコミュニティからのサポートを活用する規模の小さいオープンソースプロジェクトである。
C#のMVPであるJustin Etheredge氏は、構成についての助言を含み、RikMigrationsを開始するための便利なチュートリアル(リンク)を書いた。
原文はこちらです:http://www.infoq.com/news/2009/01/migrations_dotnet