Amazon Redshift でのデータ共有の読み書きに関する考慮事項
注記
データ共有を使用した Amazon Redshift のマルチウェアハウス書き込みは、Amazon Redshift パッチ 186 でのみサポートされています。プロビジョニング済みクラスターについては最新トラックバージョン 1.0.78881 以降、Amazon Redshift Serverless ワークグループについてはバージョン 1.0.78890 以降が対象です。
Amazon Redshift でデータ共有を読み書きする際の考慮事項は次のとおりです。
-
データ共有を通じて共有できるのは SQL UDF のみです。Python と Lambda の UDF はサポートされていません。
-
プロデューサデータベースに特定の照合順序がある場合は、コンシューマーデータベースでも同様な照合順序設定を使用します。
-
Amazon Redshift は、プロデューサークラスターでネストされたユーザー定義の SQL 関数をサポートしません。
-
Amazon Redshift では、インターリーブされたソートキーを持つテーブルと、インターリーブされたソートキーを持つテーブルを参照するビューの共有はサポートされていません。
-
Amazon Redshift は、アクセスの準備と実行の間に同時に DDL が発生した、データ共有オブジェクトへのアクセスをサポートしていません。
-
Amazon Redshift は、データ共有によるストアドプロシージャの共有をサポートしていません。
-
Amazon Redshift は、メタデータシステムビューとシステムテーブルの共有をサポートしていません。
-
コンピューティングタイプ - この機能を使用するには、Serverless ワークグループまたは ra3.large、ra3.xlplus、ra3.4xl、ra3.16xl のいずれかのクラスターが必要です。
-
分離レベル – 他の Serverless ワークグループやプロビジョニング済みクラスターからデータベースへの書き込みを許可するには、データベースの分離レベルをスナップショット分離にする必要があります。
-
マルチステートメントのクエリとトランザクション — トランザクションブロック外のマルチステートメントのクエリは、現在サポートされていません。そのため、dbeaver のようなクエリエディターを使用していて、書き込みクエリが複数ある場合は、クエリを明示的な BEGIN... END トランザクションステートメントでラップする必要があります。
マルチコマンドのステートメントがトランザクションの外部で使用されていて、その最初のコマンドがプロデューサーデータベースへの書き込みである場合、ステートメント内の後続の書き込みコマンドは、そのプロデューサーデータベースに対してのみ許可されます。最初のコマンドが読み取りの場合、後続の書き込みコマンドは、使用対象のデータベースが設定されている場合はそのデータベース、未指定の場合はローカルデータベースに対してのみ許可されます。1 件のトランザクションに含まれる複数の書き込みは、単一のデータベースに対してのみ実行できます。
-
コンシューマーサイズ – データ共有を使用して書き込みを実行するには、コンシューマークラスターに少なくとも 64 以上のスライスが必要です。
-
ビューとマテリアライズドビュー – データ共有のデータベースのビューまたはマテリアライズドビューを作成、更新、変更することはできません。
-
セキュリティ – 列レベル (CLS)、行レベル (RLS)、動的データマスキング (DDM) などのセキュリティポリシーをデータ共有オブジェクトにアタッチまたは削除することはできません。
-
管理可能性 – コンシューマーウェアハウスは、データ共有オブジェクトや、データ共有オブジェクトを参照するビューを別のデータ共有に追加することはできません。コンシューマーは、既存のデータ共有を変更または削除することもできません。
-
Truncate オペレーション – データ共有書き込みは、リモートテーブルのトランザクションの切り捨てをサポートします。これは、自動コミットであるクラスターでローカルに実行する切り捨てとは異なります。SQL コマンドの詳細については、「TRUNCATE」を参照してください。