私は主にビジネスアプリケーションの開発と構成管理に携わってきました。あなたの質問は、そのような環境における課題を代表するものです。たとえばMicrosoft Wordをアップグレードすると、すぐにすべてのドキュメントをdocからdocxに変更する必要はありません。また、文書には、より単純な構造の完全リレーションデータベースもあります。
ビジネスアプリケーションではそうではありません。ユーザはリリースをスキップし、データモデルの不正な変更を行い、システムは実行し続けて正しい番号を提供する必要があります。
独自のアプリケーション(最大600台のテーブル)これには分岐/マージが含まれますが、アプローチは手動で行うこともできます。データモデルは、構造化された方法でダウン書くことができ
バージョン管理データモデル
。たとえば、テーブルの内容(メタデータを含むテーブルにロードされるCSV)として、または使用中のバージョンを検出し、見逃している場合は列やテーブルを追加するコード(非自明な移行など)。
これにより、同時に複数のユーザーがデータモデルを変更することができます。
自動検出を使用すると(たとえば、「add_column」ではなく「verify_column」という名前のコールを使用します)、アップグレードを開始するリリース番号に関係なく円滑な移行が可能になります。このようなプロシージャは、変更対象の表を分析し、列が存在しない場合はalter table t1 add col1 number not null
、列が存在する場合はalter table t1 modify col1 not null
などの正しいDDLを発行します。
OracleおよびSQL Serverの場合、いくつかのサンプル手順を提供できます。 MySQLでは、インストールをWindowsとLinuxで実行できるようにするために、OSに依存しないクライアント側の言語を使用してこれをコーディングします。 Apache Antを使用していることがあります。
バージョニングデータ
我々は、次の4つのカテゴリにテーブルを分割:
- R:参照データ。アプリケーションサイトが実際にシステムを使用する前に提供しなければならないデータたとえば、総勘定元帳の勘定コードです。参照データは、生きていてもめったに変化せず、サイズが連続的に増加しません。内容は、アプリケーションが使用されているサイトのビジネスモデルを反映しています。
- T:トランザクションデータ。アプリケーションの使用中にサイトが登録、変更、削除するデータ。例えば、総勘定元帳のエントリ。トランザクションデータは0から始まり、連続的に増加します。企業が収入を倍増させると、取引データも倍増します。
- S:播種したデータ;現場でユーザーによって維持されていないが、開発当事者によって提供され管理されているデータ。本質的にこれはデータに変換されたコードです。たとえば、「F」は「女性」を表します。シードされたデータのエラーは、システムエラーにつながる可能性があります。
- O:残り(技術的なので理想的ではありませんが、一部のシステムでは一時テーブルAまたはスクラッチテーブルBが必要です)。
カテゴリ 'S'(シードされたデータ)のテーブルの内容はバージョン管理下に置かれます。私たちは、通常これらをケースツールでメタデータとして登録し、「データセット」と命名しますが、Microsoft Excelやコードも使用できます。
たとえば、Excelでは、シードされたデータの行のリストがあります。列Aでは、=B..&"|"&C..& "|" & ...
のようなExcel関数を入力して、すべてを連結し、ローダーツールによる読み込みに適したものにすることができます。
verifySeed('TABLE_A', 'CODE', 'VALUE')
Excelは、複数のユーザーが同時に内容を変更することができ、バージョン管理下に持って来るために少し難しいです:
は、コードの例では、次のようなコールがある場合があります。コードによるアプローチは非常に簡単です。
不要なシードデータを削除する機能も追加してください。たとえば、廃止されたシードされたデータを明示的にリストするか、最後のインストールでは触れられていないがテーブルに存在するすべてのシードされたデータを自動的に削除します。
これはあなたにとって興味深いことがあります:http://stackoverflow.com/questions/6409204/database-migrations-in-a-complex-branching-system –
こんにちは@Stevie Gあなたの質問の解決に役立つ回答はありましたか? ?あなたの質問に成功しなかったものを追加しないでください。答えがあなたを助けたとき、それの隣の中空の緑色のチェックマークをクリックすることでそれを受け入れることができますか? –