Amazon Redshift でフェデレーティッドデータにアクセスする際の考慮事項
一部の Amazon Redshift 機能は、フェデレーテッドデータへのアクセスをサポートしていません。関連する制限事項と考慮事項については、以下を参照してください。
Amazon Redshift で横串検索を使用する場合の制約事項と考慮事項を次に示します。
フェデレーテッドクエリは、外部データソースへの読み取りアクセスをサポートします。外部データソースにデータベースオブジェクトを書き込んだり、作成したりすることはできません。
場合によっては、Amazon Redshift とは異なる AWS リージョンにある、Amazon RDS または Aurora DB クラスターデータベースにアクセスすることがあります。このような場合に AWS リージョン間でデータを転送すると、通常はネットワークレイテンシーと料金が発生します。Amazon Redshift クラスターと同じ AWS リージョン内のローカルエンドポイントでの、Aurora グローバルデータベースの使用をお勧めします。Aurora グローバルデータベースは、専用インフラストラクチャを使用して、任意の 2 つの AWS リージョン間でのストレージベースのレプリケーションを行います。この際の平均的なレイテンシーは 1 秒未満です。
Amazon RDS または Aurora DB クラスターにアクセスするコストを考慮してください。例えば、この機能を使用して Aurora DB クラスターにアクセスする場合、Aurora DB クラスターの料金は IOPS に基づきます。
横串検索では、RDS または Aurora DB クラスターから Amazon Redshift にアクセスすることはできません。
横串検索は、Amazon RDS と Amazon RDS の両方または Aurora DB クラスターが使用可能な 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 DB クラスターデータベースのリーダーエンドポイントを使用すると、「無効なスナップショット」エラーが発生する可能性があります。これは、以下のいずれかの方法で回避できます。
特定の Aurora DB クラスターインスタンスエンドポイントを (Aurora クラスターのクラスターエンドポイントの代わりに) 使用してください。この方法では、PostgreSQL データベースからの結果に対して REPEATABLE READ トランザクション分離を使用します。
Aurora DB クラスターのリーダーエンドポイントを使用し、セッションで
pg_federation_repeatable_read
を false に設定します。この方法では、PostgreSQL データベースからの結果に対して READ COMMITTED トランザクション分離を使用します。Aurora DB クラスターのリーダーエンドポイントの詳細については、「Amazon Aurora ユーザーガイド」の「Aurora DB クラスターエンドポイントのタイプ」を参照してください。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 DB クラスターを参照する外部スキーマを作成する場合、Aurora PostgreSQL データベースはバージョン 9.6 以降である必要があります。
Amazon RDS を参照する外部スキーマを作成する場合、Amazon RDS PostgreSQL データベースはバージョン 9.6 以降である必要があります。
Amazon Redshift 外部スキーマは、外部 RDS MySQL または Aurora MySQL のデータベースを参照できます。その場合、次の制限が適用されます。
Aurora DB クラスターを参照する外部スキーマを作成する場合、Aurora MySQL データベースはバージョン 5.6 以降である必要があります。
Amazon RDS を参照する外部スキーマを作成する場合、RDS MySQL データベースはバージョン 5.6 以降である必要があります。