インスタンスのデータ共有を有効にした後、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 | ターゲットデータベースから照会される共有テーブルの名前。 次のフィールドで構成されています。
|
例:
SELECT * FROM s01.public.t1_1;データベースのIDを照会する
次のステートメントは、データベースのIDを照会するために使用されます。 IDはUUID形式である必要があります。
データベースIDクエリ文は、現在のデータベースのみをクエリするために使用できます。 別のデータベースのIDを照会するには、対応するデータベースに切り替えて照会文を実行します。
SELECT current_database_uuid();