Galaxybase-convert實(shí)踐:兩步實(shí)現(xiàn)Neo4j數(shù)據(jù)遷移
前言
Galaxybase是創(chuàng)鄰科技自主研發(fā)的國(guó)內(nèi)首款超大規(guī)模分布式并行原生圖平臺(tái)產(chǎn)品,擁有優(yōu)異的數(shù)據(jù)讀寫查詢性能、強(qiáng)?的可視化分析能力、豐富的可編程接口和開箱即用的圖算法引擎,是集存儲(chǔ)、計(jì)算、分析于一體的圖數(shù)據(jù)全?命周期?站式管理平臺(tái),符合大數(shù)據(jù)時(shí)代下,客戶對(duì)數(shù)據(jù)高效存儲(chǔ)和查詢的需求。
?

目前,Galaxybase已在金融、能源、政府、公安等行業(yè)完成落地,在需要復(fù)雜關(guān)聯(lián)數(shù)據(jù)實(shí)時(shí)查詢分析的場(chǎng)景下,可以實(shí)現(xiàn)原有關(guān)系型數(shù)據(jù)庫(kù)或國(guó)外同類型產(chǎn)品的平滑替代,幫助企業(yè)激發(fā)數(shù)據(jù)價(jià)值。Neo4j是國(guó)外較為成熟的圖數(shù)據(jù)庫(kù)產(chǎn)品,當(dāng)前已在國(guó)內(nèi)較多行業(yè)具備應(yīng)用案例,而源于對(duì)底層基礎(chǔ)軟件信創(chuàng)國(guó)產(chǎn)化的要求,企業(yè)紛紛響應(yīng)政府號(hào)召,對(duì)支撐其關(guān)鍵業(yè)務(wù)的軟硬件進(jìn)行國(guó)產(chǎn)化替代。本文將以創(chuàng)鄰科技官網(wǎng)的MovieDemo數(shù)據(jù)集作為例子,教大家使用Galaxybase-convert工具兩步實(shí)現(xiàn)Neo4j到Galaxybase的數(shù)據(jù)遷移。
數(shù)據(jù)遷移方案
Galaxybase-convert為創(chuàng)鄰科技封裝完成的數(shù)據(jù)遷移工具,在本方案中將使用convert工具將MovieDemo數(shù)據(jù)集從Neo4j數(shù)據(jù)遷移至Galaxybase,具體遷移流程圖如下:

前提條件
galaxybase-convert工具(下文統(tǒng)稱"convert工具");
Galaxybase數(shù)據(jù)庫(kù)load權(quán)限;
Neo4j版本為3.x或4.x。
注意事項(xiàng)
convert工具導(dǎo)出的數(shù)據(jù)和生成的文件在{dataDir}/{graphName}文件夾下,{dataDir}為使用convert工具時(shí)填寫的--dataDir參數(shù),{graphName}為使用convert工具時(shí)填寫的--graphName參數(shù);
當(dāng)前方案使用convert工具需要在Galaxybase服務(wù)器上,并且有掛載data;
在Neo4j數(shù)據(jù)存在多l(xiāng)abel、無(wú)label的情況下,可能出現(xiàn)導(dǎo)出重復(fù)數(shù)據(jù)或數(shù)據(jù)丟失,具體情況如下:

數(shù)據(jù)集說(shuō)明
示例數(shù)據(jù)集為創(chuàng)鄰科技官網(wǎng)提供的MovieDemo數(shù)據(jù)集,包含兩個(gè)點(diǎn)類型、一條邊類型,具體數(shù)據(jù)類型如下:
點(diǎn)類型“人物”,外部唯一標(biāo)識(shí)字段為“姓名”,包含“出生年份”、“出生地”兩個(gè)屬性;

點(diǎn)類型“電影”,外部唯一標(biāo)識(shí)字段為“電影名”,包含“上映年份”、“語(yǔ)言”、“評(píng)分”、“票房”、“類型”五個(gè)屬性;

邊類型“出演電影”,起始點(diǎn)為“人物”,終止點(diǎn)為“電影”,包含“片酬”、“角色名稱”、“是否主演”三個(gè)屬性。

