Neo4j ETL工具快速上手:簡化從關系數據庫到圖數據庫的數據遷移


注:本文系從https://medium.com/neo4j/tap-into-hidden-connections-translating-your-relational-data-to-graph-d3a2591d4026翻譯整理而來。

本文介紹新近推出的Neo4j ETL App,包括其安裝、使用和功能特性。大綱如下:

  • Neo4j ETL工具
  • 添加Neo4j ETL應用程序
  • 選擇項目
  • 檢索RDBMS元數據
  • Mapping.json中的數據
  • 調整映射
  • 導入數據
  • 檢查導入的數據
  • 總結

Neo4j ETL工具 Neo4j ETL(Extract-Transform-Load)工具的構建使開發人員能夠輕松地將關系數據加載到圖數據庫中。它包括3個簡單的步驟來實現:

  1. 通過JDBC設置指定源關系數據庫;
  2. 使用圖形化的編輯工具建立數據模型映射;
  3. 運行生成的腳本將所有數據導入到Neo4j。

該工具很容易訪問和使用。有兩種方式與工具交互:

  1. 通過命令行,
  2. 通過Neo4j Desktop應用程序。 為了使用命令行,在GitHub上下載項目,並按照文檔說明運行每個步驟: https://github.com/neo4j-contrib/neo4j-etl

本文將主要介紹如何在Neo4j Desktop中使用ETL工具。

添加Neo4j ETL應用程序 要在Neo4j Desktop中添加ETL,首先需要聯系Neo4j以獲取激活密鑰,並添加到配置文件中。下面的屏幕截圖顯示了如何在Neo4j Desktop中添加激活密鑰。 etl-1.png

完成后,即可以訪問ETL應用程序。現在,我們需要將它添加到圖形應用程序中。

首先,進入Neo4j Desktop中的Projects菜單,選擇/創建一個項目。然后,點擊右側菜單窗格第一個橫幅下的“添加應用程序”。當彈出窗口顯示可添加的應用程序時,通過單擊“添加”按鈕選擇ETL應用程序。如下圖所示: etl-2.png

etl-3.png

好,一切就緒了!現在,點擊ETL App圖標,就可以運行這個工具了。 etl-4.png

選擇項目 Neo4j ETL App采用類似執行向導的方式,讓ETL設計和運行的每一步都直觀、簡潔。第一步,是選擇一個要運行ETL的項目。這將在應用程序的主屏幕上打開一個新窗口,如下所示。選擇要在其中工作的項目,這將告訴應用程序Neo4j數據庫的位置。 etl-5.png

設置RDBMS連接 接下來,我們需要建立一個關系數據庫連接。該工具允許使用支持JDBC驅動程序的大多數類型的關系數據庫,包括MySQL,PostgreSQL,Oracle,Cassandra,DB2,SQL Server,Derby等。雖然MySQL和PostgreSQL數據庫內置於該工具中,但通過指定驅動程序文件可以輕松設置所有其他數據庫。

在這個例子中,我將使用加載了Northwind數據集的PostgreSQL關系數據庫。如果需要安裝此示例數據庫和數據集,那么可以下載PostgreSQL、並運行從GitHub上獲得的為Northwind數據集提供的加載腳本。鏈接如下: https://github.com/pthom/northwind_psql

要設置連接詳細信息,首先單擊左側邊欄(數據庫)中的頂部圖標,然后單擊打開窗格中的RDBMS選項,這將在窗口右側顯示JDBC Connection界面。 etl-6.png

首先從“類型”下拉字段中選擇數據庫類型,其他一些字段將自動填充。在這個例子中,選擇postgresql選項。這里,使用默認端口和連接URL就可以了。 etl-7.png

現在我們可以根據需要填寫其他細節。在“連接名稱”字段中輸入任何你喜歡的名稱。需要注意的是“數據庫”字段必須與關系數據庫中實際的名稱相匹配。如果使用Postgres或MySQL以外的其他數據庫,請確保選擇相應的連接驅動程序。

注意:如果為關系數據庫設置了用戶名和密碼,則必須在相應的字段中輸入這些用戶名和密碼。但是,如果沒有為關系數據庫指定用戶名和/或密碼,則可以將其中一個或兩個字段留空。 完成所有細節填寫后,單擊窗格底部的“ 測試並保存連接 ”按鈕,這時應該會在頂部看到一個藍色的消息欄,表示連接已成功保存。如果其中一個字段不正確或無法找到關系數據庫,則會出現一條帶有錯誤消息的紅色條。

檢索RDBMS元數據 好的,現在我們已經建立了關系數據庫連接。接下來,選擇左側邊欄中的第二個圖標(導入),然后在打開的窗格中單擊“導入數據”選項。這會在窗口右側顯示“檢查元數據”面板。 etl-8.png

