Apache AGE (圖表延伸模組) 是功能強大的 PostgreSQL 延伸模組,其設計目的是將圖形資料庫功能順暢地整合到 PostgreSQL 生態系統中。 AGE 可讓使用者在 Apache Incubator 專案下開發時,透過支援直覺式 openCypher 查詢語言,有效率地儲存及查詢圖數據。 它可橋接關係型和圖形數據之間的差距,讓開發人員管理複雜的關聯性,並找出傳統資料庫可能難以揭示的見解。
透過節點(實體)和邊緣(關聯性)表示的圖形數據,對於社交網路、建議系統、詐騙偵測、網路分析和知識圖表等應用程式而言,越來越重要。 Apache AGE 提供強大的解決方案來處理這類互連的數據,啟用進階分析和簡化數據管理。
使用 Apache AGE 解除鎖定圖形數據功能
使用 Apache AGE 解除鎖定圖形數據功能,可讓開發人員利用 PostgreSQL 內互連數據的完整潛力。 Apache AGE 可將圖形資料庫功能直接整合到關係資料庫,以順暢地探索和分析複雜的關聯性。 這項功能對於需要深入解析數據連線的應用程式而言非常重要,例如社交網路、詐騙偵測和建議系統。 Apache AGE 支援 openCypher 查詢語言和健全的 PostgreSQL 基礎,提供可調整且有效率的解決方案來管理和查詢圖形數據。
Apache AGE 的主要功能
- 圖形和關係型數據整合:AGE 可讓您在 PostgreSQL 內的圖形和關係型數據之間順暢地互動。
- openCypher 查詢語言:AGE 支援圖形資料庫廣泛辨識的查詢語言,簡化查詢撰寫和維護。
- 延展性和可靠性:在PostgreSQL經過證實的架構下,AGE會繼承其延展性和企業級強固性。
為什麼要使用圖形資料庫?
圖形資料庫擅長代表和查詢複雜且高度互連的關聯性。 不同於關係資料庫需要多個連結,或文件資料庫未針對深度關係遍歷進行優化,圖形資料庫自然地建模實體之間的關聯。 例如,在圖形資料庫中,查詢「朋友的朋友」或「兩點之間的最短路徑」更直覺且更有效率。
AGE 使用 PostgreSQL 的 ACID 相容交易系統,確保圖資料庫查詢的可靠性與原子性。 這項整合有助於進階應用程式,例如 Knowledge Graphs,其支援 AI 驅動的搜尋和數據產生,方法是將事實和概念建構為節點,並將其相互連線為邊緣。
Azure 客戶可以啟用 AGE 擴充功能
適用於 PostgreSQL 的 Azure 資料庫包含 Apache AGE 作為延伸模組。
這些步驟可協助您在彈性伺服器實例中啟用擴充功能:
存取伺服器參數
在 Azure 入口網站中,流覽至 PostgreSQL 彈性伺服器實例,然後選取 [伺服器參數] 選項。
調整下列設定:
- azure.extensions:在參數篩選中,搜尋可用的延伸模組並啟用其中的 AGE。
- shared_preload_libraries:在參數篩選中搜尋並啟用 AGE。
選取 [儲存] 以套用這些變更。 伺服器會自動重新啟動以啟用 AGE 擴充功能。
備註
未能啟用 shared_preload_libraries
導致當您嘗試在查詢中使用 AGE 架構時發生以下錯誤:「錯誤:第一個加密查詢時未處理的加密(cstring) 函式呼叫錯誤」
在 PostgreSQL 中啟用 AGE
伺服器重新啟動后,請使用 psql 解釋器連線到 PostgreSQL 實例。 執行下列命令以啟用 AGE:
CREATE EXTENSION IF NOT EXISTS AGE CASCADE;
成功之後,您會看到 CREATE EXTENSION
作為查詢輸出。
您也可以查詢pg_extension目錄數據表,以確認 AGE 已啟用,並檢查延伸模組的版本。
SELECT * FROM pg_extension WHERE extname = 'age';
設定架構路徑
AGE 新增稱為 ag_catalog
的架構,對於處理圖形數據至關重要。 執行下列命令,以確保此架構包含在搜尋路徑中:
SET search_path=ag_catalog,"$user",public;
針對 Python,您可以執行下列命令來設定架構路徑:
import psycopg as pg
with pg.Connection.connect(con_str + " options='-c search_path=ag_catalog,\"$user\",public'") as con:
您也可以在應用程式中以程式設計方式設定它。
遵循這些步驟,您可以確定PostgreSQL實例已正確設定為使用AGE擴充功能。 AGE 延伸模組會直接在PostgreSQL內提供進階圖形資料庫功能。 這個設定可讓您順暢地將圖表查詢整合到您的應用程式中,展現強大的數據關係和洞察力。 啟用並設定 AGE 延伸模組後,您現在已準備好探索 PostgreSQL 環境中圖形分析的完整潛力。
ag_catalog架構中的重要數據表
ag_graph
ag_label
ag_graph
Apache AGE ag_catalog架構內的ag_graph數據表,可作為透過 ag_catalog.create_graph
函式建立之 PostgreSQL 內圖表相關元數據的存放庫。 具體來說,它會維護圖形的名稱和相關聯的命名空間等詳細數據,以做為 PostgreSQL 中的架構。 此命名空間會組織圖形的結構,並包含用來儲存頂點和邊緣數據的數據表。
\d+ ag_graph
Table "ag_catalog.ag_graph"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
-----------+--------------+-----------+----------+---------+---------+-------------+--------------+-------------
graphid | oid | | not null | | plain | | |
name | name | | not null | | plain | | |
namespace | regnamespace | | not null | | plain | | |
Indexes:
"ag_graph_graphid_index" UNIQUE, btree (graphid)
"ag_graph_name_index" UNIQUE, btree (name)
"ag_graph_namespace_index" UNIQUE, btree (namespace)
Referenced by:
TABLE "ag_label" CONSTRAINT "fk_graph_oid" FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap
ag標籤
ag_label數據表會儲存 AGE 圖表中所用標籤的相關元數據。 它會追蹤這些標籤,將其與其各自的圖形產生關聯,並定義它們是否代表頂點或邊緣。 該條目包含標籤的獨特 ID、相關的圖形、任何索引,及儲存數據的底層 PostgreSQL 資料表。
\d+ ag_label
Table "ag_catalog.ag_label"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
----------+------------+-----------+----------+---------+---------+-------------+--------------+-------------
name | name | | not null | | plain | | |
graph | oid | | not null | | plain | | |
id | label_id | | | | plain | | |
kind | label_kind | | | | plain | | |
relation | regclass | | not null | | plain | | |
seq_name | name | | not null | | plain | | |
Indexes:
"ag_label_graph_oid_index" UNIQUE, btree (graph, id)
"ag_label_name_graph_index" UNIQUE, btree (name, graph)
"ag_label_relation_index" UNIQUE, btree (relation)
"ag_label_seq_name_graph_index" UNIQUE, btree (seq_name, graph)
Foreign-key constraints:
- `fk_graph_oid` FOREIGN KEY (graph) REFERENCES ag_graph(graphid)
Access method: heap