當您需要處理如社交網路、欺詐檢測或知識圖譜等包含複雜關聯關係的資料時,使用傳統SQL進行建模和查詢會變得非常繁瑣且效率低下。PolarDB PostgreSQL版通過整合開源圖引擎Apache AGE,讓您可以在同一個叢集中,可同時使用標準的SQL和業界主流的openCypher圖查詢語言。這使您能夠高效地儲存、查詢和分析圖資料,輕鬆應對複雜關係情境。
適用範圍
支援的PolarDB PostgreSQL版的版本如下:
PostgreSQL 16(核心小版本2.0.16.8.3.0及以上)
PostgreSQL 15(核心小版本2.0.15.12.4.0及以上)
PostgreSQL 14(核心小版本2.0.14.12.24.0及以上)
視覺化檢視
您可通過控制台建立一個可視化的圖管理工具(基於Apache AGE Viewer),並通過Web介面與圖資料進行互動。
步驟一:建立圖應用
您可以通過以下兩種方式進行建立:
前往PolarDB控制台,單擊左側導覽列的PolarDB AI,並單擊建立AI應用。

前往PolarDB控制台,在左側導覽列單擊集群列表,找到符合適用範圍的目的地組群並進入叢集詳情頁。單擊左側導覽列中的,並單擊建立AI應用。

在應用購買頁面中,請根據您的需求選擇適合的配置:
配置項
說明
付費類型
訂用帳戶:預付費模式。在建立應用時,您需選擇固定規格的資源,並預先支付應用的費用。購買周期越長,所享受的折扣也越大。該模式一般適用於業務需求長期穩定的情境。
隨用隨付:後付費模式。在建立應用時,您需選擇固定規格的資源,但無需提前支付應用的費用。該模式根據您實際使用的時間長度進行計費,一般適用於業務需求靈活的情境。
引擎
固定為PolarDB。
地區
選擇應用所在的地理位置。
說明應用購買完成後,不支援更改地區。
應用需與PolarDB PostgreSQL版叢集位於同一地區。因此,請選擇與PolarDB PostgreSQL版叢集相同的地區。
建議將應用與需要串連的ECS建立在同一地區,否則它們將無法通過內網(私網)實現互連,只能通過外網(公網)進行通訊,這將無法充分發揮最佳效能。
架構
選擇AI應用。
生態
自動填寫為源PolarDB叢集資料庫生態,無需手動填寫。
源 PolarDB 叢集
選擇需要建立應用的PolarDB叢集。
版本
自動填寫為源PolarDB叢集資料庫版本,無需手動填寫。
AI應用
選擇為圖管理。
組件集
根據實際業務情況自訂後端組件的數量和規格。
AI應用程式名稱
您可以填寫自訂的應用程式名稱。
說明不能以http://或者https://開頭,且長度2~256個字元。
網路類型
固定為專用網路。
VPC網路
自動填寫為源PolarDB叢集的專用網路,無需手動填寫。
可用性區域和交換器
配置VPC網路的交換器,建議選擇與PolarDB PostgreSQL版叢集的主可用性區域相同的交換器,以發揮最佳網路效能。
如果已有的交換器無法滿足您的要求,您可以自行建立交換器。
安全性群組
配置應用的安全性群組。
購買數量
選擇需要購買的應用數量。
說明每個PolarDB PostgreSQL版叢集僅支援購買一個相同類型的AI應用。
僅付費類型為訂用帳戶時,支援配置。
購買時間長度
選擇應用的購買時間長度。
說明僅付費類型為訂用帳戶時,支援配置。
自動續約
配置是否開啟自動續約。為避免因忘記續約而導致業務中斷,建議您開啟自動續約。
說明僅付費類型為訂用帳戶時,支援配置。
購買成功後,請返回叢集的AI應用頁面,即可查看新建立的應用。
說明系統需要3~5分鐘建立應用,請耐心等待。
步驟二:串連圖應用
配置應用白名單:在AI應用列表頁面,單擊您的應用ID進入應用詳情頁,並在白名单頁簽,新增IP白名单分组、选择安全组或配置已有白名單分組。
說明應用白名單與叢集白名單相互獨立,需進行單獨配置。
如果您的ECS執行個體需要訪問應用,可在ECS執行個體詳情頁面查看ECS執行個體的IP地址,並將其填寫至IP白名單中。
如果您的ECS執行個體與應用位於同一VPC內,您可以填寫ECS的私網IP地址或其所在VPC網段。
如果您的ECS執行個體與應用不在同一VPC內,您可填寫ECS的公網IP地址,或添加ECS所在的安全性群組。
如果您本地的伺服器、電腦或其他雲端服務器需要訪問應用,請將其公網IP地址添加到IP白名單中。

擷取串連地址:在AI應用列表頁面,單擊您的應用ID進入應用詳情頁,並在基本信息頁簽的拓撲圖地區中查看私網地址。
說明公網地址需單獨申請,請單擊申請按鈕以進行申請。
公網地址僅提供IP地址和連接埠,不提供網域名稱。如您有相關需求,可自行綁定網域名稱。

