すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ネットワークチャネルを介したデータベース間のデータの照会

最終更新日:Sep 26, 2024

PolarDB for PostgreSQL クラスターは、ネットワークチャネル機能を提供します。 ネットワークチャネルを使用して、外部データラッパー (FDW) 外部テーブル、dblink、データベースリンクなどのさまざまな方法を使用してできます。 このトピックでは、ネットワークチャネルを介してデータベース間でデータをクエリする方法について説明します。

前提条件

  • ソースクラスターとデスティネーションクラスターが作成されます。 詳細については、「クラスターの作成」をご参照ください。

説明

PolarDB for PostgreSQL のネットワークチャネル機能は、次のモードをサポートしています。

  • ソースはPolarDB for PostgreSQL クラスターです。 移行先はPolarDB for PostgreSQLまたはPolarDB for PostgreSQL (Compatible with Oracle) クラスターです。

  • ソースはPolarDB for PostgreSQL クラスターです。 移行先は、Elastic Compute Service (ECS) インスタンスでホストされている自己管理型PostgreSQLデータベースです。

  • データベースは、ソースおよび宛先クラスターに作成されます。 詳細については、「データベース管理」をご参照ください。

  • ターゲットクラスタデータベースにテーブルが作成されます。

制限事項

移行先クラスターのデータは、移行元クラスターからのみ照会できます。 移行元クラスターのデータを移行先クラスターからクエリすることはできません。

手順

  1. ネットワークチャネルを作成します。

    次のいずれかの方法を使用して、PolarDB for PostgreSQL のネットワークチャネルを作成できます。

  2. ソースクラスターに接続します。 詳細については、「PolarDB For PostgreSQLクラスターへの接続」をご参照ください。

  3. さまざまな方法を使用して、ネットワークチャネルを介してソースクラスタから宛先クラスタのデータを照会します。

次の図に示すように、コンソールでネットワークチャネル名とネットワークチャネルに対応するターゲットクラスターを表示できます。

image

FDW外部テーブルを使用してデータにアクセスする

重要

postgres_fdw拡張子が必要です。 CREATE EXTENSIONステートメントを使用して、拡張機能を作成します。

1. ソースクラスターで、外部データラッパーpostgres_fdwを使用するサーバーmyserverを作成します。 channel_nameの値をchltestに設定します。これはネットワークチャネルの名前です。 dbnameの値をfoodbに設定します。これは、移行先クラスターでアクセスするデータベースの名前です。

CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (channel_name 'chltest', dbname 'foodb');

2. ソースクラスターで、postgres_fdwのユーザーbobとサーバーmyserverのユーザーマッピングを作成します。 OPTIONSのuserパラメーターをbobに設定します。これは、ターゲットクラスターにアクセスするユーザーです。

CREATE USER MAPPING FOR bob SERVER myserver OPTIONS (user 'bob', password 'mypassword');

3. ソースクラスターに外部テーブルforeign_tableを作成し、サーバーmyserverからテーブルにアクセスします。

CREATE FOREIGN TABLE foreign_table (
 id integer NOT NULL,
 data text
)SERVER myserver
OPTIONS (table_name 'test');

4. ターゲットデータベースにテーブルテストを作成し、テストデータをテーブルに挿入します。 実行するステートメントは、次のとおりです。

CREATE TABLE test(id integer NOT NULL, data text);
INSERT INTO test VALUES(1,'test');

5. ソースクラスターに接続し、次のクエリを実行します。

SELECT * FROM foreign_table
id | data 
----+------
 1 | test
(1 row)

詳細については、「データベースリンクと外部テーブル」をご参照ください。