大數(shù)據(jù)時代建模之圖數(shù)據(jù)庫建模——創(chuàng)鄰科技Galaxybase
導(dǎo)讀
云計算環(huán)境下,傳統(tǒng)關(guān)系型數(shù)據(jù)庫在海量數(shù)據(jù)存儲方面存在瓶頸,對樹形結(jié)構(gòu)與半結(jié)構(gòu)化數(shù)據(jù)的建模比較困難。本文介紹一種全新的建模方式——圖數(shù)據(jù)庫建模。應(yīng)用圖數(shù)據(jù)庫模型更具擴(kuò)展性、靈活性、高可靠性和高性能,能建立高細(xì)粒度的數(shù)據(jù)模型,非常適合復(fù)雜關(guān)系的建模和推理,有較高的實用價值。
本文以圖數(shù)據(jù)庫Galaxybase為例,詳細(xì)描述了圖數(shù)據(jù)庫的建模過程,并應(yīng)用Cypher語言實現(xiàn)了該模型的增加、刪除、更改、查詢及統(tǒng)計功能。實踐結(jié)果表明,圖數(shù)據(jù)庫建模技術(shù)能使構(gòu)造的模型語義表達(dá)更豐富,更具簡易性和可擴(kuò)展性等優(yōu)點。
圖模型表示方式
圖模型GM可以用一個三元組描述, GM: = <N,R,L> 其中N={n1, n2, … nt} 為非空有限數(shù)量的結(jié)點集(node set),N中的t個元素稱為t個結(jié)點。
R={r1, r2, … rs} 為頂點集N中的有序結(jié)點偶對(ni, nj)組成的關(guān)系集(relationship set),R中的s個元素稱為s個關(guān)系,且滿足R?
?N × N,L是結(jié)點屬性、關(guān)系屬性的集合。
結(jié)點及關(guān)系可以有多個屬性,每種不同類型的結(jié)點或關(guān)系用ID來區(qū)分。結(jié)點之間可以有多個不同的關(guān)系,方向既可以單向,也可以雙向,其屬性個數(shù)也可以動態(tài)擴(kuò)展。如工廠與原材料兩個節(jié)點,既有工廠供應(yīng)原材料的關(guān)系,也有工廠購買原材料的關(guān)系,因此圖模型具有豐富的語義表達(dá)能力。
圖模型建模規(guī)則
規(guī)則1 單實體集建模規(guī)則
單實體集建模為單結(jié)點。
以創(chuàng)建單實體”學(xué)生“為例,點類型和點屬性如下表所示。

建模后如下圖所示。


規(guī)則2 兩個實體集具有1:N聯(lián)系的建模規(guī)則
兩個實體集分別按照規(guī)則1建模為兩個單結(jié)點,聯(lián)系集建模為圖模型中結(jié)點的關(guān)系。結(jié)點間用帶箭頭的線段連接,方向可以是雙向,也可以是單向。根據(jù)需要可以為關(guān)系添加若干屬性。
以創(chuàng)建實體“學(xué)生”、“學(xué)?!?,聯(lián)系“就讀”為例,點類型和點屬性如下表所示。

邊類型、邊屬性如下表所示。

建模后如下圖所示。



規(guī)則3 兩個實體集具有M:N聯(lián)系的建模規(guī)則
兩個實體集分別按照規(guī)則1建模為兩個單結(jié)點,聯(lián)系集建模為圖模型中結(jié)點的關(guān)系。結(jié)點間用兩條帶箭頭的線段連接,線段方向相反。
以創(chuàng)建實體”學(xué)生“、“學(xué)?!保?lián)系“就讀”、“管理”為例,點類型和點屬性如下表所示。

邊類型、起始點類型、終止點類型、邊屬性如下表所示。

建模后如下圖所示。


規(guī)則4 兩個或多個實體集之間存在整體與部分包含關(guān)系的建模規(guī)則
整體實體集與部分實體集之間符合1:1或1:N的聯(lián)系,遵守規(guī)則2的建模規(guī)則。在圖模型中,關(guān)系的方向從整體結(jié)點到部分結(jié)點(關(guān)系名可用HasParts[包含]、Contains[由···組成]等語義描述)或從部分結(jié)點到整體結(jié)點(關(guān)系名可用PartOf[屬于]、ConsistOf[組成]等語義描述)。
示例模型中,學(xué)校可以有多個社團(tuán),結(jié)點”社團(tuán)“與結(jié)點”學(xué)?!坝胁糠纸Y(jié)點到整體結(jié)點的包含關(guān)系。

規(guī)則5 兩個或多個實體集之間存在父與子實體集的繼承關(guān)系的建模規(guī)則
父子繼承關(guān)系符合1:1或1:N的聯(lián)系,遵守規(guī)則2的建模規(guī)則。在圖模型中,關(guān)系的方向從父結(jié)點到子結(jié)點(關(guān)系名可用SubClass[有···子集]語義描述)或從子結(jié)點到父結(jié)點(關(guān)系名可用ISA[是···的指令集]、SubClassOf[是···的子集]等語義描述)。
示例模型中,結(jié)點”職位“與結(jié)點”社團(tuán)“存在繼承關(guān)系。

圖數(shù)據(jù)庫建模應(yīng)用示例
某大型制造企業(yè)制造某系列輕型摩托車產(chǎn)品,需要采購毛坯及零部件等物料進(jìn)行制造、裝配,物料到貨經(jīng)過質(zhì)檢部門驗收合格后,需要入庫存儲。由于該企業(yè)的采購、制造、裝配的零部件(含物料)多達(dá)兩萬件,涉及國內(nèi)外的供應(yīng)商多大三千多家,每天約380個采購入庫單,導(dǎo)致該企業(yè)每月新增數(shù)據(jù)約16~20GB。
接下來使用Galaxybase分布式圖數(shù)據(jù)庫來實現(xiàn)物料入庫的管理模型。
以創(chuàng)建實體”員工“、“物料入庫單”、”供應(yīng)商“、”物料信息“、”入庫單明細(xì)“、”貨位信息“,聯(lián)系”經(jīng)手“、“供應(yīng)”、”包含“、”分配“、”由···構(gòu)成“為例,點類型和點屬性如下表所示。

邊類型、起始點類型、終止點類型如下表所示。

建模后如下圖所示。

圖數(shù)據(jù)庫實現(xiàn)與檢索技術(shù)
Galaxybase是一個高性能的NoSQL圖形數(shù)據(jù)庫,具有ACID事務(wù)、高可用性、高擴(kuò)展性及高性能等特點,非常適合大數(shù)據(jù)庫的圖形數(shù)據(jù)建模、管理、快速查找。
將上面建立的圖數(shù)據(jù)庫模型實例化,可以得到數(shù)據(jù)庫實例圖。

Galaxybase使用Cypher或Gremlin語言對圖數(shù)據(jù)進(jìn)行查找操作,不需要編寫代碼就可以進(jìn)行高效率的查詢。

更多Cypher/Gremlin語言使用方式可進(jìn)入創(chuàng)鄰科技官網(wǎng)-資源中心-開發(fā)者資源-技術(shù)文檔中的Cypher文檔。