王樹明 吳濟勝 鄧夢航
(1.中國煙草總公司湖北省煙草專賣局信息中心 湖北省武漢市 430030)
(2.武漢楚煙信息技術(shù)有限公司 湖北省武漢市 430030)
黨的十九大報告提出要“推動互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能和實體經(jīng)濟深度融合”[1]。數(shù)據(jù)成為企業(yè)數(shù)字化時代的重要資源,它以產(chǎn)品或服務(wù)的形態(tài)為企業(yè)創(chuàng)造價值,為企業(yè)轉(zhuǎn)型升級發(fā)揮重要作用[2]。數(shù)據(jù)不是孤立存在的,數(shù)據(jù)從產(chǎn)生、處理、加工、融合、流轉(zhuǎn),到最終消亡,會形成一種關(guān)系鏈路,這就是數(shù)據(jù)血緣[3]。數(shù)據(jù)血緣分析就是在溯源過程中找到相關(guān)數(shù)據(jù)之間的聯(lián)系,比如,當(dāng)數(shù)據(jù)發(fā)生異常,需要能追蹤到異常發(fā)生的原因,把風(fēng)險控制在適當(dāng)?shù)乃絒4]。數(shù)據(jù)血緣分析能幫助我們追蹤數(shù)據(jù)的來源、處理的過程,這對于數(shù)據(jù)質(zhì)量的監(jiān)控、數(shù)據(jù)處理性能的調(diào)優(yōu)和數(shù)據(jù)資產(chǎn)價值的評估等,都有非常重要的作用。
湖北煙草已經(jīng)構(gòu)建了一套覆蓋全業(yè)務(wù)鏈條的完整數(shù)據(jù)中心[5],包括一體化數(shù)據(jù)存儲、一體化數(shù)據(jù)管理和一體化數(shù)據(jù)分析三部分內(nèi)容。然而,由于歷史、管理等多方面原因,數(shù)據(jù)中心依然面臨數(shù)據(jù)加工無序、數(shù)據(jù)獲取與開發(fā)不規(guī)范等現(xiàn)象,血緣分析是規(guī)范化數(shù)據(jù)治理的一個有效工具[6]。
傳統(tǒng)數(shù)據(jù)中心的構(gòu)建包括下面六個層次:最底層是部門的業(yè)務(wù)數(shù)據(jù)庫(DB),數(shù)據(jù)經(jīng)過抽取轉(zhuǎn)換層(ETL)[7]進入操作性數(shù)據(jù)層(ODS)[8],然后經(jīng)過明細數(shù)據(jù)層(DWD)[9],再進入輕度匯總層(DWA)[10],最后進入數(shù)據(jù)集市(DM)[11]。其中,每層的具體任務(wù)如表1 所示。
表1:數(shù)據(jù)中心層次結(jié)構(gòu)
這種層次結(jié)構(gòu)定義了不同模塊的職能劃分,有利于數(shù)據(jù)規(guī)范化的管理。但是這種劃分形式也存在部分功能重疊的問題,并且過于精細的劃分不利于系統(tǒng)的物理實現(xiàn)。湖北煙草數(shù)據(jù)中心則從項目實施的角度對系統(tǒng)按照操作方式進行了三層劃分,即針對傳統(tǒng)數(shù)據(jù)中心的頂上四層,按照BKR 體系進行重新分層和命名。BKR 體系是描述數(shù)據(jù)加工、分級存儲的體系。其中,B 層(Base)是基礎(chǔ)業(yè)務(wù)數(shù)據(jù)層,K 層(KPI,Key Performance Indicators)是關(guān)鍵指標(biāo)層,R 層(Reports)是靈活運用層。BKR 體系有著嚴(yán)格的轉(zhuǎn)換規(guī)則,以確保數(shù)據(jù)分層的合理性:K 可由B、K 加工而成;R 可由B、K 加工而成;R 不能生成R,如圖1 所示。
圖1:BKR 分層規(guī)范
BKR 體系有著一套嚴(yán)格的命名規(guī)范:B 表命名相對簡單,業(yè)務(wù)數(shù)據(jù)接口表入庫后,命名為B 表;R 表命名業(yè)務(wù)含義明顯;K 表共享程度高,業(yè)務(wù)含義也豐富。對數(shù)據(jù)加工的治理,就是監(jiān)督和檢查BKR 是否嚴(yán)格按照規(guī)則轉(zhuǎn)換。基于命名規(guī)范,機器能夠快速甄別出不合理的結(jié)構(gòu)設(shè)計。
數(shù)據(jù)血緣(Lineage, Provenance, Pedigree, Consanguinity)亦可譯為(血統(tǒng)、起源、世系、譜系)[12],是近幾年隨著數(shù)據(jù)庫和網(wǎng)絡(luò)普及而發(fā)展起來的一個研究領(lǐng)域。大數(shù)據(jù)時代,數(shù)據(jù)爆發(fā)性增長,海量的、各種類型的數(shù)據(jù)在快速產(chǎn)生,這些龐大復(fù)雜的數(shù)據(jù)信息,通過聯(lián)姻融合、轉(zhuǎn)換變換、流轉(zhuǎn)流通,又生成新的數(shù)據(jù),匯聚成數(shù)據(jù)的海洋。數(shù)據(jù)的產(chǎn)生、加工融合、流轉(zhuǎn)流通,到最終消亡,數(shù)據(jù)之間自然會形成一種關(guān)系,即數(shù)據(jù)的血緣關(guān)系。與人類社會中的血緣關(guān)系不同,數(shù)據(jù)的血緣關(guān)系還包含了一些特有的特征[13]:
(1)歸屬性:特定的數(shù)據(jù)歸屬特定的組織或者個人。
(2)多源性:數(shù)據(jù)可以有多個來源,即由多個源頭經(jīng)過加工而成。
(3)追溯性:在數(shù)據(jù)的生命周期內(nèi),即從產(chǎn)生到消亡的整個過程中,具備可追溯性。
(4)層次性:是血緣分析細膩程度的一個指標(biāo),由粗到細分別為:所有者、數(shù)據(jù)庫/文件服務(wù)器、表/文件目錄、字段/文件。
本文是在BKR 體系下,針對“表”這個層次的約束關(guān)系進行血緣分析。
數(shù)據(jù)血緣存在多種分析層級,其中“表”這一級的粒度大小適中,被廣泛采用,本文就是針對“表”這個級別進行研究的。本文提到的“數(shù)據(jù)”就是指BKR 體系中的“表”。向數(shù)據(jù)的上游追溯,查看哪些數(shù)據(jù)在提供信源,是一種共享性的探查[14]。同時,向數(shù)據(jù)的下游追溯,查看哪些數(shù)據(jù)在匯集信息,是一種依賴性的評價。為了定量的描述這兩種特性,我們在數(shù)據(jù)之間增加有向邊,即以自身為起點,指向外鍵所代表的表,如圖2 所示。表的外鍵是追溯上游數(shù)據(jù)的線索,意味著每條線段指向的表,是分享信息的,因此被越多外鍵指向,即表的入度越大,其共享性也越大。從邊的反方向來看,表的外鍵意味數(shù)據(jù)依賴于另外一張表,表的外鍵越多,即表的出度越大,其依賴性也越大。因此,可以用入度來衡量一個數(shù)據(jù)的共享程度,用出度來衡量一個數(shù)據(jù)的依賴程度。
圖2:BKR 體系的PageRank 模型
本研究的設(shè)計理念是“高內(nèi)聚、松耦合”[15],即高共享、低依賴。入度大,意味著數(shù)據(jù)被更多的表利用,說明數(shù)據(jù)的共享性好,具有較高的使用價值。出度小,意味著數(shù)據(jù)來源單純,依賴性小,易于維護。為了從血緣的角度來評估BKR 體系設(shè)計的優(yōu)劣,需要為每一張表建立全局性的指標(biāo),來表明其共享程度和依賴程度,為后續(xù)系統(tǒng)的迭代和優(yōu)化提供指導(dǎo)依據(jù)。
雖然表的共享程度與表的入度正相關(guān),但是直接用入度來代表共享度,只能反應(yīng)局部屬性,因為一張表不僅有前驅(qū)數(shù)據(jù),還有后續(xù)數(shù)據(jù),他們都會對這張表在系統(tǒng)中的地位產(chǎn)生影響,所以要想客觀的表達當(dāng)前表格的共享程度,應(yīng)該從全局的角度來考慮。
將BKR 系統(tǒng)看成一個有向圖,如圖2 所示,這與網(wǎng)頁跳轉(zhuǎn)圖的形式非常接近,因此本研究將在經(jīng)典的網(wǎng)頁排名算法PageRank[16]的基礎(chǔ)上,計算全局共享指標(biāo)。
PageRank 是利用網(wǎng)頁的超鏈接來調(diào)整網(wǎng)頁的權(quán)重,從而給網(wǎng)頁進行排名的一種算法。 該算法被Google 首次引入搜索引擎,用它來計算網(wǎng)頁的相關(guān)性和重要性,并取得了卓有成效的效果。PageRank 的思想是模擬上網(wǎng)者隨機打開一個網(wǎng)頁,然后通過超鏈接跳轉(zhuǎn)其他網(wǎng)頁的過程,通過計算每個網(wǎng)頁的被訪問概率來代表網(wǎng)頁的重要程度。將圖2 看作簡單的PageRank 模型,每張表類似一個網(wǎng)頁結(jié)點。表1 的出度為2,如果以平均概率計算,表1 各有1/2 的概率到達表2 和表3,同理分析表2、表3、表4,得到狀態(tài)轉(zhuǎn)移矩陣M,其中每一列表示該列所代表的結(jié)點到其它結(jié)點(行代表的結(jié)點)的概率分布。
同時,還規(guī)定每個結(jié)點的訪問概率是由指向它的結(jié)點的訪問概率的累加和,比如:
假設(shè)每個結(jié)點的初始概率都相同,即1/N,N 為結(jié)點的總數(shù),則每個結(jié)點的新概率值就是狀態(tài)轉(zhuǎn)移矩陣M 乘以當(dāng)前結(jié)點的概率向量,向量V0是所有結(jié)點的初始概率,向量V1是所有結(jié)點的第一次迭代后的概率。
每次結(jié)點更新后的概率只與上一次的概率有關(guān),這個迭代過程是一個馬爾科夫過程[17],該過程被證明具有收斂性。經(jīng)過若干次迭代后,圖2 中的結(jié)點概率就穩(wěn)定在[0.31, 0.15,0.23, 0.31]附近。該數(shù)值表明,表1 與表4 的共享度最高,表3 次之,表2 最低。這些穩(wěn)定值并不直接與入度相關(guān),而是一個全局評估后的結(jié)果。
馬爾科夫過程的收斂條件要求跳轉(zhuǎn)關(guān)系是強聯(lián)通圖,即從圖中任意結(jié)點起始,能夠到達所有其它結(jié)點,如果不滿足這個條件,則不能正常收斂[18],圖3 展示了不能正常收斂的情況。
圖3:非收斂的情況
2.2.1 純輸出結(jié)點
當(dāng)網(wǎng)絡(luò)中出現(xiàn)純輸出點,如圖3 中的表1 所示,表1 的入度為0,意味表1 只有跳出,沒有任何跳入,則表1 最終的概率只會是0。
2.2.2 純輸入結(jié)點
當(dāng)網(wǎng)絡(luò)中出現(xiàn)純輸入結(jié)點,如圖3 中的表4 所示,表4出度為0,意味著所有的跳轉(zhuǎn)概率都會匯聚到表4,并且不再跳出,則其他表的概率都收斂到0,進而造成表4 的概率也收斂到0。
上述這幾種情況在BKR 體系中會經(jīng)常出現(xiàn),為了解決這些特殊情況,PageRank 算法的改進思路是將狀態(tài)轉(zhuǎn)移方程用兩部分組成,如公式(1)所示。第一部的主體是原狀態(tài)矩陣計算結(jié)果,第二部分的主體表示每個結(jié)點以平均概率的方式訪問其它結(jié)點。兩個部分被分別乘以系數(shù)α 和(1-α),表示狀態(tài)轉(zhuǎn)移的總體概率是由兩個部分加權(quán)求和組成。一般α 取值0.8。
雖然這次改進解決了收斂到0 的不正常情況,但是所有結(jié)點的概率的累加和并沒有收斂到1,究其原因還是因為表4 的出度為0。為了解決這個特殊情況,我們提出再次改進的思路,即為出度為0 的結(jié)點添加一個指向自己的邊,如圖4 中表4 所示。
圖4:給出度為0 的結(jié)點添加指向自己的邊
這樣概率迭代公式就變?yōu)椋?/p>
通過分析新的穩(wěn)定值,我們發(fā)現(xiàn)表4 處于共享鏈條的最頂斷,為下游所有結(jié)點提供信息,因此共享度最大,而表1則處在共享鏈條的最低層,不為任何其他結(jié)點提供數(shù)據(jù),因此共享度最小。同時,表3 有兩條共享鏈,分別為表1 和表2 提供信息,所以比只有1 條共享鏈的表2 的共享度大。每個結(jié)點都收斂到一個有意義的值,并且收斂值之和為1。至此,通過改進后的算法,我們得到了每張表的基于全局的共享指標(biāo)。
在BKR 體系的血緣分析中,還有一個重要的指標(biāo)——依賴度。對于圖3 來說,依賴度與出度正相關(guān)。但是與全局共享指標(biāo)一樣,一張表的全局依賴度也受到前驅(qū)數(shù)據(jù)和后續(xù)數(shù)據(jù)的影響。通過分析圖3 的出度與入度,我們發(fā)現(xiàn)“共享”與“依賴”互為對偶關(guān)系,因此對圖3 中共享模型稍作修改,如圖5 所示,就可以直接套用計算共享指標(biāo)的方法來計算依賴指標(biāo)。
圖5:依賴模型轉(zhuǎn)換為共享模型
圖3 是從外鍵的視角對表添加有向邊,如果從主鍵的視角添加有向邊,則圖3 可以轉(zhuǎn)換為圖5(a),其中表2 的主鍵被表1 引用,即繪制從表2 到表1 的有向邊,表示表1 對表2 有依賴。對其他結(jié)點進行類似操作可以發(fā)現(xiàn),將圖3 中的所有邊進行反向,即得到圖5(a),此時結(jié)點的入度就與依賴度正相關(guān)了。為了能夠順利地計算收斂值,將圖5(a)中出度為0 的表1 也添加一個指向自己的邊,得到圖5(b),接著就可以按照公式(1)來計算全局依賴度了。圖5(b)的狀態(tài)轉(zhuǎn)移矩陣為:
經(jīng)過若干次迭代,圖5(b)中的結(jié)點概率穩(wěn)定在[0.782,0.098, 0.070, 0.050]附近,其中表1 的依賴度最大,這符合表1 是依賴鏈關(guān)系的起始端的本質(zhì)。同時,表4 的依賴度最小,這也符合表4 是依賴關(guān)系的末端的本質(zhì)。
針對煙草物流領(lǐng)域中的配送業(yè)務(wù),進行全局共享度和依賴度的分析。該業(yè)務(wù)模塊包含,倉庫信息、貨物明細、配送清單、送貨車輛、送貨任務(wù)、送貨班組、員工信息、日志記錄等19 張表格。將該業(yè)務(wù)數(shù)據(jù)以外鍵的視角添加有向邊,形成共享鏈條,用入度表示共享性、出度表示依賴性,通過公式(1)計算得到所有表的依賴指標(biāo)和共享指標(biāo),如圖6所示。
圖6:配送業(yè)務(wù)指標(biāo)模型
通過觀察圖6 中各表的指標(biāo)數(shù)可以發(fā)現(xiàn),共享值較大的表,主要集中在數(shù)據(jù)流的主干上,并且越靠近數(shù)據(jù)流的末尾,共享值越大,如表3、表4、表8、表11、表17、表18,其中表3 和表18 的共享值更突出一些,因為它倆是數(shù)據(jù)流的末端。同理,依賴值較大的表分布在數(shù)據(jù)流的外圍,如表0、表1、表2、表6、表9、表10、表12 等,就像樹冠上的葉片一樣,需要主干為其提供更多的支撐。
共享指標(biāo)和依賴指標(biāo)可以代表每張表在BKR 體系中的血緣地位。這兩個指標(biāo)可以作為血緣分析的一個可視化元素[19],給用戶提供一個全局的視野來審視整個系統(tǒng)的重心分布,也可以作為系統(tǒng)更新和優(yōu)化時的一個參考指標(biāo),比較更新前后,數(shù)據(jù)的血緣地位在系統(tǒng)中的升降變化。
本研究從優(yōu)化湖北煙草數(shù)據(jù)中心項目建設(shè)的實際需求出發(fā),將數(shù)據(jù)倉庫從基于業(yè)務(wù)邏輯劃分過渡到基于操作劃分,并規(guī)范了一套更加簡潔的BKR 體系。圍繞BKR 體系,我們提出了共享指標(biāo)和依賴指標(biāo)的概念,并借鑒PageRank 算法在“表”這個級別上計算全局性指標(biāo)。經(jīng)過實例分析,該算法可以為系統(tǒng)設(shè)計、系統(tǒng)優(yōu)化提供一個全局性的視野和具有明確含義的兩個指標(biāo),同時也為血緣分析可視化提供了兩個有意義的顯示屬性。下一步,我們的研究是在“表”這一級的基礎(chǔ)進一步細化分析,爭取從字段級[20]、甚至記錄級的層次上制定更加精確的血緣指標(biāo)評估模型。