sql >> データベース >  >> RDS >> Mysql

データベースバージョン/スキーマではなくデータの変更管理?

    私は主にビジネスアプリケーションの開発と構成管理に携わってきました。あなたの質問は、そのような環境での課題を代表するものです。たとえばMicrosoftWordをアップグレードする場合、すべてのドキュメントをdocからdocxにすぐに変更する必要はありません。そして、ドキュメントはさらに単純な構造で完全な関係データベースを持っています。

    ビジネスアプリケーションではそうではありません。ユーザーはリリースをスキップし、データモデルに不正な変更を加え、システムは実行を継続し、正しい番号を提供する必要があります...

    独自のアプリケーション(最大のものは600テーブルのようなもの)に、分岐/マージを含む自己開発のCASEツールを使用しますが、このアプローチは手動で行うこともできます。

    バージョン管理データモデル

    データモデルは、構造化された方法で書き留めることができます。たとえば、テーブルの内容(メタデータを含むテーブルに読み込まれるCSV)として、または使用中のバージョンを検出し、重要な移行を含め、欠落している場合に列とテーブルを追加するコードとして。

    これにより、複数のユーザーが同時にデータモデルを変更することもできます。

    自動検出を使用する場合(たとえば、「add_column」の代わりに「verify_column」という名前の呼び出しを使用します)、これにより、お客様がアップグレードを開始するリリース番号に関係なく、スムーズな移行も可能になります。このような手順では、変更するテーブルを分析し、alter table t1 add col1 number not nullなどの正しいDDLを発行します。 列が欠落している場合、またはalter table t1 modify col1 not nullの場合 列がすでに存在しているがnull許容の場合。

    OracleとSQLServerの場合、いくつかのサンプル手順を提供できます。 MySQLでは、クライアント側の言語を使用してこれをコーディングします。WindowsとLinuxでインストールを実行できるように、OSに依存しないことが望ましいです。経験がある場合は、ApacheAntを使用するかもしれません。

    バージョン管理データ

    テーブルを4つのカテゴリに分けます:

    • R:参照データ。アプリケーションサイトが実際にシステムを使用する前に提供する必要のあるデータ。たとえば、総勘定元帳の勘定コード。参照データは、稼働後にほとんど変更されず、サイズが継続的に大きくなることはありません。コンテンツは、アプリケーションが使用されるサイトのビジネスモデルを反映しています。
    • T:トランザクションデータ;アプリケーションの使用中にサイトが登録、変更、および削除するデータ。たとえば、総勘定元帳のエントリ。トランザクションデータは0から始まり、継続的に増加します。会社の収益が2倍になると、トランザクションデータも2倍になります。
    • S:シードされたデータ。データはサイトのユーザーによって維持されていませんが、開発者によって提供および維持されています。基本的に、これはデータに変換されたコードです。たとえば、「F」は「女性」を表します。シードされたデータのエラーは、システムエラーにつながる可能性があります。
    • O:残り(技術的であるため理想的には必要ありませんが、一部のシステムでは一時テーブルAまたはスクラッチテーブルBが必要です)。

    カテゴリ'S'(シードデータ)のテーブルの内容は、バージョン管理下に置かれます。通常、これらをケースツールにメタデータとして登録し、「データセット」という名前を付けますが、たとえばMicrosoftExcelやコードを使用することもできます。

    たとえば、Excelでは、シードされたデータの行のリストがあります。列Aに、=B..&"|"&C..& "|" & ... これはすべてを連結し、ローダーツールによるロードに適したものにします。

    たとえば、コードでは、次のような呼び出しが発生する可能性があります。

    verifySeed('TABLE_A', 'CODE', 'VALUE')
    

    Excelをバージョン管理下に置くのは少し難しいため、複数のユーザーが同時にコンテンツを変更できます。コードを使用したアプローチは非常に簡単です。

    廃止されたシードデータを削除する機能も追加することを忘れないでください。たとえば、廃止されたシードデータを明示的に一覧表示したり、テーブルに存在するが最後のインストールでは変更されていないすべてのシードデータを自動的に削除したりします。



    1. 1つのカテゴリを除くすべてのカテゴリから投稿を取得する

    2. WorkbenchMySQLクライアントを使用してデータベースに接続する方法

    3. MySQL:2つの結果セットの違い

    4. MySQLデバッグツールはクエリを遅くしますか?