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

AnalyticDB:データ共有

最終更新日:Sep 29, 2024

サーバーレスモードのAnalyticDB for PostgreSQLは、インスタンス間でデータを共有およびクエリするためのデータ共有機能を提供します。 このトピックでは、データ共有機能の使用方法について説明します。

説明

サーバーレスモードの2つのAnalyticDB for PostgreSQLインスタンスが必要です。 これらの2つのインスタンスは、同じAlibaba Cloudアカウントに属し、同じリージョン内に存在する必要があります。 サーバーレスモードでAnalyticDB For PostgreSQLインスタンスを作成する方法の詳細については、「インスタンスの作成」をご参照ください。

このトピックでは、インスタンスAとインスタンスBのデータ共有を有効にします。次に、インスタンスaのソースデータベースの共有を作成し、その共有にテストテーブルを追加して、インスタンスBのターゲットデータベースにその共有を使用する権限を付与します。 インスタンスBのターゲットデータベースの共有をサブスクライブした後、インスタンスBのターゲットデータベースからテストテーブルに含まれるデータを照会できます。

手順

  1. データ共有のためにサーバーレスモードでAnalyticDB for PostgreSQLインスタンスを追加します。

    1. AnalyticDB for PostgreSQLコンソールにログインします。

    2. コンソールの左上隅で、インスタンスが存在するリージョンを選択します。

    3. 左側のナビゲーションウィンドウで、[データ共有] をクリックします。

    4. データ共有インスタンス タブで、データ共有用に追加するインスタンスを選択し、追加 をクリックします。

      説明

      データは、データ共有用に追加されたインスタンス間でのみ共有できます。 少なくとも2つのインスタンスを選択します。 このトピックでは、インスタンスAはデータを共有し、インスタンスBはインスタンスAが共有するデータを消費します。

    5. 共有インスタンスの追加 メッセージで、OK をクリックします。

      説明

      このプロセスは完了するのに5〜10分かかることがある。 これら2つのインスタンスがデータ共有のために追加された後、共有データをインスタンス間で照会できます。

  2. クライアントツールを使用してインスタンスaとインスタンスBに接続します。詳細については、「クライアント接続」をご参照ください。

    このトピックでは、クライアントツールpsqlとデータ管理 (DMS) を使用します。

  3. インスタンスaにソースデータベースを作成し、ソースデータベースの汎用一意識別子 (UUID) を照会します。

    1. インスタンスaにdb01という名前のソースデータベースを作成します。

      CREATE DATABASE db01;
    2. 後で手順8で使用するために、ソースデータベースのUUIDを照会します。

      \c db01; を実行してdb01データベースに切り替え、次のステートメントを実行してUUIDを照会します。

      SELECT current_database_uuid();
  4. インスタンスBでターゲットデータベースを作成し、ターゲットデータベースのUUIDを照会します。

    1. インスタンスBにdb02という名前のターゲットデータベースを作成します。

      CREATE DATABASE db02;
    2. 後で手順5で使用するために、ターゲットデータベースのUUIDを照会します。

      \c db02; を実行してdb02データベースに切り替え、次のステートメントを実行してUUIDを照会します。

      SELECT current_database_uuid();
  5. ソースデータベースの共有を作成し、共有を使用するようにターゲットデータベースに権限を付与します。

    1. ソースデータベースに切り替えます。

      • psql

        \c db01;
      • DMS

        1. 左側のナビゲーションウィンドウで、[接続済みインスタンス] をクリックし、インスタンスAを見つけます。

        2. ソースデータベースdb01をクリックします。

        3. パブリックスキーマをダブルクリックして、ターゲットデータベースに切り替えます。

      次のステートメントを実行して、db02が使用されているかどうかを確認できます。

      SELECT current_database();

      現在のデータベースがdb01の場合、次の情報が返されます。

       current_database
      ------------------
       db01
      (1 row)
    2. 共有を作成します。

      CREATE DATASHARE s01;
    3. 共有を使用するようにターゲットデータベースに許可します。

      GRANT USAGE ON DATASHARE s01 TO DATABASE "<target_dbuuid>";

      <target_dbuuid> は、手順4で照会されるdb02のUUIDを指定します。

  6. ソースデータベースdb01にt1_1という名前のテストテーブルを作成し、テーブルにデータを挿入します。

    CREATE TABLE t1_1 (a int, b int, c int, d int)  DISTRIBUTED BY (a);
    INSERT INTO t1_1 SELECT v,v,v,v FROM generate_series(1, 10) AS v;

    スキーマ:

     a  | b  | c  | d
    ----+----+----+----
      1 |  1 |  1 |  1
      2 |  2 |  2 |  2
      5 |  5 |  5 |  5
      6 |  6 |  6 |  6
      7 |  7 |  7 |  7
      9 |  9 |  9 |  9
     10 | 10 | 10 | 10
      3 |  3 |  3 |  3
      4 |  4 |  4 |  4
      8 |  8 |  8 |  8
    (10 rows)
  7. 共有にテーブルを追加します。

    ALTER DATASHARE s01 ADD TABLE t1_1;
  8. ターゲットデータベースdb02の共有をサブスクライブします。

    1. ターゲットデータベースに切り替えます。

      • psql

        \c db02;
      • DMS

        1. 左側のナビゲーションウィンドウで、[接続済みインスタンス] をクリックし、インスタンスBを見つけます。

        2. 移行先データベースdb02をクリックします。

        3. パブリックスキーマをダブルクリックして、ターゲットデータベースに切り替えます。

      次のステートメントを実行して、db02が使用されているかどうかを確認できます。

      SELECT current_database();

      現在のデータベースがdb02の場合、次の情報が返されます。

       current_database
      ------------------
       db02
      (1 row)
    2. 共有をサブスクライブし、移行先データベースの共有のエイリアスを設定します。

      IMPORT DATASHARE s01 AS s01a FROM DATABASE "<source_dbuuid>";

      <source_dbuuid> は、手順3で照会されるdb01のUUIDを指定します。

  9. 移行元データベースdb01が共有するデータを移行先データベースdb02から照会します。

    SELECT * FROM s01a.public.t1_1 ORDER BY 1;

    次の情報が返されます。

     a  | b  | c  | d
    ----+----+----+----
      1 |  1 |  1 |  1
      2 |  2 |  2 |  2
      5 |  5 |  5 |  5
      6 |  6 |  6 |  6
      7 |  7 |  7 |  7
      9 |  9 |  9 |  9
     10 | 10 | 10 | 10
      3 |  3 |  3 |  3
      4 |  4 |  4 |  4
      8 |  8 |  8 |  8
    (10 rows)