Amazon Redshift でフェデレーティッドデータにアクセスする際の考慮事項 - Amazon Redshift

Amazon Redshift でフェデレーティッドデータにアクセスする際の考慮事項

一部の Amazon Redshift 機能は、フェデレーテッドデータへのアクセスをサポートしていません。関連する制限事項と考慮事項については、以下を参照してください。

Amazon Redshift で横串検索を使用する場合の制約事項と考慮事項を次に示します。

  • フェデレーテッドクエリは、外部データソースへの読み取りアクセスをサポートします。外部データソースにデータベースオブジェクトを書き込んだり、作成したりすることはできません。

  • 場合によっては、Amazon Redshift とは異なる AWS リージョンにある、Amazon RDS または Aurora データベースにアクセスすることがあります。このような場合に AWS リージョン間でデータを転送すると、通常はネットワークレイテンシーと料金が発生します。Amazon Redshift クラスターと同じ AWS リージョン内のローカルエンドポイントでの、Aurora グローバルデータベースの使用をお勧めします。Aurora グローバルデータベースは、専用インフラストラクチャを使用して、任意の 2 つの AWS リージョン間でのストレージベースのレプリケーションを行います。この際の平均的なレイテンシーは 1 秒未満です。

  • Amazon RDS または Aurora にアクセスするコストを考慮してください。たとえば、この機能を使用して Aurora にアクセスする場合、Aurora の料金は IOPS に基づきます。

  • 横串検索では、RDS または Aurora から Amazon Redshift にアクセスすることはできません。

  • フェデレーティッドクエリは、Amazon Redshift に加えて Amazon RDS または Aurora のどちらかが使用可能な、AWS リージョンでのみ使用が可能です。

  • フェデレーテッドクエリは現在 ALTER SCHEMA をサポートしていません。スキーマを変更するには、 DROP を使用してから CREATE EXTERNAL SCHEMA を使用します。

  • フェデレーテッドクエリは、同時実行スケーリングでは機能しません。

  • 横串検索は、現在、PostgreSQL の外部データラッパーを介したアクセスをサポートしていません。

  • RDS MySQL または Aurora MySQL への横串検索は、READ COMMITTED レベルでのトランザクション分離をサポートします。

  • 指定しない場合、Amazon Redshift はポート 3306 で RDS for MySQL または Aurora MySQL に接続します。MySQL の外部スキーマを作成する前に、MySQL ポート番号を確認してください。

  • 指定しない場合、Amazon Redshift はポート 5432 で RDS PostgreSQL または Aurora PostgreSQL に接続します。PostgreSQL の外部スキーマを作成する前に、PostgreSQL ポート番号を確認します。

  • MySQL からTIMESTAMPおよびDATEデータ型を取得する場合、ゼロ値はNULLとして扱われます。

  • Aurora データベースリーダーエンドポイントを使用すると、「無効なスナップショット」エラーが発生する可能性があります。これは、以下のいずれかの方法で回避できます。

    • (Aurora クラスターエンドポイントを使用する代わりに) 特定の Aurora インスタンスエンドポイントを使用します。この方法では、PostgreSQL データベースからの結果に対して REPEATABLE READ トランザクション分離を使用します。

    • Aurora リーダーエンドポイントを使用し、セッションについては pg_federation_repeatable_read を false に設定します。この方法では、PostgreSQL データベースからの結果に対して READ COMMITTED トランザクション分離を使用します。Aurora リーダーエンドポイントの詳細については、Amazon Aurora ユーザーガイドの「Aurora エンドポイントのタイプ」を参照してください。pg_federation_repeatable_read の詳細については、「pg_federation_repeatable_read」を参照してください。

PostgreSQL データベースへの横串検索を使用する場合のトランザクションに関する考慮事項を次に示します。

  • クエリがフェデレーテッドテーブルで構成されている場合、リーダーノードはリモートデータベースで READ ONLY REPEATABLE READ トランザクションを開始します。このトランザクションは、Amazon Redshift トランザクションの期間中残ります。

  • リーダーノードは pg_export_snapshot を呼び出してリモートデータベースのスナップショットを作成し、影響を受けるテーブルに対して読み取りロックを行います。

  • コンピューティングノードはトランザクションを開始し、リーダーノードで作成されたスナップショットを使用してリモートデータベースにクエリを発行します。

フェデレーションデータベースのサポート対象バージョン

Amazon Redshift 外部スキーマは、外部 RDS PostgreSQL または Aurora PostgreSQL のデータベースを参照できます。その場合、次の制限が適用されます。

  • Aurora を参照する外部スキーマを作成する場合、Aurora PostgreSQL データベースはバージョン 9.6 以降である必要があります。

  • Amazon RDS を参照する外部スキーマを作成する場合、Amazon RDS PostgreSQL データベースはバージョン 9.6 以降である必要があります。

Amazon Redshift 外部スキーマは、外部 RDS MySQL または Aurora MySQL のデータベースを参照できます。その場合、次の制限が適用されます。

  • Aurora を参照する外部スキーマを作成する場合、Aurora MySQL データベースはバージョン 5.6 以降である必要があります。

  • Amazon RDS を参照する外部スキーマを作成する場合、RDS MySQL データベースはバージョン 5.6 以降である必要があります。