

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Aurora PostgreSQL 互換の異種データベースとの統合
<a name="heterogeneous-databases"></a>

Aurora PostgreSQL 互換をリモート SQL Server データベースと統合するには、表形式データストリーム外部データラッパー (`tds_fdw`) 拡張機能を使用します。`tds_fdw` 拡張機能を使用すると、フェデレーティッドクエリ機能を実装して、オンプレミスと [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) で管理またはセルフマネージドの両方のリモート SQL Server ベースのデータベースとやり取りできます。`tds_fdw` 拡張機能は、現在サポートされているすべてのバージョンの Amazon RDS for PostgreSQL および Aurora PostgreSQL 互換で使用できます。

## tds\_fdw ユースケースと大まかなステップ
<a name="tds-fdw"></a>

Aurora PostgreSQL 互換を SQL Server などの異種データベースと統合すると、次のユースケースがサポートされます。
+ **ハイブリッドアーキテクチャ** - 組織には、Aurora PostgreSQL 互換と共存して統合する必要がある既存の SQL Server データベースがある場合があります。このような場合、Aurora PostgreSQL 互換はハイブリッドアーキテクチャの一部であり、異種データベースとやり取りしてデータを交換したり、特定のオペレーションを実行したりできます。この統合により、組織は既存の投資を維持しながら、さまざまなデータベースプラットフォームの強みを活用できます。
+ **レポートと分析** ‒ Aurora PostgreSQL 互換をレポートまたは分析データベースとして使用できます。Oracle データベースや SQL Server データベースなど、複数のソースからのデータを統合できます。このユースケースは、組織が特定のビジネスユニットやユースケースに合わせた特殊なレポートデータベースやデータマートを作成するシナリオで一般的です。

Aurora PostgreSQL 互換で`tds_fwd`拡張機能を設定するには、以下の大まかなステップを使用します。

1. PostgreSQL クライアントを使用して Aurora PostgreSQL 互換クラスターに接続し、`tds_fdw`拡張機能を作成します。

   ```
   CREATE EXTENSION tds_fdw;
   ```

   この拡張機能は、リモート SQL Server データベースからローカルテーブルであるかのようにデータにアクセスしてクエリを実行する機能を提供します。

1. 接続先のリモート SQL Server または TDS 互換データベースを表すサーバーオブジェクトを作成します。

1. Aurora PostgreSQL 互換がリモート SQL Server データベースに接続できるように、必要なセキュリティグループとネットワーク設定が設定されていることを確認します。

   リモートデータベースがオンプレミスでホストされている場合は、VPN または AWS Direct Connect 接続の設定が必要になる場合があります。

   次のコマンドを実行します。

   ```
   CREATE SERVER my_remote_sql_server
       FOREIGN DATA WRAPPER tds_fdw
       OPTIONS (
           servername 'your_server_name',
           port '1433',
           instance 'your_instance_name'
       );
   ```

1. Aurora PostgreSQL 互換ユーザーをリモート SQL Server または TDS 互換データベースのユーザーにマッピングするユーザーマッピングを定義します。

   ```
   CREATE USER MAPPING FOR postgres
       SERVER my_remote_sql_server
       OPTIONS (
           username 'your_sql_server_username',
           password 'your_sql_server_password'
       );
   ```

1. リモート SQL Server または TDS 互換データベースのテーブルまたはビューを表す外部テーブルを作成します。

   ```
   CREATE FOREIGN TABLE sql_server_table (
       column1 INTEGER,
       column2 VARCHAR(50)
   ) SERVER my_remote_sql_server
       OPTIONS (
           schema_name 'your_schema_name',
           table_name 'your_table_name'
       );
   ```

1. SQL クエリに基づいて外部テーブルを作成します。

   ```
   CREATE FOREIGN TABLE mssql_people ( empno INT NOT NULL , ename VARCHAR(10) NULL, dept INT) SERVER my_remote_sql_server OPTIONS (  query 'SELECT empno, ename, dept FROM dbo.emp');
   ```

1. Aurora PostgreSQL 互換の他のテーブルをクエリする場合と同様に、外部テーブルをクエリします。

   ```
   SELECT * FROM sql_server_table; 
   SELECT * FROM mssql_people; -- Query based on table
   ```

1. SQL Server から PostgreSQL にテーブルをインポートします。

   ```
   IMPORT FOREIGN SCHEMA dbo LIMIT TO (emp) FROM SERVER
                           my_remote_sql_server INTO public_fdw;
   ```

1. クエリプランを検証するには、 を実行します`EXPLAIN SELECT`。

   ```
   EXPLAIN SELECT * FROM mssql_people;
   ```

**注記**  
データ操作言語 (DML) オペレーションは、 `tds_fdw`拡張機能では利用できません。システムは、異なるデータベースエンジン間での DML オペレーションの実行をサポートしていません。`INSERT`、`UPDATE`、、および `DELETE``TRUNCATE TABLE`は、リモート SQL サーバーでは成功しません。