Published on InterSystems Developer Community (https://community.intersystems.com)

ホーム > データ移行ツール - パート I: Postgres から IRIS

記事
Toshihiko Minamoto · 2022年6月7日 7m read

データ移行ツール - パート I: Postgres から IRIS

Postgres から IRIS にデータとデータスキーマを転送または移行する必要がある場合があります。 これを現時点で実行するにはいくつかのオプションがありますが、最も一般的なオプションは、DBeaver(https://openexchange.intersystems.com/package/DBeaver)または SQLGateway を使用する 2 つの方法です。 最初のオプションはこの記事で紹介しますが、2 つ目のオプションは Robert Cemper が書いた「SQLgateway を使ったデータベース移行」(https://community.intersystems.com/post/db-migration-using-sqlgateway)という優れた記事で紹介されています。この記事では、DBeaver を使った移行の実行方法を説明します。

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

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

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

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

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

移行するデータについて

移行されるデータは以下の通りです。

PostgreSQL から IRIS への移行プロセスによって以下が移行されます。

  • 8 個のテーブル
  • sale の 1000000 行
  • users の 250000 行
  • product の 300 行
  • store の 500 行
  • country の 100 行
  • city の 30 行
  • status_name の 5 行

移行先は、InterSystems IRIS データベースの USER ネームスペース内にある dc_test スキーマです。

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

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

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

移行するデータベース接続を設定します。
DBeaver への PostgreSQL 接続を設定するには:

  1. DBeaver で、[ファイル]>[新規作成]に移動します。

  2. [データベース接続]を選択して、[次へ]をクリックします。

  1. [SQL]タブ >[PostgreSQL]を選択して、[次へ]をクリックします。
  1. 以下の図のように、PostgreSQL 接続のフィールドに入力します。
ホスト: localhost、ポート: 5438、データベース: postgres、ユーザー名: postgres、パスワード: postgres、と入力し、[終了]をクリックします。

DBeaver への InterSystems IRIS 接続を設定するには:

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

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

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

ホスト: localhost、データベース/スキーマ: user、ユーザー名: _SYSTEM、パスワード: SYS、と入力し、[テスト接続]と[終了]をクリックします。
  1. 接続(postgres と user)がデータベースナビゲーターで利用できるようになります。

移行を行う

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

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

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

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

5. ターゲットデータベースのデータ型構成を変更する必要があります。IRIS と PostgreSQL では、整数値と10進値で異なるデータ型を使用するためです。
public.country テーブルを展開し、最初のフィールド(country_id)を選択して[列...]をクリックします。

7. [ターゲットの型]を int4 から integer に変更し、[OK]をクリックします。

8. 以下のテーブルでこのプロセスを繰り返します。

a. public.product
b. public.status_name
c. public.users
d. public.city(city_id と country_id の型を integer に変更します)
e. public.store(store_id と city_id の型を integer に変更します)
f. public.sale(amount の型を double に、product_id、user_id、store_id の型を integer に変更します)

g. public.order_status(status_name_id を integer に変更します)

9. ターゲットデータ型の変更が完了したら、[次へ]をクリックします。

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

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

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

13. データベースナビゲーターで、InterSystems IRIS dc_test スキーマ内にすべての PostgreSQL テーブルが表示されます。

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

IRIS に移行するメリット

以下は、IRIS で得られる機能を要約したリストです。

  • API 管理
  • 視覚的レポート(IRIS レポート)
  • AutoML(IntegratedML)
  • 多言語アプリケーション/データ開発(Python、Java、.NET、JavaScript)
  • ESB
  • BI/分析
  • NLP
  • マイクロサービス開発
  • マルチモデルデータベース(SQL、JSON、分析キューブ、オブジェクト指向)
  • シャーディング

まとめると、IRIS に移行するというのは、データベースしかなかった状態からデータプラットフォームに移行できるということです。

# データのインポートとエクスポート #InterSystems IRIS

ソースURL:https://jp.community.intersystems.com/post/%E3%83%87%E3%83%BC%E3%82%BF%E7%A7%BB%E8%A1%8C%E3%83%84%E3%83%BC%E3%83%AB-%E3%83%91%E3%83%BC%E3%83%88-i-postgres-%E3%81%8B%E3%82%89-iris