步驟三:建立外掛程式與設定資料庫
建立外掛程式:請使用高許可權帳號執行如下語句。
說明age外掛程式目前暫不支援您手動建立,如需使用該功能,請提交工單與我們聯絡,以便為您建立外掛程式。CREATE EXTENSION age;設定資料庫:對於每次串連,都需要將
ag_catalog添加到search_path以簡化查詢,並通過get_cypher_keywords函數實現外掛程式的載入:說明使用Data Management(Data Management)用戶端設定
search_path時,可能會存在相容性問題,您可使用PolarDB-Tools執行相關語句。SET search_path = ag_catalog, "$user", public;強烈建議使用高許可權帳號設定資料庫參數,以永久載入外掛程式,從而在每次串連時無需重複執行上述操作,以簡化使用流程。
ALTER DATABASE <dbname> SET search_path = "$user", public, ag_catalog; ALTER DATABASE <dbname> SET session_preload_libraries TO 'age';(可選)允許普通使用者使用AGE:在
ag_catalog模式下為普通使用者授予USAGE許可權。GRANT USAGE ON SCHEMA ag_catalog TO <username>;如果普通使用者僅為讀寫權限使用者,需要額外授予建立表的
CREATE許可權。GRANT CREATE ON DATABASE <dbname> TO <username>;
步驟四:建立圖與插入資料
建立圖:在使用圖之前,首先需要進行圖的建立。建立圖使用位於
ag_catalog命名空間中的create_graph函數。文法:
SELECT create_graph('<graph_name>');樣本:
SELECT ag_catalog.create_graph('moviedb');插入資料:使用以下SQL語句向
moviedb圖中插入樣本資料:SELECT * FROM cypher('moviedb', $$ CREATE (matrix:Movie {title: 'The Matrix', released: 1997}) CREATE (cloudAtlas:Movie {title: 'Cloud Atlas', released: 2012}) CREATE (forrestGump:Movie {title: 'Forrest Gump', released: 1994}) CREATE (keanu:Person {name: 'Keanu Reeves', born: 1964}) CREATE (robert:Person {name: 'Robert Zemeckis', born: 1951}) CREATE (tom:Person {name: 'Tom Hanks', born: 1956}) CREATE (tom)-[:ACTED_IN {roles: ['Forrest']}]->(forrestGump) CREATE (tom)-[:ACTED_IN {roles: ['Zachry']}]->(cloudAtlas) CREATE (robert)-[:DIRECTED]->(forrestGump) $$) AS (result1 agtype);其中,包含了6個節點,其中3個的標籤為電影(Movie),3個為人員(Person)。3條邊,其中2條邊的標籤為表演(ACTED_IN),1條邊為導演(DIRECTED)。關係圖如下所示:

步驟五:開發應用
開發應用:您可以通過公網直接存取應用,在AI應用列表頁面中單擊開發應用,以跳轉至圖應用的視覺化檢視的公網地址。或者直接在瀏覽器地址欄中輸入應用的公網IP地址和連接埠,以訪問視覺化檢視。
說明請先將您的公網IP地址添加至應用白名單中。

在視覺化檢視的登入頁面中輸入以下資訊:
host:選擇您的PolarDB叢集的串連地址。
Database Name:填寫一個叢集內的資料庫,若您沒有合適的資料庫,請返回至叢集詳情頁面中進行建立資料庫。
user name:填寫一個叢集內的資料庫帳號,請確保其擁有上述資料庫的相應存取權限。
password:填寫對應資料庫帳號的密碼。

查詢資料:在Cypher中,使用
MATCH+RETURN這兩個關鍵字實現資料的查詢。其中:MATCH實現模式比對,用於尋找與指定模式相同的內容。RETURN關鍵字指定希望從Cypher查詢返回的值或結果。
文法:
SELECT * FROM cypher('graph_name', $$ MATCH <patterns>RETURN <variables> $$) AS (result1 agtype);樣本:在視覺化檢視的頂部中輸入以下Cypher查詢語句:
SELECT * FROM cypher('moviedb', $$ MATCH (m:Person) RETURN m $$) AS (result1 agtype);
驗證:執行成功後,您應該能在下方的可視化地區看到
moviedb的三個人員(Person)節點。
步驟六:(可選)釋放圖應用
當不再需要視覺化檢視時,可以將其釋放以節省成本。在AI應用列表中,找到靶心圖表應用,在操作列中單擊釋放應用即可。
釋放圖應用僅會刪除用於提供Web介面的視覺化檢視,不會刪除您儲存在PolarDB叢集中的任何圖資料。應用釋放後,其公網地址等配置將丟失且無法恢複。
工作原理
核心引擎:PolarDB圖資料庫功能基於PostgreSQL的
age擴充實現,該擴充由Apache AGE專案提供,相容OpenCypher查詢文法。混合查詢:
age擴充使您可以在同一個資料庫中同時管理關聯性型資料(標準表)和圖資料。這兩種資料可以共存並被分別查詢。查詢執行:Cypher查詢並非直接執行,而是作為字串參數傳遞給一個名為
cypher()的PostgreSQL函數。PolarDB解析此字串,在指定的圖中執行Cypher命令,並將結果作為標準的SQL行集返回。資料類型:查詢返回的結果列通常是
agtype類型。這是一種類似於JSONB的自訂資料類型,用於封裝圖元素(如節點、邊、路徑)的結構化資訊。在應用程式中,您通常可以將其作為JSON字串處理。
計費說明
組件費用:圖應用收取後端組件費用,費用根據您選擇的組件規格(CPU和記憶體)和購買時間長度計算。
儲存費用:圖應用所產生的資料和檔案等將儲存在PolarDB PostgreSQL版叢集儲存空間,
流量與頻寬:不收取費用。
相關文檔
圖資料庫快速入門:通過SQL用戶端(如psql)直接使用Cypher語句與圖資料庫互動,此方式適合後端開發和自動化指令碼情境。
SQL參考:相關SQL文法是在Apache AGE的基礎上進行阿里雲圖資料庫的相關修改。
最佳實務: