Neo4j APOC-01-圖資料庫 apoc 外掛介紹

老马啸西风發表於2024-12-03

neo4j apoc 系列

Neo4j APOC-01-圖資料庫 apoc 外掛介紹

Neo4j APOC-01-圖資料庫 apoc 外掛安裝 neo4j on windows10

Neo4j APOC-03-圖資料庫 apoc 實戰使用使用

Neo4j APOC-04-圖資料庫 apoc 實戰使用使用 apoc.path.spanningTree 最小生成樹

neo4j 的 apoc

Neo4j 的 APOC(Awesome Procedures on Cypher)是一個非常強大的 Neo4j 外掛,它擴充套件了 Cypher 查詢語言的功能,提供了大量的實用函式和儲存過程,極大地增強了 Neo4j 的功能性。

APOC 適用於需要更復雜資料處理和操作的場景,支援各種資料轉換、圖演算法、資料匯入/匯出、整合外部系統等操作。

1. APOC 的基本功能

APOC 外掛包含了以下幾類常用功能:

  • 資料轉換和處理

    • 支援各種圖資料的轉換,例如將節點和關係轉換為其他格式(JSON、CSV 等),以及對圖的結構和資料進行各種操作(過濾、聚合、排序等)。
    • 提供了對集合、字串、日期等資料型別的操作函式。
  • 圖演算法

    • APOC 提供了許多圖演算法(如最短路徑、中心度、PageRank 等),雖然 Neo4j 本身也有圖演算法庫(Graph Data Science),但是 APOC 是一個更加輕量級的選擇,適用於簡單的圖分析任務。
  • 儲存過程

    • 提供了豐富的儲存過程,例如批次資料插入、更新、刪除、匯入匯出等。
    • 支援對圖資料庫的各種操作進行封裝,並簡化複雜操作。
  • 與外部系統的整合

    • APOC 支援透過 HTTP 訪問外部 REST API,或者與檔案系統互動(如上傳、下載檔案),以便整合外部資料來源。
    • 也支援與外部資料庫的連線,如匯入其他資料庫的資料到 Neo4j。

總結

APOC 是一個功能豐富且靈活的 Neo4j 外掛,它為 Cypher 查詢語言提供了大量實用的擴充套件,涵蓋了資料處理、圖演算法、外部系統整合等方面。

透過使用 APOC,開發者可以大大提高圖資料庫的操作效率和靈活性,尤其是在複雜的資料處理和分析任務中。

apoc 常用的功能

下面是一些常用的 APOC 外掛功能和示例

功能 儲存過程/函式 描述 示例
資料轉換 apoc.convert.toJson() 將節點、關係或任何圖資料結構轉換為 JSON 格式 MATCH (n:Person) RETURN apoc.convert.toJson(n)
集合操作 apoc.coll.flatten() 將巢狀的集合扁平化 RETURN apoc.coll.flatten([[1, 2], [3, 4]])
apoc.coll.sum() 計算集合中所有元素的和 RETURN apoc.coll.sum([1, 2, 3, 4])
apoc.text.join() 將集合中的元素連線成一個字串 RETURN apoc.text.join(['a', 'b', 'c'], ',')
圖演算法 apoc.algo.shortestPath() 計算兩個節點之間的最短路徑 MATCH (start:Person {name: 'Alice'}), (end:Person {name: 'Bob'}) CALL apoc.algo.shortestPath(start, end, 'KNOWS') YIELD path RETURN path
apoc.algo.dijkstra() Dijkstra 演算法計算最短路徑 MATCH (start:Person {name: 'Alice'}), (end:Person {name: 'Bob'}) CALL apoc.algo.dijkstra(start, end, 'KNOWS') YIELD path RETURN path
匯入/匯出資料 apoc.import.csv() 從 CSV 檔案匯入資料 CALL apoc.import.csv('file:///path/to/file.csv', {header:true}) YIELD nodes, relationships RETURN nodes
apoc.export.csv.all() 將所有圖資料匯出為 CSV 檔案 CALL apoc.export.csv.all('file:///output.csv', {})
apoc.load.csv() 從 CSV 檔案中載入資料 CALL apoc.load.csv('file:///path/to/file.csv') YIELD map RETURN map
apoc.load.json() 從外部 URL 載入 JSON 資料 CALL apoc.load.json('http://example.com/data.json') YIELD value RETURN value
外部系統整合 apoc.load.xml() 從外部 URL 載入 XML 資料 CALL apoc.load.xml('http://example.com/data.xml') YIELD value RETURN value
apoc.load.http() 透過 HTTP 請求獲取外部資料 CALL apoc.load.http('http://example.com/api') YIELD value RETURN value
日期和時間處理 apoc.date.convert() 將日期時間字串轉換為時間戳 RETURN apoc.date.convert('2024-11-01T12:00:00', 'ISO_8601', 'milliseconds')
圖資料操作 apoc.create.node() 建立節點併為其設定屬性 CALL apoc.create.node(['Person'], {name: 'Alice', age: 30}) YIELD node RETURN node
apoc.create.relationship() 建立關係並設定屬性 MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'}) CALL apoc.create.relationship(a, 'KNOWS', {since: 2020}) YIELD rel RETURN rel
事務和批次操作 apoc.periodic.iterate() 按批次進行迭代處理 CALL apoc.periodic.iterate('MATCH (n:Person) RETURN n', 'SET n.processed = true', {batchSize: 1000}) YIELD batches, total RETURN batches, total
效能監控與統計 apoc.stats() 返回資料庫的統計資訊 RETURN apoc.stats()
路徑和圖遍歷 apoc.path.expand() 擴充套件路徑,獲取指定節點的鄰居 MATCH (a:Person {name: 'Alice'}) CALL apoc.path.expand(a, 'KNOWS', 1) YIELD path RETURN path
apoc.path.subgraphNodes() 獲取路徑的子圖節點 MATCH (a:Person {name: 'Alice'}) CALL apoc.path.subgraphNodes(a, {relationshipFilter: 'KNOWS'}) YIELD node RETURN node
字串處理 apoc.text.split() 按指定分隔符將字串分割成多個部分 RETURN apoc.text.split('a,b,c,d', ',')
apoc.text.replace() 在字串中進行替換操作 RETURN apoc.text.replace('Hello World', 'World', 'Neo4j')

這些功能覆蓋了圖資料庫的許多常見操作,如資料轉換、匯入匯出、圖演算法、路徑計算等,能夠有效擴充套件 Neo4j 的使用場景。

參考資料

https://www.cnblogs.com/liaozk/p/17138133.html

https://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html

相關文章