BT

.NETへのRailsスタイルのデータベースマイグレーション

| 作者: Al Tenhundfeld フォローする 0 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2009年1月22日. 推定読書時間: 3 分 |

.NETコードと共謀してデータベーススキーマのバージョン管理をすることは、不安定なコードベースを管理するには、不可欠である。継続的な統合に従事しである。.NET空間の多くのチームは、手書きのスクリプトもしくはスキーマ比較ツールを使用する。Ruby on Railsは、DDL SQLをRubyコマンドに抽象化するポピュラーなソリューションにより、これを達成する。マイグレーション(リンク)と呼ばれる。

以下のRailsマイグレーションは、Rubyで記述されるが、データベースのUsersテーブルを作成したり、削除したりするアクションを定義する。

Rails Migration

RikMigrationsライブラリを使用すると、同様のコードがC#で記述される。

RikMigration in 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

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT