本文藉助Apache Hop及GES插件,提供了多數據源通用、可視化、開箱即用的數據轉換工程,可將多種關係型資料庫遷移至GES圖資料庫中。 ...
本文分享自華為雲社區《5分鐘遷移關係型資料庫到圖資料庫》,作者: RiverSide 。
以往開發者會使用關係型資料庫如MySQL對領域數據進行存儲,這類關係型資料庫誕生較早,但並不適合存儲關聯度較大的數據,如社交關係網路。隨著高關聯度數據的存儲及分析的需求隨數據量日益增長,將海量關聯數據存入圖資料庫中進行深度挖掘分析是大勢所趨。華為雲圖引擎服務(Graph Engine Service)是國內首個商用的、擁有自主知識產權的國產分散式原生圖引擎。廣泛應用於社交應用、企業關係分析、風控、推薦、反欺詐等具有豐富關係數據的場景。
由於關係型資料庫和如GES的圖資料庫天然存在的異構性,將已有的關係型資料庫中的數據存儲至圖資料庫中仍存在較多的難點。本文藉助Apache Hop及GES插件,提供了多數據源通用、可視化、開箱即用的數據轉換工程,可將多種關係型資料庫遷移至GES圖資料庫中。轉換工作流復用度高,可通過輸入不同的元數據文件與數據源連接,使轉換工作流完成多個數據源的遷移任務。
支持的數據源
藉助Apache Hop的能力,支持MySQL,PostgreSQL,Oracle,MS SqlServer等多種關係型資料庫,具體列表參見:Database Plugins :: Apache Hop
數據要求
- 已經建立好GES圖模型,屬性名與表中的欄位名相同
- 對單個標簽來說,所有屬性都在同一張表中
- 數據源中的數據符合圖模型中對應數據類型的要求(如GES中date類型為yyyy-mm-dd hh:mm:ss,若數據源中的date類型不合要求,應在數據源轉為相應格式的字元串類型)
節點唯一性問題
在圖資料庫中不允許存在兩個索引值相同的節點,因此需要確保節點的全局唯一性,即節點id。通常情況下,可以將表中具有唯一性約束的欄位,如表的主鍵映射為對應節點數據的id。在關係型資料庫(如MySQL)中,不同的表屬於不同的命名空間,即不同表中的主鍵可以相同的值。因此在這種情況下,需要改變相應的映射規則。如通過將表名與主鍵拼接的方式生成新的節點id,以確保節點的全局唯一性。
在轉換過程中,需要將指定的id映射關係生成為以下格式的csv:標簽名, 表名,節點id對應欄位,終點id對應欄位。此處若標簽對應的是點數據,則終點id為空。
如在TPC-H數據集中,表數據轉換為一條簡單的關係及其起點終點,需要指明的信息如下:
- 對於Order標簽的節點,數據源中對應的表名為orders;採用主鍵o_orderkey作為節點id。
- 對於Supplier標簽的節點,數據源中對應的表名為supplier;採用主鍵s_suppkey作為節點id。
- 對於supply標簽的邊,數據源中對應的表名為lineitem;起點為Supplier,對應表lineitem表中外鍵l_suppkey作為起點id;終點為Order,對應外鍵l_orderkey作為終點id。需要註意的是,邊的起點與終點的id映射需要與對應標簽的節點id映射對應,如例子中的lineitem表的外鍵l_suppkey對應的正是supplier表中的s_suppkey,它們的值為一一對應的關係。
流程概述
數據轉換的主要思路是以csv文件格式為媒介,將關係型資料庫中的數據按指定格式導出至csv文件中,導出數據藉助華為雲對象存儲服務(OBS)上雲,GES服務完成雲端數據導入圖實例。
數據的格式轉換髮生在查詢結果生成過程中,通過解析元數據與id映射文件,我們可以在動態生成的SQL語句的SELECT子句中指定查詢結果的格式。將查詢結果寫入csv即可得到可以導入GES圖實例的數據文件。
環境準備
Apache Hop
Apache Hop(Hop Orchestration Platform)是一個數據編排和數據工程平臺,旨在促進數據和元數據編排的各個方面。Hop讓您專註於您試圖解決的問題,而不會有技術阻礙。
下載Apache Hop v2.4.0:Download - Hop
Apache Hop依賴JDK11,檢查java版本,若不滿足可按附件中《使用說明》配置:
通過hop文件夾下hop-gui.bat進入gui操作界面
載入GES插件
GES Plugin for Apache Hop是GES開發用於連接Hop工具的插件,用於將上傳數據文件、將雲端數據導入圖實例等操作。
在附件中下載GES插件後,解壓.zip文件,將hop-transform-ges文件夾放到Apache Hop文件夾./hop/pulgins/transforms下。
數據遷移
數據準備
本文以TPC-H數據集為例,對數據集中的部分數據建立如下圖模型:
對應的GES元數據文件如下,文件格式可參考:GES圖的基本概念和數據格式
節點id映射關係文件如下,使用”標簽名_主鍵“的格式確保id唯一性:
運行遷移工程
點擊上方菜單欄新建項目:
指定項目名稱與項目主目錄
將工程文件拷貝到項目主目錄,完成後項目主目錄下文件如下圖。其中.hpl與.hwf文件為定義好的hop轉換規則文件,tpch.xml為GES元數據文件,tpch.csv為節點id映射關係文件。
在gui界面中點擊metadata->relational database connection,選擇合適的關係型資料庫類型,填入賬號密碼等信息。
點擊metadata->GES Connection,建立圖連接,按.zip附件中說明文檔填入賬號密碼等信息。
點擊項目詳情,定義相關參數為項目變數:
打開RelationalDB_to_GES.hwf:
點擊運行
數據轉換結束,數據轉換至對應路徑下,共轉換點邊近3700萬行,用時約200秒
登錄前端圖訪問頁面,可以查詢到導入數據,數據成功導入。