データ移行ツール - パート IV: Microsoft SQL Server から IRIS
これは、市場に出回っている主なデータベースから InterSystems IRIS への移行に関する連載第 4 回目の記事です。 このパートでは、Microsoft SQL Server から移行するための手順を説明します。 前の記事で説明したとおり、現時点ではいくつかの移行オプションが存在しますが、最も一般的なオプションは、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 プロジェクトをダウンロードできます。
ソースデータベース: サンプルデータベースを含む SQL Server データベースの Docker インスタンス。
2. ターゲットデータベース: ソースデータベースを受け取る準備ができたスキーマを含む InterSystems IRIS データプラットフォームの Docker インスタンス。
サンプルを取得して実行するには、以下の手順に従います。
1. https://github.com/yurimarx/migration-mssql-iris に移動し、[Download]をクリックして git リポジトリに移動します。
2. プロジェクトを Clone します。git clone https://github.com/yurimarx/migration-mssql-iris.git
3. migration-mssql-iris プロジェクトフォルダに移動します。
4. ビルドを実行します。docker-compose build
5. コンテナを実行します: docker-compose up -d
6. Docker デスクトップで、インスタンスに問題がないことを確認します。
.png)
移行するデータについて
最初の 2 つのパートでは、販売データベースを操作しました。 パート III では、DB2 サンプルデータベース(より完成度の高い販売データベース)を使用しました。 今回は、AdventureWorks データベースと言うよく知られた MSSQL サンプルデータベースを使用します。 移行されるデータは以下のとおりです。
AdventureWorks スキーマ
SQL Server から IRIS への移行プロセスには、6 つのスキーマと 70 個のテーブルが含まれます。 テーブルの詳細は以下のとおりです。
.png)
.png)
.png)
.png)
.png)
.png)
移行先は、InterSystems IRIS データベースの USER ネームスペース内にある dc_test スキーマです。
SQL Server から IRIS に移行するためのオープンソースツール: DBeaver
DBeaver は、市場に出回っている主要データベース製品に接続し、データオブジェクトを作成、ドロップ、選択、更新、および削除するために使用するデータベースツールです。 https://openexchange.intersystems.com/package/DBeaver からダウンロードできます。 インストール手順に従って、この優れた製品をノートパソコンかデスクトップにインストールしてください。
DBeaver は、データベースのメーカーやバージョンが異なる場合であっても、データベース接続間でデータを移行するために使用できます。
DBeaver を使って、ソースデータベースとターゲットデータベースを接続
移行するデータベース接続を設定します。
DBeaver への MS SQL 接続を設定するには:
1. DBeaver で、[ファイル]>[新規作成]に移動します。 2. [データベース接続]を選択して、[次へ]をクリックします。
.png)
3. [SQL]タブ >[SQL Serveer]を選択して、[次へ]をクリックします。
.png)
4. 以下の図に示されるように、SQL Server 接続フィールドに入力します。
DBeaver への InterSystems IRIS 接続を設定するには:
1. DBeaver で、[ファイル]>[新規作成]に移動します。 2. [データベース接続]を選択して、[次へ]をクリックします。
.png)
3. [SQL]タブ >[InterSystems IRIS]を選択して、[次へ]をクリックします。
.png)
4. DBeaver が InterSystems IRIS ドライバーのダウンロードを要求したら、[はい]または[OK]を押します。
5. 以下の図に示されるように、InterSystems IRIS 接続のフィールドに入力します。
接続(AdventureWorks と user)がデータベースナビゲーターで利用できるようになります。
.png)
移行を行う
移行を行うには、以下の手順に従います。
1. SQL Server 接続 > スキーマ > HumanResources > テーブルを展開し、すべてのテーブルを選択します。 以下の図のように、選択したテーブルを右クリックして、[データをエクスポート]を選択します。
.png)
2. 以下の図のようにデータベースを選択して、[次へ]をクリックします。
.png)
3. [選択]ボタンをクリックします。
.png)
4. dc_test を選択して、[OK]をクリックします。
.png)
5. 一部の行には 16 文字以上が含まれるため、rowguid フィールドのデータ型を varchar(16) から varchar(50) に変更する必要があります。
AdventureWorks.HumanResources.Employee テーブルを展開し、rowguid フィールドを選択して[列…]をクリックします。
.png)
7. ターゲットの型を VARCHAR(16) から VARCHAR(50) に変更して、[OK]をクリックします。
.png)
8. 他のスキーマに同じフィールドを持つ他のすべてのテーブルに対して同じプロセスを繰り返します。
9. ターゲットのデータ型が変更されたら、[次へ]をクリックします。
.png)
10. [フェッチサイズ]を 1000000 に設定して、[次へ]をクリックします。
.png)
11. データ読み込み設定のデフォルト値を受け入れて、[次へ]をクリックします。
.png)
12. [確認]で[続行]をクリックします。
.png)
13. これで、データベースナビゲーターで、InterSystems IRIS dc_test スキーマ内のすべての SQL Server テーブルが表示されるようになりました。
.png)
他のスキーマに対しても、この移行手続きを繰り返します。
テーブルの移行プロセスは非常に単純ですが、ビュー、関数、トリガー、およびストアドプロシージャについては、ObjectScript または SQL を使って SQL ソースコードを書き直す必要があります。