すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:データ共有のためのSQL操作

最終更新日:Sep 24, 2024

インスタンスのデータ共有を有効にした後、SQL文を実行して共有を作成し、共有を使用するための宛先データベースを承認する必要があります。 このトピックでは、AnalyticDB for PostgreSQL in Serverless modeでのデータ共有のためのSQL操作について説明します。

注意事項

  • ソースデータベースとターゲットデータベースが属するインスタンスは、同じリージョン内に存在し、データ共有用に追加されている必要があります。 データ共有用のインスタンスを追加する方法の詳細については、「データ共有の有効化または無効化」をご参照ください。

  • 共有できるのはテーブルのみです。

  • 共有には最大1,000のテーブルを含めることができます。

  • ソースインスタンスに複数の共有が含まれている場合、ターゲットデータベースは1つの共有のみをサブスクライブできます。

  • コピー先データベースは、共有テーブルに対して書き込み操作を実行できません。

  • 共有テーブルではDDL操作は許可されません。 共有テーブルでDDL操作を実行するには、テーブルの共有をキャンセルする必要があります。 詳細については、このトピックの「テーブルの削除」セクションをご参照ください。

共有の作成

次のステートメントは、ソースデータベースに共有を作成するために使用されます。

CREATE DATASHARE <share_name>;

次の表にパラメーターを示します。

パラメーター

説明

share_name

作成する共有の名前。 名前は1 ~ 90文字である必要があります。

例:

CREATE DATASHARE s01;

共有の削除

次のステートメントは、ソースデータベースから共有を削除するために使用されます。 移行元データベースから共有を削除すると、移行先データベースは共有のデータにアクセスできなくなります。

DROP DATASHARE <share_name>;

次の表にパラメーターを示します。

パラメーター

説明

share_name

削除する共有の名前。

例:

DROP DATASHARE s01;

共有に対する権限の付与

次のステートメントは、移行元データベースの共有に対するサブスクリプション権限を移行先データベースに付与するために使用します。 ターゲットデータベースは、権限が付与された後にのみ共有をサブスクライブできます。

GRANT USAGE ON DATASHARE <share_name> TO DATABASE <target_id>;

下表に、各パラメーターを説明します。

パラメーター

説明

share_name

共有の名前。

target_id

ターゲットデータベースのID。 汎用一意識別子 (UUID) 形式である必要があります。 データベースIDの取得方法の詳細については、このトピックの「データベースのIDの照会」をご参照ください。

例:

GRANT USAGE ON DATASHARE s01 TO DATABASE "c227516c-3802-4974-86e9-53**********";

共有に対する権限の取り消し

次のステートメントは、移行元データベースの共有に対するサブスクリプション権限を移行先データベースから取り消すために使用されます。 共有に対する権限が取り消されると、ターゲットデータベースは共有のデータにアクセスできなくなります。

REVOKE USAGE ON DATASHARE <share_name> FROM DATABASE <target_id>;

下表に、各パラメーターを説明します。

パラメーター

説明

share_name

共有の名前。

target_id

ターゲットデータベースのID。 それはUUIDフォーマットをmusinする。 データベースIDの取得方法の詳細については、このトピックの「データベースのIDの照会」をご参照ください。

例:

REVOKE USAGE ON DATASHARE s01 FROM DATABASE "c227516c-3802-4974-86e9-53**********";

テーブルの追加

次のステートメントは、共有にテーブルを追加するために使用されます。 共有にテーブルを追加した後、共有をサブスクライブしているターゲットデータベースからテーブルを照会できます。

ALTER DATASHARE <share_name> ADD TABLE <table_name>;

下表に、各パラメーターを説明します。

パラメーター

説明

share_name

共有の名前。

table_name

共有に追加するテーブルの名前。

例:

ALTER DATASHARE s01 ADD TABLE t1_1;

テーブルを削除する

次のステートメントは、共有からテーブルを削除するために使用されます。

ALTER DATASHARE <share_name> REMOVE TABLE <table_name>;

下表に、各パラメーターを説明します。

パラメーター

説明

share_name

共有の名前。

table_name

共有から削除されるテーブルの名前。

例:

ALTER DATASHARE s01 REMOVE TABLE t1_1;

共有を購読する

次のステートメントは、ターゲットデータベースからソースデータベースの共有をサブスクライブするために使用されます。 転送元の共有のデータをクエリするには、転送先データベースが共有に対する権限を取得し、共有をサブスクライブする必要があります。

IMPORT DATASHARE <share_name> [AS <local_share_name>] FROM DATABASE <source_id>;

下表に、各パラメーターを説明します。

パラメーター

説明

share_name

サブスクリプションの共有の名前。

local_share_name

ターゲットデータベースに設定された共有のエイリアス。

source_id

ソースデータベースのID。 UUID形式である必要があります。 データベースIDの取得方法の詳細については、このトピックの「データベースのIDの照会」をご参照ください。

例:

IMPORT DATASHARE s01 AS s01a FROM DATABASE "c227516c-3802-4974-86e9-53**********";

共有からのサブスクライブ解除

次のステートメントは、共有からの退会に使用されます。 共有を解除すると、ターゲットデータベースは共有のデータにアクセスできなくなります。

DROP SHARE <share_name>;

次の表にパラメーターを示します。

パラメーター

説明

share_name

サブスクリプション解除用の共有の名前。

例:

DROP SHARE s01;

クエリデータ

次の文は、コピー先データベースから共有のデータを照会するために使用されます。

SELECT * FROM <share_name.schema_name.table_name>;

次の表にパラメーターを示します。

パラメーター

説明

share_name.schema_name.table_name

ターゲットデータベースから照会される共有テーブルの名前。 次のフィールドで構成されています。

  • share_name: ターゲットデータベースの共有セットのエイリアス。 エイリアスが設定されていない場合は、共有の名前にすることができます。

  • schema_name: 共有テーブルを含むソースデータベースのスキーマの名前。

  • table_name: 共有テーブルの名前。

例:

SELECT * FROM s01.public.t1_1;

データベースのIDを照会する

次のステートメントは、データベースのIDを照会するために使用されます。 IDはUUID形式である必要があります。

説明

データベースIDクエリ文は、現在のデータベースのみをクエリするために使用できます。 別のデータベースのIDを照会するには、対応するデータベースに切り替えて照会文を実行します。

SELECT current_database_uuid();