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

IRIWorkbenchでのインクリメンタルデータレプリケーション

    NextForm(DBエディション)またはVoracity用のIRI Workbench GUIでのデータ複製に関する最初の記事では、データがOracleから2つのターゲットに移動するときにデータをコピーおよび変換する方法を示しました。この記事では、本番テーブルとバックアップテーブルを別々のデータベースで段階的に同期する方法を示します。

    この場合、本番データベースはOracle、バックアップデータベースはMySQLであり、テーブルの名前は両方ともSG_TRANSACTIONSです。口座番号、取引の種類、取引日、および列名がACCT_NUM、TRANSTYPE、TRANS_DATE、およびTRANS_AMOUNTの取引金額を含む取引行があります。

    IRIWorkbench内のSQLファイルでステートメントを定義して実行することによってテーブルを作成することもできることに注意してください。

    ウィザードを実行する

    IRI Workbenchには、あるテーブルから別のテーブルに行をコピーする移行ジョブスクリプトを作成するために使用できるウィザードがあります。この場合、データをORACLEテーブルSG_TRANSACTIONSからMySQLテーブルSG_TRANSACTIONSに複製します。

    以前にプロジェクトReplicationを作成しました。 プロジェクトエクスプローラーでそのフォルダをクリックする必要があります ウィザードを実行する前にプロジェクトを強調表示します。これにより、ウィザードがジョブスクリプトをそのフォルダーに保存するようになります。レプリケーションジョブは、NextFormメニューから利用できるウィザードを介して作成されます ツールバーで。

    ウィザードを実行するには、NextFormアイコンの横にある矢印をクリックします。前回の記事では、新しい再フォーマットジョブを使用したことに注意してください ターゲットの1つがフィルタリング、マスク、および再フォーマットされたため、ウィザード。このケースはストレートスルーレプリケーションであるため、新しいシングルソース移行ジョブを使用します 代わりにウィザード。

    ウィザードの最初の画面であるジョブ仕様ファイルフォルダを確認します フィールドには、(プロジェクト名)値としてレプリケーションがあります。 ファイル名 フィールドに、作成するジョブスクリプトの名前を入力します。私はそれをSG_Transaction_Transferと呼びました。 スクリプトの作成を選択します ラジオボタンをクリックし、次へを選択します 単一ソースの移行に移動します ウィンドウ。

    ソース情報の下 、参照を選択します ソースの横にあるボタン 分野。次に、 ODBCを選択します データソースのラジオボタン ウィンドウをクリックし、参照をクリックします ボタン。

    ODBCテーブルの選択 ウィンドウで、 DSNを選択します ドロップダウンリストから。次に、テーブル名を選択します OKをクリックします 。 ODBCは、ジョブスクリプトを使用してデータを移動するときに、ソースデータベーステーブルとターゲットデータベーステーブルに接続するために使用されます。 OKをクリックします もう一度単一ソースの移行に戻ります ウィンドウ。


    ソースメタデータを参照または検出する

    すべてのIRIプログラムには、標準データ定義ファイル(DDF)形式のデータソースとターゲットのメタデータレイアウトが必要です。これらのレイアウトは通常、一度作成され、一元的に保存され、マッピングとモデルの参照として使用されます。

    メタデータファイルがすでに作成されている場合は、ソース情報の下にあります 、参照をクリックします メタデータの横にあるボタン 分野。 メタデータを開く ウィンドウで、一致するアイテムでメタデータファイルを選択します SG_TRANSACTIONSの列を定義するボックス テーブル。次に、[ OK]をクリックします 単一ソースの移行に戻るには ウィンドウ。

    ここでメタデータファイルを作成する必要がある場合は、検出を選択します ボタン。これにより、セットアップに移動します オプション 窓。フォルダが/プロジェクト名であることを確認します /metadata。 ファイル名 フィールドにメタデータファイルの名前を入力し、次へをクリックします 。 データソースの識別 ウィンドウで、フィールドが正しく入力されていることを確認し、次へをクリックします。 フィールドデータビューアおよびエディタに移動します ウィンドウ。

    ウィンドウの上半分には、列名と、テーブル内のレコードのサンプル(存在する場合)が表示されます。下半分には名前フィールドがあります ジョブスクリプトで使用される、IRIの同等のデータタイプ 元のデータベースのソースタイプ 、および序数の位置 フィールド(列)の。 完了をクリックします 。


    これで、単一ソースの移行に戻りました。 ウィンドウ。

    ターゲットを定義する

    ターゲット情報の下 、参照を選択します ターゲットのフィールドの横にあるボタン 。さて、データターゲット ウィンドウで、 ODBCを選択します ラジオボタンを押して、参照をクリックします ODBCの横にあるボタン 分野。次に、出力 DSNを選択します およびテーブル名 (MYSQLとSG_Transactionsをツイスター)ODBCテーブルの選択 窓。 ソースからメタデータをコピーするのボックスを必ず選択してください 。 [OK]をクリックします OKをクリックします もう一度。

    必要な情報はすべて、単一ソースの移行に含まれています。 窓。 完了をクリックします 。


    NextForm制御言語スクリプトSG_Transaction_Transfer.ncl が作成され、IRIWorkbenchの色分けされた構文対応のテキストエディタで表示できます。

    新しいレコードを複製する

    このスクリプトは、 SG_TRANSACTIONSに存在するすべての行をコピーします OracleのテーブルをMySQLの同じ名前のテーブルに変更します。ただし、最初の実行後は、新しい行をバックアップテーブルにコピーするだけです。これを行うには、ジョブスクリプトの入力セクションに/ QUERYステートメントを追加して、ジョブを実行するたびに(アドホックまたはスケジュールされた)最新の行のみが処理されるようにする必要があります。

    IRI Workbenchエディターからスクリプトを変更するには、スクリプトの本文を右クリックします。 IRIを選択します 、次にソースの編集データソース ダイアログウィンドウで、ソースオプションの編集を選択します 。

    ソースオプションの下部にあります ウィンドウはクエリです 分野。ここに、Oracleテーブルから最新の行のみを選択するSQLクエリステートメントを追加します。これは月末のプロセスであると想定します。以下のQUERYステートメントは、1か月の間隔で行をフィルタリングしますが、任意の間隔を選択できます。スクリプトで特定の日付を使用する代わりに、環境変数を使用して間隔を指定することもできます。

    select * from NIGHTLY.SG_TRANSACTIONS where to_char(TRANS_DATE, 'YYYY-MM-DD') > 
    '2016-11-30' AND  (to_char(TRANS_DATE, 'YYYY-MM-DD') < '2017-01-01')"

    次に、[ OK]をクリックします 、次に終了 ウィザードで作成した元のジョブスクリプトを更新して保存し、その中に新しい/QUERYステートメントを追加します。

    スクリプトを初めて実行するときは、すべてのレコードをコピーする必要があるため、/QUERYステートメントをコメントアウトする必要があります。その後、/ QUERYステートメントを使用して実行し、バックアップテーブルにまだコピーされていない日付間隔から行を複製します。

    このジョブは、NextForm DBエディション、Voracity、またはCoSort(sortcl)実行可能ファイルがライセンスされているGUIまたはコマンドラインから実行できます。

    プロダクションテーブルの行のサンプルは次のとおりです。

    また、12月の月末バックアップを実行する前のバックアップテーブルの行のサンプルを次に示します。したがって、この表の行は現在、11月末までしか通過しません。

    / QUERYステートメントを含むレプリケーションジョブを実行した後、12月のレコードのみがバックアップテーブルに追加されます。本番テーブルに1月のレコードが1つありますが、その行の日付値が指定された範囲外であるため、このレコードはバックアップテーブルにコピーされていないことに注意してください。

    以下のジョブに示すように、各ターゲットに列レベルのマスキング機能を追加することもできます。

    OracleとMongoDB間のレプリケーションのこの例を参照してください。 1回限りまたは定期的にデータを複製する方法については、[email protected]までメールでお問い合わせください。


    1. SQLiteOpenHelperを使用してAndroidでsqliteデータベースをアタッチする

    2. 配列要素の並べ替え

    3. SQLite式ベースのインデックス

    4. Neo4j-Cypherを使用してノードを削除する