記事
· 2022年9月20日 6m read

データ移行ツール パート III: DB2 から IRISへ

これは、市場に出回っている主なデータベースから InterSystems IRIS への移行に関する連載第 3 回目の記事です。 このパートでは、DB2 からの移行手続きを説明します。前の記事で説明したとおり、現時点ではいくつかの移行オプションが存在しますが、 最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。

移行プロセス用のサンプルデータを取得

GitHub では、2 つのデータベースをビルドして実行する Docker Compose プロジェクトをダウンロードできます。

  • ソースデータベース: サンプルデータベースを含む DB2 データベースの Docker インスタンス。
  • ターゲットデータベース: ソースデータベースを受け取る準備のできたスキーマを含む InterSystems IRIS データプラットフォームの Docker インスタンス。

サンプルを取得して実行するには、以下の手順に従います。

  1. git リポジトリの https://github.com/yurimarx/migration-db2-iris に移動します。
  2. プロジェクトを Clone します。git clone https://github.com/yurimarx/migration-db2-iris.git  
  3. migration-db2-iris プロジェクトフォルダに移動します。
  4. ビルドを実行します: docker-compose build
  5. コンテナを実行します: docker-compose up -d
  6. Docker デスクトップで、インスタンスに問題がないことを確認します。

移行するデータについて

最初の 2 つのパートでは、販売データベースを操作しました。 DB 2 の場合は、インストールにサンプルデータベース(より完全な販売データベース)が含まれているため、この記事ではそのデータベースを使用します。 移行されるデータは以下のとおりです。

DB 2 から IRIS への移行プロセスには、22 個のテーブルが含まれます。
移行先は、InterSystems IRIS データベースの USER ネームスペース内にある dc_test スキーマです。

DB2 から IRIS に移行するためのオープンソースツール: DBeaver

DBeaver は、市場に出回っている主要データベース製品を使用する際に、データオブジェクトを接続、作成、ドロップ、選択、更新、および削除するデータベースツールです。 https://openexchange.intersystems.com/package/DBeaver からダウンロードできます。 インストール手順に従って、この優れた製品をノートパソコンかデスクトップにインストールしてください。
DBeaver は、データベースのメーカーやバージョンが異なる場合であっても、データベース接続間でデータを移行するために使用できます。

DBeaver を使って、ソースデータベースとターゲットデータベースを接続

移行するデータベース接続を設定します。
DBeaver への DB2 接続を設定するには:
1.    DB2 への初回接続には、5~10 分かかります。 これは、Docker インスタンスが作成された後に DB2 スクリプトがサンプルを構築するために必要な時間です。
2.    DBeaver で、[ファイル]>[新規作成]に移動します。 3.    [データベース接続]を選択して、[次へ]をクリックします。

4.    [SQL]タブ >[DB2 LUW]を選択して、[次へ]をクリックします。

5.    以下の図に示されるように、DB2 接続のフィールドに入力します。

●    ホスト: localhost●    ポート: 50000●    データベース: sample●    ユーザー名: db2inst1●    パスワード: password●    [終了]をクリックします。

DBeaver への InterSystems IRIS 接続を設定するには:
1.    DBeaver で、[ファイル]>[新規作成]に移動します。 2.    [データベース接続]を選択して、[次へ]をクリックします。

3.    [SQL]タブ >[InterSystems IRIS]を選択して、[次へ]をクリックします。

4.    DBeaver が InterSystems IRIS ドライバーのダウンロードを要求したら、[はい]または[OK]を押します。
5.    以下の図に示されるように、InterSystems IRIS 接続のフィールドに入力します。

●    ホスト: localhost●    データベース/スキーマ: user●    ユーザー名: _SYSTEM●    パスワード: SYS●    [テスト接続]と[終了]をクリックします。

接続(sample と user)がデータベースナビゲーターで利用できるようになります。

移行を行う

移行を行うには、以下の手順に従います。
1.    sample 接続(DB2 接続)> public を展開し、すべてのテーブルを選択します。 以下の図のように、選択したテーブルを右クリックして、[データをエクスポート]を選択します。

2.    以下の図のようにデータベースを選択して、[次へ]をクリックします。

3.    [選択]ボタンをクリックします。

4.    dc_test を選択して、[OK]をクリックします。

5.    IRIS と DB2 では、XML 値の格納に異なるデータ型が使用されているため、ターゲットデータベースのデータ型構成を変更する必要があります。
6.    DB2INST1.CATALOG テーブルを展開して CATALOG フィールド(XML フィールド型)を選択し、[列…]をクリックします。

7.    ターゲットの型を LONGVARBINARY から VARCHAR(10000) に変更して、[OK]をクリックします。  

8.    このプロセスを他のテーブルで繰り返します。
a.    CUSTOMER の INFO と HISTORY フィールド
b.    PRODUCT の DESCRIPTION フィールド
c.    SUPPLIERS の ADDR フィールド
d.    PURCHASEORDER の PORDER フィールド
9.    ターゲットデータ型の変更が完了したら、[次へ]をクリックします。

10.    [フェッチサイズ]を 1000000 に設定して、[次へ]をクリックします。

11.    データ読み込み設定のデフォルト値を受け入れて、[次へ]をクリックします。

12.    [確認]で[続行]をクリックします。

13.    これで、データベースナビゲーターで、InterSystems IRIS dc_test スキーマ内のすべての DB2 テーブルが表示されるようになりました。

テーブルの移行プロセスは非常に単純でしたが、 ビュー、関数、トリガー、およびストアドプロシージャについては、ObjectScript か SQL で SQL ソースコードを書き直す必要があります。

@Yuri Marxさんが書いた元の記事へ
ディスカッション (0)2
続けるにはログインするか新規登録を行ってください