外部資料封裝器
本文介紹了外部資料封裝器的用途、基本構成以及快速入門等內容。
工具用途
簡介
GanosBase FDW是對象關係型資料庫PostgreSQL相容版本(PolarDB PostgreSQL版)的一個時空引擎擴充,實現了PostgreSQL資料庫與多種地理空間資料格式的整合和查詢,它支援多格式資料來源的映射為PostgreSQL的外部表格,實現資料訪問和查詢最佳化。
GanosBase FDW提供了對於多種空間資料類似的統一訪問,GanosBase FDW會自動將幾何空間資料類型映射為Geometry欄位類型,從而允許與資料庫內部表進行統一的訪問與查詢。
主要業務情境
Data Integration
GanosBase FDW允許使用者將多種地理空間資料格式(如Shapefile、GeoJSON、KML、GML等)與PostgreSQL資料庫進行整合。通過配置外部資料源的串連資訊和資料對應規則,使用者可以在PostgreSQL中建立外部表格,將外部資料源中的地理空間資料對應為PostgreSQL中的表結構。這樣,不同格式的地理空間資料可以在PostgreSQL中進行統一的查詢、分析和操作。
資料轉換和格式轉換
GanosBase FDW提供了資料轉換和格式轉換的功能。使用者可以將不同格式的地理空間資料來源映射為PostgreSQL中的外部表格,通過GanosBase FDW可以將資料來源的資料轉換為PostgreSQL所需的格式和結構。這使得使用者可以方便地進行資料格式的轉換和整合。
地理空間資料分析和查詢
GanosBase FDW使得PostgreSQL可以直接查詢和分析外部資料源中的地理空間資料。使用者可以使用SQL查詢語言對外部表格進行查詢,利用PostgreSQL提供的強大的地理空間分析函數和工具進行空間分析、空間關係查詢、緩衝區分析等操作。
基本構成
FDW(Foreign Data Wrapper)是PostgreSQL資料庫的一種擴充技術,它允許PostgreSQL在查詢和操作資料時,與外部資料源進行互動。
GanosBase FDW是基於PostgreSQL FDW技術實現的外部空間向量資料封裝器,允許使用者在PostgreSQL中訪問和查詢外部空間向量資料。
FDW
FDW(Foreign Data Wrapper)是一種用於PostgreSQL資料庫的擴充模組,它允許PostgreSQL在查詢和操作資料時,與外部資料源進行互動。
FDW的基本概念包括以下幾個要點:
外部資料源:FDW允許PostgreSQL串連和訪問外部資料源,這可以是關係型資料庫、檔案系統、NoSQL資料庫、Web服務等。外部資料源可以儲存在本地或遠端伺服器上。
資料封裝器(Wrapper):FDW提供了資料封裝器,用於與外部資料源進行通訊和資料交換。資料封裝器是一個擴充模組,實現了PostgreSQL的FDW介面,通過這個介面,PostgreSQL可以與外部資料源進行互動。
映射規則(Mapping Rules):FDW允許使用者定義外部資料源中的表、列與PostgreSQL中的表、列之間的映射關係。這些映射規則指定了資料的轉換、資料類型的對應關係等。使用者可以通過映射規則自訂如何將外部資料源中的資料在PostgreSQL中進行表示和訪問。
查詢最佳化工具(Query Optimizer):FDW整合了PostgreSQL的查詢最佳化工具,可以對查詢語句進行最佳化和轉換,以提高查詢效能。查詢最佳化工具可以將一部分查詢操作下推到外部資料源中執行,減少資料轉送和處理的開銷。
資料匯入和匯出:FDW提供了資料匯入和匯出的功能,允許使用者將資料從外部資料源匯入到PostgreSQL中,或將PostgreSQL中的資料匯出到外部資料源中。這使得使用者可以在PostgreSQL中進行資料分析、資料處理和資料轉送等操作。
安全性和許可權控制:FDW提供了安全性和許可權控制的功能,允許使用者配置對外部資料源的存取權限。使用者可以控制哪些使用者或角色可以訪問外部資料源,以及可以執行的操作類型,從而保護資料的安全性和完整性。
GanosBase FDW
GanosBase FDW是PostgreSQL資料庫的擴充,使PostgreSQL資料庫能夠直接存取和查詢多種地理空間資料格式。GanosBase FDW允許使用者在PostgreSQL中配置外部資料源,並將這些資料來源中的地理空間資料對應為PostgreSQL中的外部表格,從而實現地理空間資料的整合和查詢。
GanosBase FDW的主要特點和功能如下:
多格式支援:GanosBase FDW支援許多常見的地理空間資料格式,包括Shapefile、GeoJSON、KML、GML、MapInfo等。它可以將這些格式的資料來源映射為PostgreSQL中的外部表格,從而實現對這些資料的訪問和查詢。
靈活的資料對應:GanosBase FDW允許使用者在PostgreSQL中配置外部資料源的串連資訊和資料對應規則。使用者可以定義外部表格的結構,並將外部資料源中的要素、屬性和幾何資料對應為PostgreSQL中的列,使得外部資料源的資料可以像本地表一樣進行查詢和分析。
查詢最佳化:GanosBase FDW在查詢外部資料源時,使用了一些最佳化技術,如謂詞下推和局部查詢最佳化,以提高查詢效能。它盡量減少從外部資料源中檢索的資料量,只擷取滿足查詢條件的結果,從而避免不必要的資料轉送和處理。
可寫支援:除了查詢外部資料源,GanosBase FDW還支援在外部表格上進行插入、更新和刪除操作。使用者可以通過GanosBase FDW將變更操作傳遞給外部資料源,以更新和同步資料。
通過GanosBase FDW,使用者可以輕鬆地將多種地理空間資料格式整合到PostgreSQL中,並利用PostgreSQL提供的強大的查詢和分析功能對這些資料進行處理。GanosBase FDW提供了靈活的資料對應和查詢最佳化機制,使外部資料源的資料可以像本地表一樣進行查詢和操作,為地理空間資料的整合和分析提供了便利。
更多內容請參見FDW SQL參考。
快速入門
簡介
快速入門文檔協助使用者快速理解GanosBase FDW引擎的基本用法,包括擴充建立、註冊外表、外表查詢、資料匯入、進階功能等內容。
文法說明
建立擴充。
CREATE extension ganos_fdw cascade;說明建議將擴充安裝在public模式下,避免許可權問題。
CREATE extension ganos_fdw WITH schema public cascade;將空間資料檔案註冊為外表。
-- 註冊Shapefile SELECT ST_RegForeignTables('OSS://<ak>:<ak_secret>@<endpoint>/bucket/path/poly.shp'); -- 通過information_schema.foreign_tables 視圖可以查詢註冊的fdw表 select foreign_table_name from information_schema.foreign_tables ORDER BYforeign_table_name ASC;說明需要使用OSS內網Endpoint進行訪問。
對外表進行查詢。
SELECT fid, ST_AsText(geom), name, age, height FROM poly WHERE fid = 1; ------------ 1 | POLYGON((5 0,0 0,0 10,5 10,5 0)) | ZhangShan | 35 | 1.84通過
INSERT命令匯入資料到資料庫表中。-- 通過CREATE AS SELECT 方式建立相同的表結構 CREATE TABLE poly_db AS SELECT * FROM poly; -- 如果表已經存在可以通過INSERT INTO SELECT 的方式 INSERT INTO poly_db SELECT * FROM poly;也可以通過
IMPORT FOREIGN SCHEMA匯入資料到資料庫表中。CREATE SCHEMA imp; IMPORT FOREIGN SCHEMA ganos_fdw FROM SERVER ganos_fdw_server INTO imp;刪除擴充(可選)。
Drop extension ganos_fdw cascade;
使用進階
GanosBase遵循FDW介面規範,因此可以通過SQL方式建立外部表格,實現對外部資料源的操作。
Server
CREATE SERVER <server_name>
FOREIGN DATA WRAPPER ganos_fdw
OPTIONS (
datasource 'OSS://<endpoint>/path/file',
format '<driver>',
open_options '<config>=<value>[ <config>=<value>]',
config_options '<config>=<value>[ <config>=<value>]');其中:
datasource的路徑不需要OSS的Access Key的ID以及secret。
Endpoint為OSS的地區節點。為保證資料的可訪問性,請確保雲資料庫與OSS所在Region相同,並使用內部endpoint地址。 相關資訊請參見OSS訪問網域名稱使用規則 資訊。
format表示使用的資料來源驅動程式,可以通過ST_FDWDrivers函數獲得。如果未傳入則表示使用預設的驅動嘗試訪問。
樣本如下:
CREATE SERVER myserver
FOREIGN DATA WRAPPER ganos_fdw
OPTIONS (
datasource 'OSS://<endpoint>/path/poly.shp',
format 'ESRI Shapefile',
open_options 'SHAPE_ENCODING=LATIN1',
config_options '');,UserMapping
為確保OSS訪問所需要的ID和secret,需要建立User Mapping。
CREATE USER MAPPING
FOR <user_name>
SERVER <server_name>
OPTIONS (
user '<oss_ak_id>',
password '<oss_ak_secret>');樣本如下:
CREATE USER MAPPING
FOR CURRENT_USER
SERVER myserver
OPTIONS (
user 'id',
password 'secret')Table
建立對應的外部表格。
CREATE FOREIGN TABLE <table_name> (
column_name data_type
[, ...]
) SERVER <server_name>
OPTIONS (layer '<layer_name>');樣本如下:
CREATE FOREIGN TABLE example_table (
fid bigint,
name varchar,
age varchar,
value varchar
) SERVER myserver
OPTIONS (layer 'poly');Import
可以通過IMPORT FOREIGN SCHEMA匯入整個表定義,文法如下:
IMPORT FOREIGN SCHEMA ganos_fdw
[ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ]
FROM SERVER <server_name>
INTO <local_schema>其中遠端schema名稱固定為ganos_fdw。
樣本如下:
CREATE SCHEMA imp;
IMPORT FOREIGN SCHEMA ganos_fdw
FROM SERVER myserver
INTO imp;SQL參考
詳細SQL手冊請參見FDW SQL參考。