作 者:俞方樺 著
定 價:79
出 版 社:清華大學出版社
出版日期:2020年07月01日
頁 數:324
裝 幀:平裝
ISBN:9787302555483
本書基於Neo4j數據庫3.5版本及其對應的ALGO和APOC擴展包,詳細介紹了近二百個主要過程和函數的定義、相關理論、使用方法、代碼樣例,讓廣大Neo4j圖數據庫的設計和開發人員能夠快速掌握正確和高效的圖數據庫分析方法及其應用開發技能。
●部分 概述
第1章 Neo4j圖數據庫擴展概述3
1.1 Neo4j圖數據庫平臺3
1.1.1 圖數據庫是當今熱門的NoSQL數據庫類別3
1.1.2 Neo4j圖數據庫平臺4
1.1.3 原生圖數據庫5
1.2 Neo4j數據庫擴展7
1.2.1 背景7
1.2.2 APOC擴展庫的內容8
1.2.3 ALGO擴展庫的內容12
1.2.4 ALGO擴展庫的未來版本14
第2章 擴展包的安裝和配置18
2.1 擴展包的下載18
2.2 擴展包的安裝和配置18
2.2.1 在Neo4j Desktop中自動安裝18
2.2.2 手動安裝19
2.2.3 在Docker容器中安裝19
2.2.4 測試安裝20
2.2.5 在線文檔20
第二部分 APOC擴展包使用指南
第3章 路徑擴展過程23
3.1 路徑擴展過程概述23
3.2 主要參數說明25
3.2.1 標簽過濾器(labelFilter)25
3.2.2 關繫過濾器(relationshipFilter)25
3.2.3 標簽和關繫序列(Sequence)26
3.2.4 性規則(Uniqueness)27
3.2.5 理解Cypher的模式匹配28
3.3 基本路徑擴展過程32
3.3.1 定義32
3.3.2 應用32
3.3.3 過程概述-apoc.path.expand33
3.3.4 過程調用接口-apoc.path.expand33
3.3.5 示例-創建三國人物關繫圖33
3.3.6 示例-apoc.path.expand34
3.4 可配置的路徑擴展過程35
3.4.1 定義35
3.4.2 過程概述-apoc.path.expandConfig36
3.4.3 過程調用接口-apoc.path.expandConfig36
3.4.4 示例-apoc.path.expandConfig37
3.5 搜索子圖38
3.5.1 定義38
3.5.2 應用39
3.5.3 過程概述-apoc.path.subgraphNodes39
3.5.4 過程調用接口-apoc.path.subgraphNodes39
3.5.5 示例-apoc.path.subgraphNodes41
3.6 搜索小生成樹42
第4章 查詢任務管理43
4.1 查詢任務管理概述43
4.2 按照條件循環執行-commit46
4.2.1 定義46
4.2.2 應用47
4.2.3 過程概述-apoc.periodic.commit47
4.2.4 過程調用接口-apoc.periodic.commit47
4.2.5 示例-apoc.periodic.commit47
4.3 按照集合內容循環執行-iterate48
4.3.1 定義48
4.3.2 應用49
4.3.3 過程概述-apoc.periodic.iterate49
4.3.4 過程調用接口-apoc.periodic.iterate49
4.3.5 示例-apoc.periodic.iterate50
4.4 異步執行Cypher查詢-submit51
4.4.1 定義51
4.4.2 應用51
4.4.3 過程概述51
4.4.4 示例51
4.5 自定義Cypher函數和過程52
4.5.1 定義52
4.5.2 應用52
4.5.3 過程調用接口52
4.5.4 示例54
4.6 Cypher執行過程54
4.6.1 定義54
4.6.2 應用56
4.6.3 過程調用接口-apoc.cypher.run56
4.6.4 示例-apoc.cypher.run56
4.6.5 過程調用接口-apoc.cypher.runTimeboxed56
4.6.6 示例-apoc.cypher.runTimeboxed57
4.6.7 過程調用接口-apoc.cypher.doIt58
4.6.8 示例-apoc.cypher.doIt58
4.6.9 過程調用接口-apoc.cypher.runFiles59
4.6.10 過程調用接口-apoc.cypher.runSchemaFiles60
4.6.11 過程調用接口-apoc.cypher.parallel60
4.6.12 示例-apoc.cypher.parallel61
4.6.13 過程調用接口-apoc.cypher.mapParallel61
4.6.14 示例-apoc.cypher.mapParallel61
4.7 Cypher執行的條件分支62
4.7.1 定義62
4.7.2 應用62
4.7.3 過程調用接口-apoc.*.when62
4.7.4 示例-apoc.when63
4.7.5 過程調用接口-apoc.case63
4.7.6 示例-apoc.cypher.*case64
第5章 數據導入和導出65
5.1 數據導入和導出概述65
5.2 導出到CSV文件-export.csv.*69
5.2.1 定義69
5.2.2 應用69
5.2.3 過程概述70
5.2.4 過程調用接口-export.csv.all70
5.2.5 示例-export.csv.all70
5.2.6 過程調用接口-export.csv.data71
5.2.7 示例-export.csv.data71
5.2.8 過程調用接口-export.csv.graph72
5.2.9 示例-export.csv.graph72
5.2.10 過程調用接口-export.csv.query73
5.2.11 示例-export.csv.query73
5.3 導出到JSON文件73
5.3.1 定義73
5.3.2 應用74
5.3.3 過程概述74
5.3.4 過程調用接口-export.json.all74
5.3.5 示例-export.json.all74
5.3.6 過程調用接口-export.json.data74
5.3.7 示例-export.json.data75
5.3.8 過程調用接口-export.csv.graph75
5.3.9 示例-export.json.graph76
5.3.10 過程調用接口-export.json.query76
5.3.11 示例-export.json.query76
5.4 導出到Cypher查詢文件77
5.4.1 定義77
5.4.2 應用77
5.4.3 過程概述77
5.4.4 過程調用接口-export.cypher.all77
5.4.5 示例-export.cypher.all78
5.4.6 過程調用接口-export.cypher.data79
5.4.7 示例-export.cypher.data79
5.4.8 過程調用接口-export.cypher.graph79
5.4.9 示例-export.cypher.graph80
5.4.10 過程調用接口-export.cypher.query80
5.4.11 示例-export.cypher.query81
5.4.12 過程調用接口-export.cypher.schema81
5.4.13 示例-export.cypher.schema82
5.5 導入CSV文件82
5.5.1 定義82
5.5.2 應用82
5.5.3 過程概述82
5.5.4 過程調用接口-apoc.load.csv83
5.5.5 示例-apoc.load.csv84
5.6 導入JSON數據85
5.6.1 定義85
5.6.2 應用87
5.6.3 過程概述87
5.6.4 過程調用接口-apoc.load.json87
5.6.5 示例-apoc.load.json88
5.7 導入XML 文件90
5.7.1 定義90
5.7.2 導入XML文檔-apoc.xml.import90
5.7.3 示例-apoc.xml.import92
5.7.4 XML文檔加載-apoc.load.xml94
5.7.5 示例-apoc.load.xml95
5.8 訪問其他Neo4j數據庫96
5.8.1 概述96
5.8.2 過程定義-apoc.bolt.execute97
5.8.3 過程調用接口-apoc.bolt.execute97
5.8.4 示例-apoc.bolt.execute98
5.8.5 過程定義-apoc.bolt.load99
5.9 從JDBC源導入數據99
5.9.1 概述99
5.9.2 過程定義-apoc.load.driver101
5.9.3 過程調用接口-apoc.load.driver101
5.9.4 過程定義-apoc.load.jdbc102
5.9.5 過程調用接口-apoc.load.jdbc102
5.9.6 示例-apoc.load.jdbc102
5.9.7 過程定義-apoc.load.jdbcUpdate103
5.9.8 過程調用接口-apoc.load.jdbcUpdate103
5.9.9 示例-apoc.load.jdbcUpdate104
5.9.10 過程定義-apoc.model.jdbc104
5.9.11 過程調用接口-apoc.model.jdbc104
5.9.12 示例-apoc.model.jdbc105
第6章 圖重構107
6.1 圖重構概述107
6.2 克隆節點108
6.2.1 定義108
6.2.2 過程概述109
6.2.3 過程調用接口-apoc.refactor.cloneNodes109
6.2.4 示例-apoc.refactor.cloneNodes109
6.3 克隆節點及其關繫110
6.3.1 定義110
6.3.2 過程概述110
6.3.3 過程調用接口-apoc.refactor.cloneNodesWithRelationships110
6.4 克隆子圖110
6.4.1 定義110
6.4.2 過程概述111
6.4.3 過程調用接口-apoc.refactor.cloneSubgraph111
6.4.4 示例-apoc.refactor.cloneSubgraph111
6.5 合並節點112
6.5.1 定義112
6.5.2 過程概述112
6.5.3 過程調用接口-apoc.refactor.mergeNodes112
6.5.4 示例-apoc.refactor.mergeNodes112
6.6 合並關繫113
6.6.1 定義113
6.6.2 過程概述113
6.6.3 過程調用接口-apoc.refactor.mergeRelationships114
6.6.4 示例-apoc.refactor.mergeRelationships114
6.7 重定向關繫115
6.7.1 定義115
6.7.2 過程概述115
6.7.3 過程調用接口-apoc.refactor.from115
6.7.4 示例-apoc.refactor.from116
6.8 反轉關繫116
6.8.1 定義116
6.8.2 過程概述116
6.8.3 過程調用接口-apoc.refactor.invert117
6.8.4 示例-apoc.refactor.invert117
6.9 設置關繫類型117
6.9.1 定義117
6.9.2 過程概述118
6.9.3 過程調用接口-apoc.refactor.setType118
6.9.4 示例-apoc.refactor.setType118
6.10 將關繫轉換成節點118
6.10.1 定義118
6.10.2 過程概述119
6.10.3 過程調用接口-apoc.refactor.extractNode119
6.10.4 示例-apoc.refactor.extractNode119
6.11 將節點轉換為關繫120
6.11.1 定義120
6.11.2 過程概述120
6.11.3 過程調用接口-apoc.refactor.collapseNode120
6.11.4 示例-apoc.refactor.cloneNodes121
6.12 標準化為布爾值121
6.12.1 定義121
6.12.2 過程概述121
6.12.3 過程調用接口-apoc.refactor.normalizeAsBoolean121
6.12.4 示例-apoc.refactor.normalizeAsBoolean122
6.13 分類123
6.13.1 定義123
6.13.2 過程概述123
6.13.3 過程調用接口-apoc.refactor.categorize123
6.13.4 示例-apoc.refactor.categorize124
6.14 重命名125
6.14.1 定義125
6.14.2 過程概述125
6.14.3 示例-apoc.refactor.rename.nodeProperty125
第7章 數據庫運維127
7.1 數據庫運維概述127
7.2 使用觸發器129
7.2.1 概述129
7.2.2 過程概述-apoc.trigger.add130
7.2.3 過程調用接口-apoc.trigger.add131
7.2.4 示例-apoc.trigger.add131
7.3 管理索引132
7.3.1 概述132
7.4數據133
7.4.1 概述133
7.4.2 過程概述-apoc.meta.*134
7.4.3 過程調用接口-apoc.meta.*134
7.4.4 示例-apoc.meta.*135
7.5 數據庫監控136
7.5.1 概述136
7.5.2 過程概述-apoc.monitor.*136
7.5.3 過程調用接口-apoc.monitor.*136
7.5.4 示例-apoc.monitor.*136
第8章 工具函數和過程138
8.1 工具函數和過程概述138
8.2 節點相關操作143
8.2.1 概述143
8.3 路徑相關操作145
8.3.1 概述145
8.3.2 函數概述-apoc.path.combine146
8.3.3 函數調用接口-apoc.path.combine146
8.3.4 示例-apoc.path.combine146
8.3.5 函數概述-apoc.path.create147
8.3.6 函數調用接口-apoc.path.create147
8.3.7 示例-apoc.path.create147
8.3.8 函數概述-apoc.path.elements147
8.3.9 函數調用接口-apoc.path.elements147
8.3.10 示例-apoc.path.elements148
8.3.11 函數概述-apoc.path.slice148
8.3.12 函數調用接口-apoc.path.slice148
8.3.13 示例-apoc.path.slice148
8.4 並行節點搜索149
8.4.1 概述149
8.4.2 函數概述-apoc.search.node150
8.4.3 函數調用接口-apoc.search.node150
8.4.4 示例-apoc.search.node150
8.5 地圖和空間計算相關功能150
8.5.1 概述150
8.5.2 過程概述-apoc.spatial.geocode152
8.5.3 過程調用接口-apoc.spatial.geocode152
8.5.4 示例-apoc.spatial.geocode152
8.5.5 過程概述-apoc.spatial.reverseGeocode153
8.5.6 過程調用接口-apoc.spatial.reverseGeocode153
8.5.7 示例-apoc.spatial.reverseGeocode153
8.6 集合相關操作154
8.7 圖生成157
8.7.1 概述157
8.7.2 過程概述-apoc.generate.er157
8.7.3 過程調用接口-apoc.generate.er158
8.7.4 示例-apoc.generate.er158
8.7.5 過程概述-apoc.generate.ws159
8.7.6 過程調用接口-apoc.generate.ws160
8.7.7 示例-apoc.generate.ws160
8.7.8 過程概述-apoc.generate.ba161
8.7.9 過程調用接口-apoc.generate.ba162
8.7.10 示例-apoc.generate.ba163
8.7.11 過程概述-apoc.generate.complete164
8.7.12 過程調用接口-apoc.generate.complete164
8.7.13 示例-apoc.generate.complete164
8.7.14 過程概述-apoc.generate.simple165
8.7.15 過程調用接口-apoc.generate.simple165
8.7.16 示例-apoc.generate.simple165
第9章 虛擬圖167
9.1 虛擬圖概述167
9.2 虛擬節點和關繫168
9.2.1 概述168
9.2.2 過程概述-apoc.create.vNode170
9.2.3 過程調用接口-apoc.create.vNode171
9.2.4 示例-apoc.create.vNode171
9.2.5 過程概述-apoc.create.vNodes171
9.2.6 過程調用接口-apoc.create.vNodes171
9.2.7 示例-apoc.create.vNodes172
9.2.8 過程概述-apoc.create.vRelationship172
9.2.9 過程調用接口-apoc.create.vRelationship172
9.2.10 示例-apoc.create.vRelationship173
9.2.11 過程概述-apoc.create.vPattern174
9.2.12 過程調用接口-apoc.create.vPattern174
9.2.13 示例-apoc.create.vPattern174
9.2.14 過程概述-apoc.create.vPatternFull175
9.2.15 過程調用接口-apoc.create.vPatternFull175
9.2.16 過程概述-apoc.nodes.collapse176
9.2.17 過程調用接口-apoc.nodes.collapse176
9.2.18 示例-apoc.nodes.collapse177
9.3 虛擬圖178
9.3.1 概述178
9.3.2 過程概述-apoc.graph.fromData179
9.3.3 過程調用接口-apoc.graph.fromData179
9.3.4 示例-apoc.graph.fromData179
9.3.5 過程概述-apoc.graph.fromPath179
9.3.6 過程調用接口-apoc.graph.fromPath180
9.3.7 示例-apoc.graph.fromPath180
9.3.8 過程概述-apoc.graph.fromPaths180
9.3.9 過程概述-apoc.graph.fromCypher180
9.3.10 過程調用接口-apoc.graph.fromCypher180
9.3.11 示例-apoc.graph.fromCypher181
9.3.12 過程概述-apoc.graph.fromDocument181
9.3.13 過程調用接口-apoc.graph.fromDocument181
9.3.14 示例-apoc.graph.fromDocument182
9.3.15 過程概述-apoc.nodes.group183
9.3.16 過程調用接口-apoc.nodes.group184
9.3.17 示例-apoc.nodes.group185
第三部分 ALGO擴展包使用指南
第10章 路徑搜索189
10.1 路徑搜索概述189
10.2 廣度和深度優先搜索192
10.3 短路徑192
10.3.1 概述192
10.3.2 過程概述-apoc.shortestPath*193
10.3.3 過程調用接口-algo.shortestPath*193
10.3.4 示例-algo.shortestPath194
10.4 A*短路徑196
10.4.1 概述196
10.4.2 過程概述-apoc.shortestPath.astar*196
10.4.3 過程調用接口-algo.shortestPath*196
10.4.4 示例-algo.shortestPath.astar*197
10.5 單源起點短路徑198
10.5.1 概述198
10.5.2 過程概述-apoc.shortestPath.deltaStepping*199
10.5.3 過程調用接口-algo.shortestPath.deltaStepping*199
10.5.4 示例-algo.shortestPath.deltaStepping*200
10.6 全圖短路徑201
10.6.1 概述201
10.6.2 過程概述-algo.allShortestPaths*201
10.6.3 過程調用接口-algo.allShortestPaths*201
10.6.4 示例-algo.allShortestPaths202
10.7 K-條短路徑203
10.7.1 概述203
10.7.2 過程概述-algo.kShortestPaths*204
10.7.3 過程調用接口-algo.kShortestPaths*204
10.7.4 示例-algo.kShortestPaths206
10.8 小生成樹206
10.8.1 概述206
10.8.2 過程概述-algo.spanningTree.*207
10.8.3 過程調用接口-algo.spanningTree.minimum207
10.8.4 示例-algo.spanningTree.minimum208
10.9 隨機遊走209
10.9.1 定義209
10.9.2 應用209
10.9.3 過程概述209
10.9.4 簡單過程調用接口210
10.9.5 完整過程調用接口210
10.9.6 示例-algo.randomWalk211
第11章 社團檢測212
11.1 社團檢測概述212
11.1.1 算法一覽212
11.1.2 圖的聚集成群特征214
11.1.3 過程使用說明215
11.2 三角計數和集聚繫數216
11.2.1 概述216
11.2.2 過程概述-algo.triangle.stream217
11.2.3 過程調用接口-algo.triangle*217
11.2.4 示例-algo.triangle.stream218
11.2.5 過程概述-algo.triangleCount*218
11.2.6 過程調用接口-algo.triangle*218
11.2.7 示例-algo.triangleCount.stream219
11.3 強連通分量219
11.3.1 概述219
11.3.2 過程概述-algo.scc220
11.3.3 過程調用接口-algo.scc221
11.4 連通分量221
11.4.1 概述221
11.4.2 過程概述-algo.unionFind*222
11.4.3 過程調用接口-algo.unionFind*223
11.4.4 示例-algo.unionFind*224
11.5 標簽傳播算法224
11.5.1 概述224
11.5.2 過程概述-algo.labelPropagation*226
11.5.3 過程調用接口-algo.labelPropagation*226
11.5.4 示例-algo.unionFind*227
11.6 Louvain模塊度算法228
11.6.1 概述228
11.6.2 過程概述-algo.louvain*230
11.6.3 過程調用接口-algo.louvain*230
11.6.4 示例-algo.louvain*232
11.7 小結233
第12章 中心性算法234
12.1 中心性算法概述234
12.2 度中心性237
12.2.1 概述237
12.2.2 過程概述-algo.degree*238
12.2.3 過程調用接口-algo.degree*238
12.2.4 示例-algo.degree*239
12.3 緊密中心性240
12.3.1 概述240
12.3.2 過程概述-algo.closeness*241
12.3.3 過程調用接口-algo.closeness*241
12.3.4 示例-algo.closeness*242
12.4 協調中心性242
12.4.1 概述242
12.4.2 過程概述-algo.harmonic*243
12.4.3 過程調用接口-algo.harmonic*243
12.4.4 示例-algo.harmonic*244
12.5 間接中心性244
12.5.1 概述244
12.5.2 過程概述-algo.betweenness*245
12.5.3 過程調用接口-algo.betweenness*246
12.5.4 示例-algo.betweenness*247
12.6 特征向量中心性247
12.6.1 概述247
12.6.2 過程概述-algo.eigenvector*248
12.6.3 過程調用接口-algo.eigenvector*248
12.6.4 示例-algo.eigenvector*249
12.7 頁面排行250
12.7.1 概述250
12.7.2 過程概述-algo.pageRank*252
12.7.3 過程調用接口-algo.pageRank*252
12.7.4 示例-algo.pageRank*253
12.8 小結254
第13章 相似度算法255
13.1 相似度算法概述255
13.1.1 相似度過程255
13.1.2 什麼是相似度256
13.2 Jaccard相似度257
13.2.1 概述257
13.2.2 函數/過程概述-algo.similarity.jaccard*258
13.2.3 調用接口-algo.similarity.jaccard258
13.2.4 示例-algo.similarity.jaccard*260
13.3 重疊相似度260
13.3.1 概述260
13.3.2 函數/過程概述-algo.similarity.overlap*261
13.3.3 調用接口-algo.similarity.overlap261
13.4 餘弦相似度262
13.4.1 概述262
13.4.2 函數/過程概述-algo.similarity.cosine*263
13.4.3 調用接口-algo.similarity.cosine263
13.4.4 示例-algo.similarity.cosine*264
13.5 歐幾裡德相似度265
13.5.1 概述265
13.5.2 函數/過程概述-algo.similarity.euclideanDistance*265
13.5.3 調用接口-algo.similarity.euclideanDistance*266
13.5.4 示例-algo.similarity.euclideanDistance *267
第四部分 Neo4j數據庫擴展開發指南
第14章 數據庫擴展開發271
14.1 數據庫擴展開發概述271
14.2 關於安全性272
14.2.1 沙箱272
14.2.2 白名單273
14.3 創建數據庫擴展項目273
14.3.1 創建新項目273
14.3.2 指定項目信息275
14.3.3 創建程序包和過程類277
14.4 創建數據庫擴展過程279
14.4.1 個過程-hello279
14.4.2 編譯和打包-hello281
14.4.3 部署和測試-hello283
14.4.4 小結283
14.5 開發擴展函數285
14.5.1 調用擴展函數285
14.5.2 開發擴展函數285
14.6 開發擴展彙總函數286
14.6.1 調用彙總函數286
14.6.2 編寫用戶定義的彙總函數286
14.7 細粒度圖數據訪問控制287
14.7.1 方法288
14.7.2 定義用戶和角色288
14.7.3 實現擴展過程288
第15章 自定義的圖遍歷289
15.1 自定義的圖遍歷概述289
15.2 Neo4j 遍歷框架289
15.2.1 主要概念290
15.2.2 遍歷框架Java API290
15.3 生成測試圖292
15.4 k-度鄰居統計-Cypher的實現292
15.5 k-度鄰居統計-擴展過程的實現293
15.5.1 創建過程293
15.5.2 進一步優化295
本書共13章,全面、繫統和詳盡地介紹Neo4j圖數據庫擴展的概念、APOC和ALGO擴展包的使用、以及開發服務器擴展的方法。內容分為四個部分,依次為:Neo4j圖數據庫擴展介紹;APOC擴展包函數和過程指南;ALGO擴展包函數和過程指南;開發和測試方法。