第一步:生成schema.json文件
如果已有schema.json文件,可以跳過(guò)此步驟,直接從第二步開始執(zhí)行。在沒有schema.json文件的情況下,用戶可以在Galaxybase服務(wù)器上調(diào)用convert工具生成,調(diào)用命令如下:
命令參數(shù)說(shuō)明:

注意:
由于convert工具--generateSchemaFast參數(shù)是遍歷每種label的部分?jǐn)?shù)據(jù)來(lái)分析出schema.json,所以多l(xiāng)abel、無(wú)label的情況下可能導(dǎo)致分析出來(lái)的schema.json不準(zhǔn)確。
由于Neo4j的go-driver返回的數(shù)值類型都是最大精度的數(shù)值類型,例如:查詢int類型的屬性會(huì)以long類型返回,所以生成schema.json的屬性類型會(huì)與預(yù)期有誤差,但不影響數(shù)據(jù)遷移。
上述命令將使用"neo4j"為用戶名,"admin"為密碼連接,IP地址為127.0.0.1:7687的Neo4j 3.x的服務(wù),遍歷數(shù)據(jù)分析出graphName字段為"MovieDemo"的schema.json,保存在graphHomeDir/data/路徑(啟動(dòng) ?Galaxybase時(shí)設(shè)置的data目錄)下的MovieDemo文件夾中。schema.json如下:
第二步:根據(jù)schema.json遷移數(shù)據(jù)到Galaxybase
使用以下命令調(diào)用convert工具,系統(tǒng)將會(huì)讀取到graphHomeDir/data/schema.json的內(nèi)容。使用Neo4j相關(guān)參數(shù)連接Neo4j后,根據(jù)schema.json的點(diǎn)邊類型導(dǎo)出Neo4j數(shù)據(jù)為csv文件,保存在graphHomeDir/data/(啟動(dòng)Galaxybase時(shí)設(shè)置的data目錄)路徑下的MovieDemo文件夾中。根據(jù)csv文件路徑生成mapping.json,保存在graphHomeDir/data/路徑下的MovieDemo文件夾中。最后,convert工具通過(guò)schema.json和mapping.json,將csv數(shù)據(jù)導(dǎo)入到Galaxybase。具體調(diào)用命令如下:
遷移結(jié)果展示
下圖為遷移到Galaxybase圖數(shù)據(jù)庫(kù)的最終結(jié)果,可以看到圖名稱為MovieDemo,點(diǎn)數(shù)量為8592個(gè),邊數(shù)量為6154條,和命令行中名稱、數(shù)量一致;圖模型為人物-出演-電影,屬性信息和原數(shù)據(jù)集一致。


結(jié)語(yǔ)
本文講述了通過(guò)命令行工具galaxybase-convert,以MovieDemo數(shù)據(jù)集為例,進(jìn)行第三方數(shù)據(jù)庫(kù)Neo4j數(shù)據(jù)遷移至Galaxybase的操作流程。此外,該工具還支持多項(xiàng)數(shù)據(jù)源的數(shù)據(jù)遷移,目前支持的數(shù)據(jù)源有Neo4j 3.x版本、4.x版本,ArangoDB <=3.10版本,一般應(yīng)用在實(shí)體關(guān)系復(fù)雜且難以獲取的場(chǎng)景中,如果場(chǎng)景中實(shí)體結(jié)構(gòu)清晰,建議使用圖構(gòu)建工具galaxybase-load進(jìn)行數(shù)據(jù)的遷移工作。具體遷移工具使用詳情可以移步創(chuàng)鄰科技官網(wǎng)-資源中心-開發(fā)者資源-技術(shù)文檔-命令行工具-圖構(gòu)建數(shù)據(jù)導(dǎo)入工具,查看圖模型定義文件(schema.json)和圖數(shù)據(jù)映射文件(mapping.json)。
?
后續(xù),我們將優(yōu)先輸出從ArangoDB數(shù)據(jù)遷移至Galaxybase的文檔,讀者在使用Galaxybase進(jìn)行替換的過(guò)程中,對(duì)數(shù)據(jù)遷移有任何疑問也可以在創(chuàng)鄰科技Galaxybase公眾號(hào)留言或在官方論壇提問,我們將給予答復(fù),統(tǒng)計(jì)共性問題輸出相應(yīng)遷移實(shí)踐文案。
?