これは、市場に出回っている主なデータベースから 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 デスクトップで、インスタンスに問題がないことを確認します。
移行するデータについて
最初の 2 つのパートでは、販売データベースを操作しました。 パート III では、DB2 サンプルデータベース(より完成度の高い販売データベース)を使用しました。 今回は、AdventureWorks データベースと言うよく知られた MSSQL サンプルデータベースを使用します。 移行されるデータは以下のとおりです。
AdventureWorks スキーマ
AdventureWorks は、スキーマごとに 1 つのビジネストピックを持つ、計 5 つのビジネストピックが含まれる多様なサンプルデータベースです。 したがって、人事関連、個人情報(顧客と従業員)、生産関連、購買関連、および販売のトピックを処理するためのテーブルが存在します。 |
SQL Server から IRIS への移行プロセスには、6 つのスキーマと 70 個のテーブルが含まれます。 テーブルの詳細は以下のとおりです。
移行先は、InterSystems IRIS データベースの USER ネームスペース内にある dc_test スキーマです。
SQL Server から IRIS に移行するためのオープンソースツール: DBeaver
DBeaver は、市場に出回っている主要データベース製品に接続し、データオブジェクトを作成、ドロップ、選択、更新、および削除するために使用するデータベースツールです。 https://openexchange.intersystems.com/package/DBeaver からダウンロードできます。 インストール手順に従って、この優れた製品をノートパソコンかデスクトップにインストールしてください。
DBeaver は、データベースのメーカーやバージョンが異なる場合であっても、データベース接続間でデータを移行するために使用できます。
DBeaver を使って、ソースデータベースとターゲットデータベースを接続
移行するデータベース接続を設定します。
DBeaver への MS SQL 接続を設定するには:
1. DBeaver で、[ファイル]>[新規作成]に移動します。 2. [データベース接続]を選択して、[次へ]をクリックします。
3. [SQL]タブ >[SQL Serveer]を選択して、[次へ]をクリックします。
4. 以下の図に示されるように、SQL Server 接続フィールドに入力します。
● ホスト: localhost● ポート: 1433● データベース: AdventureWorks● ユーザー名: SA● パスワード: MSSQLServer@2019● [OK]をクリックします。 |
DBeaver への InterSystems IRIS 接続を設定するには:
1. DBeaver で、[ファイル]>[新規作成]に移動します。 2. [データベース接続]を選択して、[次へ]をクリックします。
3. [SQL]タブ >[InterSystems IRIS]を選択して、[次へ]をクリックします。
4. DBeaver が InterSystems IRIS ドライバーのダウンロードを要求したら、[はい]または[OK]を押します。
5. 以下の図に示されるように、InterSystems IRIS 接続のフィールドに入力します。
● ホスト: localhost● データベース/スキーマ: user● ユーザー名: _SYSTEM● パスワード: SYS● [テスト接続]と[OK]をクリックします。 |
接続(AdventureWorks と user)がデータベースナビゲーターで利用できるようになります。
移行を行う
移行を行うには、以下の手順に従います。
1. SQL Server 接続 > スキーマ > HumanResources > テーブルを展開し、すべてのテーブルを選択します。 以下の図のように、選択したテーブルを右クリックして、[データをエクスポート]を選択します。
2. 以下の図のようにデータベースを選択して、[次へ]をクリックします。
3. [選択]ボタンをクリックします。
4. dc_test を選択して、[OK]をクリックします。
5. 一部の行には 16 文字以上が含まれるため、rowguid フィールドのデータ型を varchar(16) から varchar(50) に変更する必要があります。
AdventureWorks.HumanResources.Employee テーブルを展開し、rowguid フィールドを選択して[列…]をクリックします。
7. ターゲットの型を VARCHAR(16) から VARCHAR(50) に変更して、[OK]をクリックします。
8. 他のスキーマに同じフィールドを持つ他のすべてのテーブルに対して同じプロセスを繰り返します。
9. ターゲットのデータ型が変更されたら、[次へ]をクリックします。
10. [フェッチサイズ]を 1000000 に設定して、[次へ]をクリックします。
11. データ読み込み設定のデフォルト値を受け入れて、[次へ]をクリックします。
12. [確認]で[続行]をクリックします。
13. これで、データベースナビゲーターで、InterSystems IRIS dc_test スキーマ内のすべての SQL Server テーブルが表示されるようになりました。
他のスキーマに対しても、この移行手続きを繰り返します。
テーブルの移行プロセスは非常に単純ですが、ビュー、関数、トリガー、およびストアドプロシージャについては、ObjectScript または SQL を使って SQL ソースコードを書き直す必要があります。