記事
· 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 に移行するというのは、データベースしかなかった状態からデータプラットフォームに移行できるということです。

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