共用方式為


Azure 資料庫與 PostgreSQL 的 AGE 擴充功能

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