我的新書AI 職場超神助手:ChatGPT 與生成式 AI 一鍵搞定工作難題的教材投影片已製作完成
歡迎各位有需要的教師和博碩文化索取教材

Neo4j圖形資料庫介紹

官方資訊

官方網站: https://neo4j.com/

GitHub: https://github.com/neo4j/neo4j

什麼是Neo4j?

圖形資料庫是一種非關係型的資料庫,以圖形的方式存儲和處理數據。在圖形資料庫中,數據結構主要由節點(Node)和邊(Edge)組成,其中節點代表實體,邊則代表實體間的關係。這種資料庫尤其適合解決複雜的連接問題,例如社交網絡分析、推薦系統和欺詐檢測等。

Neo4j是目前最受歡迎的圖形資料庫之一,它提供了強大的數據建模能力和高效的查詢性能。作為一款專門處理連接數據的數據庫,Neo4j從設計之初就針對數據及其關係進行了優化。作為一種原生圖形數據庫,Neo4j在結構上與其他數據存儲方式大不相同。所謂「原生」意味著每一個數據記錄或節點都包含了直接指向其相連節點的指針,這些直接指針稱為關係。節點中已包含了查找下一個節點所需的所有信息,這就構成了一個連接的圖形,即所謂的原生存儲層。

由於這個設計原理,Neo4j在查詢時不需要計算數據之間的關係,因為這些連接已經存在於數據庫中。這使得對密集連接數據的查詢速度比其他數據庫快數個量級。其他數據庫沒有保存記錄之間的直接指針,它們需要通過搜索一個稱為索引的單獨數據結構來計算連接,這一查找過程需要反复執行以找到每一個連接,不僅耗時而且隨著數據量和查詢複雜度的增加,速度會呈指數級下降,這使它們在處理關係密集型查詢時的速度遠不及Neo4j。

甚麼是圖形數據庫

圖形數據庫將數據以圖的形式表示,這裡的「圖」是數學上的概念,即由節點通過邊連接。在Neo4j中,這些邊被稱為關係。這種表示方式讓客戶能夠實現傳統數據庫無法達到的洞察,因為傳統數據庫通常只將數據表示為行和列。這些新的洞察促使企業能夠做出更多基於數據的決策。

圖形數據庫可以解決三種類型的問題:旅程問題、複雜模式匹配和圖形算法應用。例如,在供應鏈管理中,從產品的來源追踪到消費者的餐盤;或者在零售行業中,通過知識圖形來支持對話代理,讓顧客能夠查詢產品成分等信息。

四種NoSQL 非關聯性資料庫

NoSQL 非關聯性資料庫例子
鍵-值資料庫Hadoop HBase
記憶體資料庫Redis
文件資料庫Mongodb
圖形資料庫Neo4j

主要功能及應用

(一)社交網路圖譜

Neo4j 可以進行複雜關係的查詢,讓使用者或其資料作為節點,使用者與資料的關係作為結點間的連結。

舉例來說,Neo4j 儲存公司、員工資料,便可進行查詢員工與公司的關係、員工與員工的關係、公司與其他類似公司的關係或與員工其他公司的關聯。

(二)企業網路圖譜

相較於單純的工商資訊查詢,藉由 Neo4j 的企業資訊查詢,可以更全面的了解企業資訊。

舉例來說,想了解一家企業的資訊,涵蓋了公司設立資訊、產品資訊、相關聯性資訊等等,利用 Neo4j 就可以查詢到相關聯的關係人資訊,如合作夥伴、客戶、投資人、供應商資料等等,藉由圖資料查詢可以層層挖掘資料,了解其中的複雜關係。

(三)金融產業應用:反洗錢的模型與反欺詐多維關聯分析場景

藉由 Neo4j 可以清楚知道有洗錢疑慮的網絡,相關的帳號、交易時間、手機 IMEI 碼等等,再進一步可進行關聯性的分析。

Neo4j的操作介面

在 neo4j 的數據模型中,您可以看到有許多節點,這些節點是名詞,例如人物、地點、物品等。這些節點之間還可以設置屬性,就像標籤一樣。更重要的是,節點之間可以有關係,並且在 neo4j 中,這些關係是一等公民,意味著它們與節點本身一樣重要。您可以為這些關係添加不同的屬性,甚至是地理空間信息或日期時間信息。

專為圖形設計的查詢語言——Cypher

neo4j 開發了一種專為圖形設計的查詢語言——Cypher。這種語言基於模式匹配,適合處理高度連接的數據問題。相比於傳統的 SQL,Cypher 提供了更靈活的查詢方式,使得用戶可以更容易地查找和分析網絡和圖形中的模式。

MATCH (p:Person)<-[:ACTED_IN]->(m:Movie)
WHERE m.title = "雲圖"
RETURN p

作為一個例子,假如您在探索如何通過遊戲推薦來了解用戶,使用 Cypher 可以讓這一過程非常直觀而有效。這種強大的數據模型和查詢語言的組合,讓 neo4j 在多個應用領域,如推薦系統、詐騙檢測和網絡管理等,展現出極大的潛力。


17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。

如果你認同我或想支持我的努力,歡迎請我喝一杯咖啡!讓我更有動力分享知識!