人々のチームがデータベーススキーマの変更を追跡するのに役立つバージョン管理方法は何ですか?
人々のチームがデータベーススキーマの変更を追跡するのに役立つバージョン管理方法は何ですか?
回答:
ほんの数分前、私はこれをチェックしていました:データベースを持つすべてのプロジェクトに存在するはずのテーブルは、実際に実行するのに十分簡単なようです、チェックしてください:
schema_version(または移行、またはあなたに合ったもの)と呼ばれ、その目的はデータベースの構造的またはデータの変更を追跡することです。可能な構造(MySQLの例)は次のとおりです。
create table schema_version ( `when` timestamp not null default CURRENT_TIMESTAMP, `key` varchar(256) not null, `extra` varchar(256), primary key (`key`) ) ENGINE=InnoDB;
schema_version(
key
、extra
)の値( '001'、 'schema version')に挿入します。このテーブルをプロジェクトの最初から追加するか、最初のバージョンをステージングサーバーまたは運用サーバーに展開した直後に追加するかはユーザー次第です。
SQLスクリプトを実行してデータベース構造を変更したり、データ移行を実行したりする必要があるときはいつでも、そのテーブルにも行を追加する必要があります。そして、そのスクリプトの最初または最後のinsertステートメントを介してそれを行います(プロジェクトのコードリポジトリにコミットされます)。
…
最善の方法は、ビルドプロセスの一部としてデータベースを生成することです。すべてのスクリプトを残りのコードと共にソース管理に保管し、全員が自分の環境に責任を負います。
それに失敗した場合、RedGateにはソース管理をSSMSに統合するツールがあり、SQL CompareはMS SQL Serverスキーマの比較/同期に役立ちます。Visual Studio Database Editionには、スキーマ比較ツールが組み込まれています。
もう1つのSOの質問から、Migrator Dot Netに導かれました。これは、私が十分な空き時間に調査を開始する予定です。それは良い方法のように見えますが、あなたが喜んでやるよりも時間/オーバーヘッドの投資になるかもしれません。
eiefaiはすでに、データベースを使用するすべてのプロジェクトに存在するテーブルについて言及しています。これは素晴らしいブログ投稿ですが、IMOはデータベースリビジョン管理のための実用的なソリューションへの道の一部に過ぎません。現実世界でこの質問に「答える」には、VCSとデータベースに関する他の情報を考慮する必要があると思います。
この質問にアプローチする角度はいくつかあります。「ツールファースト」の角度は、プラットフォームと個人的な好みに基づいて変わると思います。適切なケース:MS Visual Studioでデータベースプロジェクトを使用していますが、これがMySQLの優れたソリューションであるかどうかはわかりません。また、Redgate、Erwin、Embarcaderoなどのお気に入りのツールでかなり売れている人々を知っています。
また、この質問には「プロセス優先」の角度があります。これについては、このサイトで後続の質問で(できれば)再訪します。このプロセスの要点は、スキーマをソース管理下に置き、バージョン "x"からバージョン "y"にスキーマの変更をほとんどオンデマンドで適用できるように変更を管理することです。
このトピックへの決定的な答えはこの本のように見える終わるために起こっているので、それはおそらく1を参照して始め価値がある:レッドゲートは最近「と呼ばれる無料の電子ブック出版されたSQL Serverのチームベースの開発にレッドゲートガイド」、およびがありますしながら、議論の余地はたくさんありますが、議論を始めるにはかなり良い場所です、IMO。名前に反して、本書の内容の多くは、SQL ServerだけでなくDBやRedgateだけでなくすべてのツールセットに適用できるほど一般的です。まだこれを見ていなければ、少なくとも一見の価値があります。
最後に、stackoverflowからの「レガシー回答」にリンクする価値があるでしょう。
SchemaCrawlerは、すべてのデータベーススキーマオブジェクトを含むテキストファイルを作成するためのツールです。このテキスト出力は、人間が判読できるように設計されているだけでなく、別のサーバーからの類似の出力に対しても差分可能であるように設計されています。
実際には、ビルドの一部として行うと、データベーススキーマのテキストファイルを出力すると便利です。このようにして、テキストファイルをソースコード管理システムにチェックインし、スキーマが時間とともにどのように進化したかについてのバージョン履歴を取得できます。SchemaCrawlerは、コマンドラインからこれも自動化するように設計されています。