要從關系圖映射到圖,我們從頂部列表中選擇已加載的關系數據庫連接,然后選擇在底部列表中選擇要寫入的圖形數據庫。選中的數據庫信息會出現在窗口右側的FROM和TO文本中。完成后點擊Start Mapping按鈕。 etl-9.png

Mapping.json中的數據 輸出會在窗口的底部顯示。其中包括一些JSON文件。這是mapping.json基於源關系數據庫的模式創建的文件。這是ETL過程的執行邏輯定義,因為如果決定在遷移中忽略特定的表或字段,則可以對此文件進行更改。

要查看該文件,打開Neo4j桌面窗口,轉至當前項目,然后找到目標Neo4j數據庫上,點擊下面的“Manage”按鈕。在本例中,它的名稱為ETL_db。在打開i的面板上面點擊“打開文件夾”按鈕。 etl-11.png

這里,應該可以看到一個postgresql_northwind_mapping.json文件(或類似命名的文件)。如果在進行下一步之前想做出任何更改,可以直接打開並編輯。這里,我我們對mapping.json不做任何修改、直接進入下一步。

調整映射 回到ETL應用程序窗口,單擊右下角的“ 下一步 ”按鈕,打開數據建模屏幕。可以移動屏幕右側圖表中的節點和關系,以便更好地查看它們中的每一個。

在這里,可以更改節點名稱、關系、甚至屬性(字段)名稱和數據類型。例如,可以選擇更適合的關系類型,將它們從通用名詞更改為更具體的動詞。本例中,將員工節點之間的關系從“ EMPLOYEES”改為“ REPORTS_TO”,因為員工可以向另一個員工(即經理)報告。 etl-12.png

Neo4j ETL App會根據源數據庫模式決定基本的數據映射,規則如下: a. 擁有1個外鍵的表會映射成節點和其上的關系; b. 擁有2個外鍵的表會被當做是關系表,映射成關系; c. 擁有多於2個外鍵的表會被當作中間表處理,映射成擁有多個關系的節點。

數據導入 一旦對建立的映射足夠滿意了,可以點擊右下角的“ 下一步”按鈕。這將打開最后一步的屏幕,即選擇導入方式。有四個選項可以使用:

  1. Neo4j import命令行工具 - 適用大型數據集的快速、初始、批量導入,數據庫必須脫機且本地運行,已有數據將被覆蓋。
  2. Neo4j Shell  - 基於Cypher的大型數據集導入,數據庫必須脫機且本地運行。
  3. Cypher Shell  - 創建並運行可編輯的Cypher腳本,數據庫需要聯機。
  4. 直接Cypher導入  - 創建可以編輯的Cypher腳本,數據庫需要聯機,在客戶端通過Bolt協議連接數據庫並導入數據。 所以,采用何種導入方法的關鍵是,Neo4j數據庫是否正在運行/聯機,以及是否要將數據添加到現有的圖數據庫中。

Neo4j Import 比Cypher導入要快得多,因為它使用底層數據庫文件直接、批量導入程序來初始創建數據庫。但是,如果無法關閉並更換數據庫,那么Cypher導入選項是更加可行的方案。

最后,單擊“導入數據 ”按鈕,屏幕底部的輸出會顯示后台命令執行的狀態。完成后,窗口頂部會出現藍色的消息欄,表示導入已成功。 etl-13.png

檢查導入的數據 要驗證加載的所有內容並開始使用Neo4j中的數據,我們可以查看數據模型並從Neo4j瀏覽器或連接到數據庫的應用程序運行查詢。

在這個例子中,我們回到Neo4j桌面窗口,進入到ETL_db數據庫,然后點擊’ 打開瀏覽器 `。在瀏覽器命令行上執行CALL db.schema()會你顯示圖形數據模型。 etl-14.png

請注意,該模型不包含連接到Customer節點的Customer Demographics節點。這是因為所使用的Postgres數據集在客戶人口統計學csv文件中沒有任何數據。

接下來,你可以充分運用你的Cypher技能對數據庫中的數據進行查詢、更新和分析,在連接的數據集中收集價值和發現新的內在價值。下面的屏幕截圖顯示了關於客戶、托運人、訂單和產品的查詢結果。 etl-15.png

總結 ETL工具的使用將大大簡化從關系數據庫到圖數據庫進行數據遷移的開發和運行。目前,ETL App還處於早期版本,許多重要的ETL特性,例如對更加復雜的映射規則的支持、並行數據導出/導入的執行等都尚未實現。因此,現階段更加適合於作為一個建模/開發工具,簡化數據映射的過程、生成可客戶化的ETL腳本。 對於復雜的項目,可以參考Pentaho 的Kettle ETL工具。

如需了解更多,或者希望試用ETL App,請發姓名和工作郵箱到:joshua.yu@neo4j.com。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM