全部產品
Search
文件中心

AnalyticDB:資料共用

更新時間:Jun 19, 2024

AnalyticDB PostgreSQL版Serverless模式提供了資料共用功能,可以實現跨執行個體查詢共用資料。本文將指導您快速完成資料共用的建立和使用的全流程。

教程說明

請準備兩個Serverless版本執行個體:執行個體A和執行個體B。執行個體A和執行個體B屬於同一個阿里雲帳號,且位於同一地區。建立Serverless版本執行個體,請參見建立執行個體

本教程將為執行個體A和執行個體B開通資料共用。開通後,為執行個體A的源庫建立一個Share,並將測試表加入Share,然後將Share授權給執行個體B的目標庫。執行個體B的目標庫在訂閱Share後,可以查詢源庫測試表的資料。

操作步驟

  1. 將Serverless版本執行個體加入資料共用。
    1. 登入雲原生資料倉儲AnalyticDB PostgreSQL版控制台
    2. 在控制台左上方,選擇執行個體所在地區。
    3. 在左側導覽列中,單擊資料共用
    4. 數據共享實例頁面,選中需要加入資料共用的執行個體,單擊添加
      說明 只有加入資料共用的執行個體才能實現執行個體間共用資料。此處請選擇至少兩個執行個體。本教程中,執行個體A用於共用資料,執行個體B使用執行個體A共用的資料。
    5. 添加共享實例對話方塊中,單擊確定
      說明 添加資料共用過程需要5~10分鐘左右,添加成功後可以跨執行個體訪問共用資料。
  2. 使用用戶端工具分別串連執行個體A和執行個體B。具體操作,請參見用戶端串連
    本教程的用戶端工具以psql和DMS為例。
  3. 在執行個體A上建立源庫,並查詢源庫的UUID。
    1. 在執行個體A上建立源庫db01。
      CREATE DATABASE db01;
    2. 查詢源庫的UUID為步驟8做準備。

      執行\c db01;切換到db01庫,再執行以下語句查詢UUID。

      SELECT current_database_uuid();
  4. 在執行個體B上建立目標庫,並查詢目標庫的UUID。
    1. 在執行個體B上建立目標庫db02。
      CREATE DATABASE db02;
    2. 查詢目標庫的UUID為步驟5做準備。

      執行\c db02;切換到db02庫,再執行以下語句查詢UUID。

      SELECT current_database_uuid();
  5. 在源庫上建立Share,並賦權給目標庫。
    1. 切換至源庫。
      • psql
        \c db01;
      • DMS
        1. 在左側已登入執行個體中找到執行個體A。
        2. 單擊db01庫。
        3. 雙擊public Schema切換到目標庫。

      您可以使用以下函數確認當前使用的資料庫是否正確:

      SELECT current_database();

      返回資訊如下時,表示當前使用的資料庫為db01:

       current_database
      ------------------
       db01
      (1 row)
    2. 建立Share。
      CREATE DATASHARE s01;
    3. 將Share賦權給目標庫。
      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. 將測試表加入Share。
    ALTER DATASHARE s01 ADD TABLE t1_1;
  8. 為目標庫db02訂閱Share。
    1. 切換到目標庫。
      • psql
        \c db02;
      • DMS
        1. 在左側已登入執行個體中找到執行個體B。
        2. 單擊db02庫。
        3. 雙擊public Schema切換到目標庫。

      您可以使用以下函數確認當前使用的資料庫是否正確:

      SELECT current_database();

      返回資訊如下時,表示當前使用的資料庫為db02:

       current_database
      ------------------
       db02
      (1 row)
    2. 訂閱Share,並設定Share的本地別名。
      IMPORT DATASHARE s01 AS s01a FROM DATABASE "<source_dbuuid>";

      <source_dbuuid>為步驟3中查詢到的目標庫db01的UUID。

  9. 在目標庫db02中查詢源庫db01共用的資料。
    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)

相關文檔