Neo4j 圖資料庫擴展指南:APOC和ALGO

Neo4j 圖資料庫擴展指南:APOC和ALGO

《Neo4j 圖資料庫擴展指南:APOC和ALGO》是2020年清華大學出版社出版的圖書,作者是俞方樺。

基本介紹

  • 中文名:Neo4j 圖資料庫擴展指南:APOC和ALGO
  • 作者:俞方樺
  • 出版時間:2020年6月1日
  • 出版社:清華大學出版社
  • ISBN:9787302555483
內容簡介,作者簡介,前言、序言,

內容簡介

本書共13章,全面、系統和詳盡地介紹Neo4j圖資料庫擴展的概念、APOC和ALGO擴展包的使用、以及開發伺服器擴展的方法。內容分為四個部分,依次為:Neo4j 圖資料庫擴展介紹;APOC 擴展包函式和過程指南;ALGO 擴展包函式和過程指南;開發和測試方法。

作者簡介

張老師是微雲數聚(北京)科技有限公司創始人、中國IT界元老、中國圖資料庫先導者、大數據領域資深專家、WPS曲線漢字全套核心技術的發明人。1985年研究生畢業於國防科技大學,獲中國首屆信息系統工程碩士。

前言、序言

前 言
本書的內容
Neo4j是當今全球領先的圖資料庫軟體,起源於開源的圖資料庫項目,經過十餘年的發展,已經在很多企業、研究機構中有著廣泛和成功的套用。隨著資料庫規模的增加,以及對圖算法類型、查詢性能和資料庫管理功能等要求越來越高,Neo4j推出了擴展包APOC和ALGO以滿足這些要求。
APOC 和ALGO 都是Neo4j開發和共享的資料庫擴展,它們包含了很多實用的算法過程和函式。APOC提供了豐富的與查詢執行、數據集成、資料庫管理等相關的過程和函式,而ALGO則包含常用的圖算法過程。APOC是Awesome Procedures Of Cypher的簡稱,同時也是電影《黑客帝國》中的一個角色;ALGO的名字就很容易明白了,它就是英文ALGOrithms(算法)的開始部分。
APOC和ALGO的內容豐富、功能強大,作為Neo4j資料庫功能的擴充,是實現高性能查詢、資料庫集成、複雜算法等複雜套用所必須的。然而,國內的技術人員苦於一直沒有關於APOC和ALGO介紹的中文資料,無法真正發揮它們的價值。另一方面,英文線上文檔中使用的數據樣例也不是中國用戶所熟悉和了解的。這對於深刻理解像圖算法這樣的複雜概念來說又增加了不少難度。
出於上面的原因,我們在策劃《圖資料庫技術叢書》系列的第三本時,選擇了介紹APOC和ALGO擴展包。
本書基於Neo4j資料庫3.5版本及其對應的ALGO和APOC擴展包,詳細介紹了近二百個主要過程和函式的定義、相關理論、使用方法、代碼樣例,讓廣大Neo4j圖資料庫的設計和開發人員能夠快速掌握正確和高效的圖資料庫分析方法及其套用開發技能。
本書分成四個部分:
(1)概述(第1~2章),介紹Neo4j資料庫擴展的起源和安裝配置方法;
(2)APOC擴展包使用指南(第3~9章),介紹APOC中7類主要過程和方法的使用;
(3)ALGO擴展包使用指南(第10~13章),介紹ALGO中4類圖算法相關過程和方法的使用;
(4)Neo4j資料庫擴展開發指南(第14~15章),介紹使用Java開發資料庫擴展過程和函式的方法。
全書共分15章,各章節介紹如下:
第1章 Neo4j圖資料庫擴展概述。回顧Neo4j圖資料庫擴展的起源和來歷,並概述兩個主要擴展包APOC和ALGO的內容。對於2020年4月最新發布的Graph Data Science擴展包,及其對ALGO擴展包中相關圖算法過程所做的接口改變也進行了介紹。
第2章 擴展包的安裝和配置。介紹擴展包在不同Neo4j版本中的安裝、配置和測試方法。
第3章 路徑擴展過程。介紹APOC中與路徑擴展相關的過程,通過實例說明如何對圖中節點和關係進行更加高效的遍歷,也介紹了APOC中對子圖操作的過程。
第4章 查詢任務管理。介紹查詢的更新方法,特別是如何通過控制批次大小減少事務對記憶體的要求、如何通過指定並發性提高查詢執行性能。本章還介紹了動態Cypher查詢執行方法和條件分支執行。
第5章 數據導入和導出。介紹從各種數據源,包括XML、JSON、JDBC以及外部Neo4j資料庫導入數據到Neo4j的方法,以及從Neo4j導出圖或圖的一部分到各種格式/目的數據存儲的方法。
第6章 圖重構。圖重構是對圖資料庫中節點、關係和屬性定義的變更和轉換操作。APOC提供的重構過程支持節點的合併、到關係的轉換,關係的合併、重定向、反轉、到節點的轉換,根據屬性值創建節點等操作。
第7章 資料庫運維。主要介紹APOC中關於資料庫觸發器、索引管理、元數據和監控相關指標的過程和函式。
第8章 工具函式和過程。介紹APOC中路徑對象相關操作、地圖相關過程、集合操作;本章還介紹了幾種主要的圖生成過程。
第9章 虛擬圖。虛擬圖是僅存在於記憶體的圖。虛擬圖的創建和查詢操作包括虛擬節點和關係的創建和查詢。在記憶體中的圖對象是許多圖算法的輸入。
第10章 路徑搜尋。最短路徑是圖算法和分析中最基本的一類方法。ALGO擴展包提供若干常用最短路徑搜尋方法,以及最小生成樹和隨機遊走的算法過程。
第11章 社團檢測。介紹ALGO包中提供的幾類相關算法過程:三角結構搜尋、連通分量、標籤傳播、模組度方法。
第12章 中心性算法。介紹ALGO包中提供的幾類中心性算法過程:維度中心性、緊密中心性、協調中心性、間接中心性、特徵向量中心性和頁面排行。
第13章 相似度算法。介紹ALGO包中支持的幾種計算節點和/或關係相似度的函式和方法,包括Jaccard相似度、重疊相似度、餘弦相似度以及幾何相似度。對圖學習相關概念和方法,例如特徵工程、圖嵌入也做了介紹。
第14章 資料庫擴展開發。詳細、完整地介紹如何使用Java開發客戶化的Neo4j資料庫擴展過程和函式。
第15章 自定義的圖遍歷。在第14章的基礎之上,進一步深入介紹如何基於Neo4j的“遍歷框架”實現高效的圖遍歷過程。
如何使用本書
本書提供APOC和ALGO擴展包中多數過程和方法的使用參考,每個過程或方法均包括:
? 概述:說明過程和函式的用途、相關理論和方法;
? 調用接口:查詢、參數說明和返回值;
? 示例:基於樣例數據的Cypher。
本書章節按照過程所屬的擴展包(APOC或ALGO)、然後是功能類別進行組織。如果你知道要進行什麼樣的操作、實現什麼樣的功能,可以通過目錄找到對應的章節。
如果你要查找特定的過程或函式,可以從“目錄”後的“ALGO過程和函式索引”、“APOC過程和函式索引”按照字母順序找到它們所在的章節。
格式及說明
為方便區別不同的內容,本書中使用的特定排版格式。舉例說明如下(按照在書中出現的先後順序排列)。
(1)Linux命令行:
U
N
I
X mkdir plugins
pushd plugins
wget https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/3.5/apoc-3.5-all.jar
popd
docker run --rm -e NEO4J_AUTH=none -p 7474:7474 -v $PWD/plugins:/plugins -p 7687:7687 neo4j:3.5
(2)Cypher查詢(包含注釋行):
C
Y
P
H
E
R // 2.2 (1) 測試ALGO擴展包安裝
CALL algo.list
// 2.2 (2) 測試APOC擴展包安裝
RETURN apoc.version
(3)過程定義:
下面的圖例表示過程apoc.path.expandConfig:
? 支持有向圖;
? 無關於權重圖,即圖中關係上是否帶權重屬性對過程沒有影響;
? 返回結果到客戶端;
? 不更新資料庫;
? 低複雜度,通常是O(N)、O(LogN)或O(N*LogN);
? 不支持並行執行(單進程)。
過程 apoc.path.expandConfig
(4)過程接口:
過程接口 CALL apoc.path.subgraphNodes
startNode Node/list,config
) YIELD node
(5)Neo4j資料庫配置選項(在neo4j.conf檔案中指定):
neo4j.conf apoc.jobs.pool.num_threads=10
(6)CSV檔案內容:
C
S
V name,genre,zi,weapon,title
劉備,男,玄德,雙鐧,昭烈皇帝
關羽,男,雲長,青龍偃月刀;長劍,漢壽亭候
(7)JSON檔案內容:
J
S
O
N {
"store": {
"book": [
{
"category": "reference"
}
],
"bicycle": {
"color": "red", "price": 19.95
}
},
"expensive": 10
}
(8)XML文檔內容:
XML
<目錄>
<圖書 id="bk101">
<作者>羅貫中
<書名>三國演義
<出版日期>2000-10-01
<簡介>中國古代四大名著之一。三國指的是魏、蜀漢、吳。
(9)Java代碼:
J
A
V
A package com.mypackage;
import org.neo4j.graphdb.GraphDatabaseService;
public class Procedures {
@Context
public GraphDatabaseService db;
@Context
public Log log;
}
(10)重要技巧,建議使用:
重要技巧 僅在對路徑進行擴展時定義序列才是重要的。因此,如果只需要搜尋能夠到達的節點,或者路徑的序列由其他規則選擇,那應當避免使用序列sequence參數。例如,我們建議在apoc.path.subgraphNodes()、apoc.path.subgraphAll()和apoc.path.spanningTree()過程中不要使用序列,因為這些過程中實現的高效匹配唯一節點算法會干擾序列化路徑定址的執行。
(11)警告信息,避免使用:
避免使用 除非明確知道需求、數據特徵、而且已經測試過相關邏輯,否則不要使用NONE作為唯一性規則,因為這樣會在遍歷有環的圖時形成無限循環,從而影響資料庫運行。
(12)重要提示,謹慎使用:
小心使用 僅當資料庫是存儲在SSD(固態硬碟)時才使用parallel:true選項,因為SSD具有更好的隨機讀寫速率。如果是物理硬碟,則不要使用並行選項,因為這反而會降低整體執行效率。
源碼下載與技術支持
本書中所有樣例數據、Cypher代碼和Java項目和代碼均可以在這裡免費訪問:
https://github.com/Joshua-Yu/neo4j-extensions-book
如有問題,歡迎在Neo4j中文社區中留言:http://neo4j.com.cn。
作者聯繫信箱:張幟:[email protected],俞方樺:[email protected]
致 謝
每一本書從構思到編寫到出版都不是一蹴而就的,其中不僅僅有編者的辛勤努力,也與更多人的支持和付出密不可分。這裡,我首先要感謝張幟老師,作為叢書的主編,是他激勵我寫這本書、積極與出版社聯繫,並在撰寫過程中給予我很多指導。
我還要感謝Neo4j的同事們。在寫作過程中無論什麼時候我有問題,他們都及時耐心地回復我,他們似乎是7×24小時線上、永遠不知疲倦。對於本書的內容,他們也提出了寶貴的建議和意見。
我要感謝來自華為和平安科技的用戶們,他們提供的關於過程文檔和代碼的反饋意見,不僅對本書的內容有積極的參考價值,還使得存在的代碼缺陷、文檔疏漏得到及時修正。
特別感謝清華大學出版社的編輯老師們,有了他們的竭力支持和精雕細琢,本書才得以順利問世。
在本書撰寫的過程中,尤其感謝我的家人給予的支持和幫助;特別地,謹以此書紀念我的母親。
期望這本書能夠給中國大數據和圖資料庫領域的同行們提供有益的借鑑和參考,特別為圖資料庫的研究和套用發展盡綿薄之力。由於時間倉促,以及筆者能力所限,書中難免有錯誤及不足之處,敬請讀者海涵,並提出寶貴意見。我們會在後續的版本中予以更正和補充。
俞方樺
2020年1月3日於悉尼

相關詞條

熱門詞條

聯絡我們