李帥,郭妍彤,周文迪
(四川大學計算機學院,成都610065)
隨著制造業(yè)信息化和工業(yè)化不斷融合,制造過程中涉及到的數(shù)據(jù)呈現(xiàn)多源化、異構(gòu)化,數(shù)據(jù)具有典型的“4V”特征[1],這些數(shù)據(jù)涉及人、機、料、法、環(huán),能夠幫助制造商提高設(shè)計和生產(chǎn)效率,降低缺陷和返工,更好地滿足客戶需求和進行有效的營銷[2]。涉及人、機、料、法、環(huán)的數(shù)據(jù)是多源異構(gòu)的,制造企業(yè)中數(shù)據(jù)來源多方、結(jié)構(gòu)各異,如何集成這些數(shù)據(jù)才能打破“數(shù)據(jù)孤島”[3]、建立數(shù)據(jù)生態(tài)、降低企業(yè)成本、開發(fā)潛在價值是目前諸多企業(yè)迫在眉睫的任務(wù)。
傳統(tǒng)關(guān)系型數(shù)據(jù)庫儲存的是結(jié)構(gòu)化數(shù)據(jù),一個數(shù)據(jù)庫通常只儲存一種類型數(shù)據(jù),不同數(shù)據(jù)庫間可能存在關(guān)聯(lián)關(guān)系,但是數(shù)據(jù)庫之間的關(guān)系卻得不到體現(xiàn),不能有效滿足查詢需求。特別地,這一問題在企業(yè)數(shù)據(jù)上尤為突出。隨著企業(yè)發(fā)展,數(shù)據(jù)越來越多,呈現(xiàn)指數(shù)級增長趨勢,各數(shù)據(jù)庫是自治的,邏輯上存在聯(lián)系,但物理上卻是分開的。有學者用分布式系統(tǒng)[4]實現(xiàn)這些數(shù)據(jù)庫的聯(lián)系,但存在并行帶來的高開銷問題,數(shù)據(jù)一致性得不到保障,對非結(jié)構(gòu)化數(shù)據(jù)存儲管理不足[5]。隨著多維數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)越來越多(Web 頁面、視頻、音頻、圖片等),企業(yè)面臨的數(shù)據(jù)管理問題愈加嚴重,如何集成這些多源異構(gòu)的數(shù)據(jù)顯得尤為困難,人們開始考慮遷移到其他數(shù)據(jù)庫[6],許多學者提出過多種數(shù)據(jù)存儲架構(gòu),包括數(shù)據(jù)倉庫[7]、數(shù)據(jù)湖[8]、數(shù)據(jù)中臺[9],但效果并不理想。
數(shù)據(jù)空間是指某一實體擁有的所有信息以及從這些信息中抽象出來的一些關(guān)聯(lián)數(shù)據(jù)的集合[10],在邏輯上是一張圖,其構(gòu)建過程為pay-as-you-go 的方式[11],不像傳統(tǒng)數(shù)據(jù)集成時pay-before-you-go 的構(gòu)建方式,也不像數(shù)據(jù)湖弱化多源異構(gòu)數(shù)據(jù)的數(shù)據(jù)關(guān)系。數(shù)據(jù)空間是以圖結(jié)構(gòu)的形式集成多源異構(gòu)數(shù)據(jù),降低數(shù)據(jù)存儲空間,保障源數(shù)據(jù)可尋,不受數(shù)據(jù)格式影響,打破多源數(shù)據(jù)之間的壁壘,構(gòu)建數(shù)據(jù)生態(tài)。本文提出的基于Neo4j 的數(shù)據(jù)空間模型由本體關(guān)系、包裝代理、身份識別、數(shù)據(jù)集成四個部分組成。
數(shù)據(jù)空間不再是數(shù)據(jù)庫的簡單聚集,而是多源異構(gòu)數(shù)據(jù)的代理。數(shù)據(jù)空間的構(gòu)造途徑是集成、更新多源異構(gòu)數(shù)據(jù)集,主要包括本體關(guān)系、包裝代理、身份識別。數(shù)據(jù)空間主要包括三類數(shù)據(jù):關(guān)系數(shù)據(jù)、元數(shù)據(jù)、數(shù)據(jù)內(nèi)容。關(guān)系數(shù)據(jù)是指數(shù)據(jù)集間關(guān)系或構(gòu)建的實例間關(guān)系,例如制造企業(yè)中工人與車間的關(guān)系;元數(shù)據(jù)是指數(shù)據(jù)內(nèi)容的描述信息,包括數(shù)據(jù)名稱、數(shù)據(jù)格式、數(shù)據(jù)基本屬性等;數(shù)據(jù)內(nèi)容是指數(shù)據(jù)項的具體內(nèi)容,既對應(yīng)的視頻文件、音頻文件、表文件等。如圖1,關(guān)系數(shù)據(jù)源自本體關(guān)系,元數(shù)據(jù)源自包裝代理,數(shù)據(jù)內(nèi)容與身份識別對應(yīng)。
圖1 數(shù)據(jù)空間中各模塊集成數(shù)據(jù)流程
數(shù)據(jù)空間作為一種數(shù)據(jù)管理技術(shù)面臨著諸多挑戰(zhàn),既要求集成多源異構(gòu)的數(shù)據(jù),同時具備對數(shù)據(jù)的增加、刪除、查找、修改等傳統(tǒng)問題。數(shù)據(jù)空間集成了RDBMS、Email、Document、Mobilephone、WebPage、XML、Image 等數(shù)據(jù)源。如圖2,數(shù)據(jù)空間中的數(shù)據(jù)是高度異構(gòu)的,但是在數(shù)據(jù)操作時要求數(shù)據(jù)具有大致相同的格式,因此數(shù)據(jù)擴展是數(shù)據(jù)集成的第一步,既對源數(shù)據(jù)建立包裝代理(wrapper),抽取特定格式的數(shù)據(jù)對象建立圖數(shù)據(jù)庫,在數(shù)據(jù)空間中通過鏈接訪問源數(shù)據(jù)。
圖2 數(shù)據(jù)空間架構(gòu)
本文提出的基于Neo4j 的數(shù)據(jù)空間多源異構(gòu)數(shù)據(jù)集成模式是將源數(shù)據(jù)與數(shù)據(jù)空間分離的模式,源數(shù)據(jù)解析到數(shù)據(jù)空間,保證了數(shù)據(jù)可變但模式穩(wěn)定。數(shù)據(jù)空間的任務(wù)是對多源異構(gòu)數(shù)據(jù)(RDBMS、Email、Docu?ment、Mobilephone、WebPage、XML、Image)建模,包括構(gòu)建本體獲得本體關(guān)系、包裝代理、新數(shù)據(jù)身份識別、數(shù)據(jù)集成,獲取關(guān)系數(shù)據(jù)、元數(shù)據(jù)、數(shù)據(jù)內(nèi)容和源數(shù)據(jù)鏈接。Neo4j 圖數(shù)據(jù)庫存儲數(shù)據(jù)和關(guān)系,并具有數(shù)據(jù)挖掘功能[12],節(jié)點信息包含元數(shù)據(jù)、數(shù)據(jù)內(nèi)容以及源數(shù)據(jù)鏈接,關(guān)系數(shù)據(jù)表示節(jié)點與節(jié)點的關(guān)系。通過鏈接對源數(shù)據(jù)操作,解決數(shù)據(jù)一致性問題,同時也避免了數(shù)據(jù)空間因源數(shù)據(jù)導入而導致存儲空間快速激增問題。
Protégé編輯本體,獲得一個用OWL 表示的知識表示文件。對于結(jié)構(gòu)化數(shù)據(jù),利用D2RQ 轉(zhuǎn)化工具把表數(shù)據(jù)轉(zhuǎn)化成虛擬的RDF 數(shù)據(jù)[13],使數(shù)據(jù)在RDF 層面實現(xiàn)數(shù)據(jù)格式的統(tǒng)一。對于非結(jié)構(gòu)化數(shù)據(jù),需要對本體數(shù)據(jù)“包裝代理”處理,以建立鏈接方式獲取數(shù)據(jù)源。如圖3 所示,將數(shù)據(jù)存儲到圖數(shù)據(jù)庫Neo4j 中主要包括兩個部分,其一為將本體數(shù)據(jù)轉(zhuǎn)化為RDF 數(shù)據(jù),其二為把RDF 文件映射到Neo4j。RDF 是三元組數(shù)據(jù)<主體,謂詞,客體>,一般情況下RDF 三元組轉(zhuǎn)換到Neo4j 圖數(shù)據(jù)庫分為兩種情況,第一中是轉(zhuǎn)化為兩個節(jié)點,以及這兩個節(jié)點對應(yīng)的關(guān)系,第二種是轉(zhuǎn)化為一個節(jié)點和節(jié)點對應(yīng)的屬性。具體轉(zhuǎn)化方式根據(jù)實際情況而定。
圖3 OWL文件存入Neo4j數(shù)據(jù)庫流程
數(shù)據(jù)庫集成面臨的最大困難是多源數(shù)據(jù)格式不統(tǒng)一,使得存儲、查詢、修改等不能得到解決,包裝器的目的是對多源異構(gòu)的數(shù)據(jù)進行統(tǒng)一表示,經(jīng)由包裝器把RDBMS、Email、Document、Mobilephone、WebPage、XML、Image 等數(shù)據(jù)集成到數(shù)據(jù)空間,交由圖數(shù)據(jù)庫管理。
定義1:將源數(shù)據(jù)視為node,把該node 用五元組(εDB,πDB,ωDB,γDB,τDB)表示,其中εDB是源數(shù)據(jù)名稱,πDB是源數(shù)據(jù)標示信息,ωDB是源數(shù)據(jù)內(nèi)容,γDB是源數(shù)據(jù)內(nèi)容標示信息,τDB是識別數(shù)據(jù)。
εDB(源數(shù)據(jù)名稱):εDB=DB,DB是源數(shù)據(jù)庫名稱,εDB可為NULL。
πDB(源數(shù)據(jù)標示信息):πDB=<C,T>,其中C,T表示源數(shù)據(jù)的標示信息,包括源數(shù)據(jù)初次創(chuàng)建時間,數(shù)據(jù)庫大小,以及數(shù)據(jù)的更改時間,既C=(creat time:data,size:int,modidied time:data),T=(data1,int,data2)。
ωDB(源數(shù)據(jù)內(nèi)容):源數(shù)據(jù)的每個字符為ωi,則ωDB=∑ωi,表示所查數(shù)據(jù)的所有內(nèi)容。
γDB(源數(shù)據(jù)內(nèi)容標示信息):令γDB=<N,Nf,Ro>,表示源數(shù)據(jù)內(nèi)容的標示信息,其中文件名N=<dc1,dc2,dc3,dc4…>,文件格式Nf= <.txt, .doc,.pdf,.xml, .jpg, .mp4…>,列名Ro= <col1,col2,col3,col4…>。
根據(jù)τDB建立各源數(shù)據(jù)間關(guān)系,對源數(shù)據(jù)間關(guān)系定義如下:
當有新數(shù)據(jù)加入數(shù)據(jù)空間時要判斷數(shù)據(jù)相關(guān)性,數(shù)據(jù)空間會在存儲數(shù)據(jù)時對數(shù)據(jù)進行評估,如果數(shù)據(jù)對象與主體相關(guān),則存儲,否者放棄該數(shù)據(jù)對象。身份識別步驟如下:
(1)通過包裝代理提取新數(shù)據(jù)NewDB的識別數(shù)據(jù)信息τNew;
則識別成功;
(4)如果Cr<CrBase,放棄該數(shù)據(jù)對象;
(5)建立節(jié)點加入NewDB
身份識別流程如圖4。
圖4 身份識別流程
數(shù)據(jù)空間是對多源異構(gòu)數(shù)據(jù)集成管理的系統(tǒng),是由數(shù)據(jù)構(gòu)成的高維空間,它包含數(shù)據(jù)內(nèi)容以及數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,這些數(shù)據(jù)以圖結(jié)構(gòu)形式集成,反映數(shù)據(jù)間的生態(tài)關(guān)系。在制造企業(yè)中,與產(chǎn)品相關(guān)的五大因素為:人、機、料、法、環(huán)?!叭恕敝干a(chǎn)設(shè)備的操作人員,“機”指生產(chǎn)的執(zhí)行設(shè)備,“料”指生產(chǎn)加工使用的原料及工具,“法”指生產(chǎn)加工的方法,“環(huán)”指生產(chǎn)環(huán)境[14]。數(shù)據(jù)空間則是集成管理人、機、料、法、環(huán)相關(guān)數(shù)據(jù)。
實體用三元組表示:節(jié)點(Node)、關(guān)系(Relation?ship)、屬性(Properties)。其中,可以為節(jié)點、關(guān)系賦予相應(yīng)屬性。在節(jié)點上賦予屬性,當數(shù)據(jù)儲存時,內(nèi)存消耗可以得到有效解決;為關(guān)系賦予屬性,則可以更加靈活擴展模型。無論是節(jié)點還是關(guān)系,都可以擁有多個屬性用來描述其特征,節(jié)點間可以相互建立關(guān)系,每個節(jié)點可以設(shè)置多個屬性的鍵值對(Key,Value),每個關(guān)系有from Node 和to Node,同時每個關(guān)系可以設(shè)置多個屬性的鍵值對(Key,Value)。
RDF 是三元組數(shù)據(jù)<主體,謂詞,客體>,其中主體或者客體對應(yīng)Neo4j 中的節(jié)點,謂詞對應(yīng)于節(jié)點與節(jié)點之間的關(guān)系,存入Neo4j 后由于節(jié)點名稱的存在,如果要在數(shù)據(jù)庫中找到存放的節(jié)點,必須要建立索引。
圖5 數(shù)據(jù)空間節(jié)點存儲模型
目標問題的求解算法:
輸入:源數(shù)據(jù)
輸出:元數(shù)據(jù)、實例化主體
其中,P 表示問題的答案范圍,當P 可以由DB 直接得到時,不需要進行額外元數(shù)據(jù)提取,只需完成步驟一。adhoc()是元數(shù)據(jù)提取函數(shù),F(xiàn)unction(R)是節(jié)點關(guān)系函數(shù)。當目標P 的范圍超過DB 但小于πDB時,繼續(xù)步驟二,返回源數(shù)據(jù)名稱εDB。當目標P 的范圍超過πDB但小于εDB時,繼續(xù)步驟三,返回源數(shù)據(jù)內(nèi)容ωDB。當目標P 的范圍在關(guān)系R 的范圍內(nèi),返回識別實例化主體τDB。當新數(shù)據(jù)加入到數(shù)據(jù)空間時,如果CrNewDB>CrBase,則循環(huán)以上所有步驟。
處理器Intel Core i7-7700HQ CPU @ 2.80 GHz,RAM 8.00 Gb,64 位操作系統(tǒng),Protégé5.2.0,Neo4j-com?munity-3.5.9,Java1.8.0_181,Eclipse4.3.0。
圖6 節(jié)點與節(jié)點關(guān)系
集成人、機、料、法、環(huán)相關(guān)數(shù)據(jù)到數(shù)據(jù)空間如圖7,數(shù)據(jù)空間是一個復雜網(wǎng)絡(luò),包括節(jié)點、關(guān)系、權(quán)重以及節(jié)點屬性。節(jié)點是源數(shù)據(jù)中的實體,關(guān)系是指實體之間存在的關(guān)聯(lián)關(guān)系,權(quán)重是指關(guān)聯(lián)關(guān)系的重要程度,屬性是源數(shù)據(jù)的值。通過源數(shù)據(jù)的相關(guān)記錄,基于Neo4j圖數(shù)據(jù)庫建立實體之間關(guān)系。
圖7 集成人、機、料、法、環(huán)數(shù)據(jù)
圖8 集成“人”相關(guān)數(shù)據(jù)
因為數(shù)據(jù)空間的復雜性,在查詢數(shù)據(jù)時需要對節(jié)點數(shù)目限制,根據(jù)實例化本體的限制,得到的節(jié)點個數(shù)和關(guān)系也是受到限制的,這樣的好處在于選取復雜網(wǎng)絡(luò)的部分結(jié)構(gòu),從而避免復雜網(wǎng)絡(luò)造成不易理解的弊端。根據(jù)查詢節(jié)點的不同,數(shù)據(jù)空間也不同,如圖9 所示,限制節(jié)點數(shù)為15,實例化“機”本體,得到數(shù)據(jù)空間中集成的機器數(shù)據(jù)以及與其相關(guān)的信息組成的關(guān)聯(lián)網(wǎng)絡(luò)。同樣限制節(jié)點數(shù)為15 時,集成在數(shù)據(jù)空間中與“料”相關(guān)的信息如圖10 所示,包含了由人、機、料、法、環(huán)構(gòu)成的關(guān)聯(lián)網(wǎng)絡(luò)。
圖9 集成“機”相關(guān)數(shù)據(jù)
圖10 集成“料”相關(guān)數(shù)據(jù)
圖11 是把本體“人”實例化后在數(shù)據(jù)空間集成的效果。節(jié)點屬性除了包括節(jié)點的基本信息外還包括源數(shù)據(jù)鏈接,通過鏈接訪問源數(shù)據(jù)。這里的鏈接是指多源異構(gòu)的數(shù)據(jù)的存儲路徑,可以是本地路徑也可以是遠程路徑。這樣集成數(shù)據(jù)的好處有以下兩方面:一方面減少數(shù)據(jù)儲存空間的消耗,另一方面是當需要查詢源數(shù)據(jù)時有路徑可尋。
圖11 數(shù)據(jù)空間鏈接到源數(shù)據(jù)
圖12 節(jié)點數(shù)目改變時實體數(shù)量與關(guān)聯(lián)關(guān)系
數(shù)據(jù)空間打破“數(shù)據(jù)孤島”,集成管理多源異構(gòu)數(shù)據(jù)。使以前獨立存儲于各數(shù)據(jù)庫的數(shù)據(jù)有了關(guān)聯(lián),組成數(shù)據(jù)生態(tài),數(shù)據(jù)與數(shù)據(jù)產(chǎn)生聯(lián)系,為數(shù)據(jù)賦予了新生命的同時也產(chǎn)生潛在的不可估量的價值,這為數(shù)據(jù)挖掘和數(shù)據(jù)分析提供便利。在生產(chǎn)制造過程中,根據(jù)數(shù)據(jù)空間生產(chǎn)線權(quán)重變化,不斷調(diào)整企業(yè)“人機料法環(huán)”的配比,確保生產(chǎn)安全,降低生產(chǎn)成本,提高產(chǎn)品質(zhì)量,數(shù)據(jù)生態(tài)良性循環(huán)。