日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

跨庫查詢

當需要查詢分散在不同數據庫中的數據時,您可以使用云原生數據倉庫 AnalyticDB PostgreSQL 版的跨庫查詢功能方便地將數據聚合在一起,進行高效查詢,提高數據訪問效率。

功能介紹

Database是PostgreSQL生態下數據庫的最高級別,同一個實例中的不同Database之間無法直接互相查詢數據,在保證了數據庫業務隔離的同時,也帶來了跨業務跨庫之間聯合查詢的不便。

AnalyticDB PostgreSQL版中,您可以通過外部數據包裝器FDW(foreign-data wrapper)進行跨庫查詢,阿里云提供的FDW基于AnalyticDB PostgreSQL版的MPP架構打造,能夠充分發揮計算節點的性能優勢,提高跨庫查詢的數據訪問效率。

注意事項

  • 高速跨庫查詢僅支持以下數據庫內核版本:

    • 存儲彈性模式7.0版:V7.0.1.x及以上版本。

    • 存儲彈性模式6.0版:V6.3.11.2及以上版本。

    • Serverless模式:V1.0.6.x以及上版本。

  • FDW外表僅支持SELECT和INSERT操作,不支持UPDATE和DELETE操作。

  • 僅存儲彈性模式7.0版本支持JOIN下推和AGG下推功能。

  • 僅存儲彈性模式7.0版本的ORCA優化器支持對FDW外表生成執行計劃,存儲彈性模式6.0版本和Serverless模式的ORCA優化器無法處理外表,會使用原生優化器生成執行計劃。

操作步驟

以下內容將為實例的兩個Database(db01和db02)之間開通數據互訪。開通后,您可以在db01庫訪問db02庫中的表。

  1. 使用psql連接實例,操作步驟,請參見客戶端連接

  2. 創建db01庫和db02庫。

    CREATE DATABASE db01;
    CREATE DATABASE db02;
  3. 在db01和db02庫創建跨庫查詢插件greenplum_fdw和gp_parallel_retrieve_cursor。具體操作,請參見安裝、升級與卸載插件

  4. 切換到db02庫,準備測試數據。

    \c db02
    CREATE SCHEMA s01;
    CREATE TABLE s01.t1(a int, b int, c text); 
    INSERT INTO s01.t1 VALUES(generate_series(1,10),generate_series(11,20),'t1');
  5. 切換到db01庫,創建SERVER和USER MAPPING。

    • 創建SERVER。

      \c db01
      CREATE SERVER db02 FOREIGN DATA WRAPPER greenplum_fdw
          OPTIONS (host 'localhost',
            			 dbname 'db02');

      參數說明。

      參數

      說明

      host

      跨庫訪問此處填寫'localhost'

      dbname

      源庫的名稱,此處示例為db02

    • 創建USER MAPPING,更多關于USER MAPPING的介紹,請參見CREATE USER MAPPING

      CREATE USER MAPPING FOR CURRENT_USER SERVER db02
          OPTIONS (user 'report', password '******');

      參數說明。

      參數

      說明

      user

      數據庫賬號。

      該賬號需要擁有db02庫的讀權限(如需執行INSERT操作,則還需要寫權限),如何創建賬號,請參見創建數據庫賬號

      password

      以上賬號的密碼。

  6. 在db01庫實現跨庫查詢。

    實現跨庫查詢有如下兩種方式:

    • 為源表創建外表。

      CREATE SCHEMA s01;
      CREATE FOREIGN TABLE s01.t1(a int, b int) 
      	server db02 options(schema_name 's01', table_name 't1');

      上述方式的優缺點如下:

      • 優點:可以靈活定制外表的DDL,例如db02庫中t1有三個字段a,b,c,但目標庫只需要a,b兩個字段,因此可以在創建外表的時候指定字段。

      • 缺點:需要知道每一個表的DDL,一次性導入多個外表較為繁瑣。

    • 導入源庫下Schema中的所有表。

      CREATE SCHEMA s01;
      IMPORT FOREIGN SCHEMA s01 LIMIT TO (t1, t2, t3) 
      	FROM SERVER db02 INTO s01;

      上述方式的優缺點如下:

      • 優點:可以快速導入外表,而且不需要知道每一個表的DDL。

      • 缺點:不夠靈活,每個表的名稱和源庫一致,字段也一致。

      更多介紹,請參見IMPORT FOREIGN SCHEMA

  7. 在db01庫查詢db02庫的數據。

    查詢db01庫的數據。

    SELECT * FROM s01.t1;

    返回示例如下。

     a  | b  | c
    ----+----+----
      2 | 12 | t1
      3 | 13 | t1
      4 | 14 | t1
      7 | 17 | t1
      8 | 18 | t1
      1 | 11 | t1
      5 | 15 | t1
      6 | 16 | t1
      9 | 19 | t1
     10 | 20 | t1
    (10 rows)

相關文檔

AnalyticDB PostgreSQL版還提供了跨實例查詢功能,詳情請參見跨實例查詢