圖靈數據分析
# 圖靈數據分析
# Neo4j簡介
圖形資料庫(Graph Database)是NoSQL資料庫家族中特殊的存在,用於儲存豐富的關係數據,Neo4j 是目前最流行的圖形資料庫,支援完整的事務,在屬性圖中,圖是由頂點(Vertex),邊(Edge)和屬性(Property)組成的,頂點和邊都可以設定屬性,頂點也稱作節點,邊也稱作關係,每個節點和關係都可以由一個或多個屬性。Neo4j建立的圖是用頂點和邊構建一個有向圖,其查詢語言cypher已經成為事實上的標準。
關係型資料庫只對單個Join操作進行優化查詢,而多重Join操作查詢的效能顯著下降。圖形資料庫適合查詢關係數據,由於圖形遍歷的區域性性,不管圖形中由多少節點和關係,根據遍歷規則,Neo4j只訪問與遍歷相關的節點,不受到總數據集大小的影響,從而保持期待的效能;相應地,遍歷的節點越多,遍歷速度越慢,但是變慢是線性的,這使得圖形資料庫不適合做海量數據統計分析。對於存在大量豐富關係的數據,遍歷的效能不受圖形數據量大小的影響,這使得Neo4j成為解決圖形問題的理想資料庫。
Neo4j的用途非常廣泛,可用於檢索、推薦、視覺化多個用途。
# Neo4j安裝
可參考示例:https://neo4j.com/docs/operations-manual/5/installation/windows/ (opens new window)
Neo4j運行環境基於java,所以需要先安裝java運行環境。
Neo4j各版本與java對照關係表格,推薦安裝Neo4j 5.x的版本:
Neo4j Version | JVM compliancy |
---|---|
3.x | Java SE 8 Platform Specification |
4.x | Java SE 11 Platform Specification |
5.x | Java SE 17 Platform Specification |
到https://adoptium.net/ (opens new window)下載jdk安裝包,執行安裝。 安裝完成後注意要檢視環境變數是否正確設定:
到https://neo4j.com/deployment-center/ (opens new window) 下載 neo4j 社區版,解壓後放置到想要放置的目錄下。 仿照java環境設定,設定neo4j的環境變數:新增NEO4J_HOME變數,變數值為解壓后的路徑。
Path變數中新建加入 %NEO4J_HOME%\bin
進入powershell界面,輸入 neo4j console
顯示出現 started 表示啟動成功。
打開瀏覽器,輸入網址:http://localhost:7474/browser/ (opens new window) 顯示如下圖即為安裝成功!!
初始帳號密碼均為neo4j,點選Connect連線資料庫。
第一次登錄需修改密碼(最少8位數),本文修改密碼為12345678
# 將Neo4j安裝為服務
在控制檯界面,按下Ctrl+C停止neo4j的運行,在控制檯界面輸入以下內容。
neo4j windows-service install
如需要刪除服務,請輸入以下命令。
neo4j windows-service uninstall
# 設定允許遠端連線
修改conf/neo4j.conf
檔案,取消server.default_listen_address
選項的註釋,可通過重新啟動neo4j restart
觀察到監聽地址變化。
# 安裝APOC外掛
前往https://github.com/neo4j/apoc/releases (opens new window) 下載與neo4j版本對應的外掛apoc-x.xx-core.jar
。放置於 plugins
資料夾中。
同時需要修改neo4j的配置檔案。打開neo4j目錄下的conf/neo4j.conf
,修改dbms.security.procedures.unrestricted
的選項如下:
dbms.security.procedures.unrestricted=gds.*,apoc.*
重新啟動neo4j restart
以使外掛生效。
# FastERP2整合
FastWeb 中的功能表專案 圖靈數據分析
中的內容是為FastERP2 (opens new window)整合的,如需要使用這部分的功能,請按照下述方式進行修正調整。
請下載FastERP2數據匯入工具,下載完成後,將工具主目錄中的資料夾與目錄放置於neo4j 目錄下的import
資料夾中。
修改config.toml
檔案,選項說明如下:
[database]
# FastERP2資料庫地址
fasterp2_db_host = "127.0.0.1"
# FastERP2資料庫埠號
fasterp2_db_port = 1433
# FastERP2資料庫使用者名稱
fasterp2_db_username = "sa"
# FastERP2資料庫密碼
fasterp2_db_password = "123456"
# FastERP2資料庫名稱
fasterp2_db = "fasterp2"
# FastERP2資料庫驅動名稱,預設為 SQL Server
fasterp2_driver = "SQL Server"
[neo4j]
# neo4j 資料庫的地址連線串
neo4j_uri = "neo4j://localhost:7687"
# neo4j 資料庫的登錄使用者名稱
neo4j_username = "neo4j"
# neo4j 資料庫的登錄使用者密碼
neo4j_password = "12345678"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
數據匯入工具包含兩個主程式fasterp2_import.exe
以及 clear_data.exe
。分別用於增量更新以及定時數據清理的功能。
接下來將使用 TaskRunner 設定這兩個程式的定時任務,使程式能定時啟動執行數據匯入與數據更新的操作。
在TaskRunner的自定程式界面建立兩個程式,名稱分別為 fasterp2_import
與 fasterp2_cleardata
。
分別設定運行的程式碼如下:
//fasterp2_import
//填寫程式所在的位置,注意路徑分割符號要使用\進行轉義
{
ShellExecute("E:\\Program Files\\neo4j-community\\import\\fasterp2_import.exe","",nil);
}
2
3
4
5
//fasterp2_cleardata
//填寫程式所在的位置,注意路徑分割符號要使用\進行轉義
{
ShellExecute("E:\\Program Files\\neo4j-community\\import\\clear_data.exe","",nil);
}
2
3
4
5
在TaskRunner的自動化作業界面建立兩個自動化作業任務。在自動化作業的步驟環節分別新增步驟,示例如下
//呼叫運行fasterp2_import自定程式
{
UGCM.RunScript("fasterp2_import",nil,"");
}
2
3
4
//呼叫運行fasterp2_cleardata自定程式
{
UGCM.RunScript("fasterp2_cleardata",nil,"");
}
2
3
4
分別設定上述執行的時間間隔。按照上述方式設定完成後,可啟動自動化作業,匯入程式將定時執行數據匯入。
FastERP2圖靈數據分析模組也需要同步調整,點開各個模組的模組設計頁面,打開程式頁簽,修改開頭定義的FastERP2的Node節點資料庫名稱,以及neo4j API呼叫的地址,之後就可以檢視圖靈數據分析界面的模組運行效果。