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データベースです。
データベースは、ソースおよび宛先クラスターに作成されます。 詳細については、「データベース管理」をご参照ください。
ターゲットクラスタデータベースにテーブルが作成されます。
制限事項
移行先クラスターのデータは、移行元クラスターからのみ照会できます。 移行元クラスターのデータを移行先クラスターからクエリすることはできません。
手順
ネットワークチャネルを作成します。
次のいずれかの方法を使用して、PolarDB for PostgreSQL のネットワークチャネルを作成できます。
ソースクラスターに接続します。 詳細については、「PolarDB For PostgreSQLクラスターへの接続」をご参照ください。
さまざまな方法を使用して、ネットワークチャネルを介してソースクラスタから宛先クラスタのデータを照会します。
次の図に示すように、コンソールでネットワークチャネル名とネットワークチャネルに対応するターゲットクラスターを表示できます。

例
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)詳細については、「データベースリンクと外部テーブル」をご参照ください。