[曹德強(qiáng)]
大數(shù)據(jù)技術(shù)的基礎(chǔ)是數(shù)據(jù),移動(dòng)網(wǎng)絡(luò)作為目前最大的數(shù)據(jù)產(chǎn)生源之一,其每天會(huì)產(chǎn)生海量的數(shù)據(jù)。數(shù)據(jù)中蘊(yùn)含著網(wǎng)絡(luò)的健康情況,用戶的使用感知等各種各類的信息,如果不加整理直接進(jìn)行存儲(chǔ),則會(huì)對后續(xù)的數(shù)據(jù)分析帶來極大的不便。因此需要針對不同的數(shù)據(jù)類型,建立符合其自身數(shù)據(jù)特點(diǎn)和應(yīng)用場景的數(shù)據(jù)庫模型,以提升數(shù)據(jù)的存取效率,使數(shù)據(jù)更易分析使用,為后續(xù)的數(shù)據(jù)挖掘打下一個(gè)良好的基礎(chǔ)。本文主要針對參數(shù)類的數(shù)據(jù),結(jié)合網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),提出了一種符合范式、易維護(hù)、易擴(kuò)展的數(shù)據(jù)存儲(chǔ)模型,供各位讀者在實(shí)際的應(yīng)用中進(jìn)行參考。
現(xiàn)階段,移動(dòng)網(wǎng)絡(luò)的經(jīng)歷了由2G 到5G 的技術(shù)演進(jìn),網(wǎng)絡(luò)也從模擬時(shí)代進(jìn)入了數(shù)字時(shí)代,網(wǎng)絡(luò)中硬件結(jié)構(gòu)的組成也不斷發(fā)生著變化。但移動(dòng)網(wǎng)絡(luò)整體的拓?fù)浣Y(jié)構(gòu)依然使用著樹狀組網(wǎng)的拓?fù)浞绞?,因此如果在?shù)據(jù)存儲(chǔ)方面也采用與網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)相同的架構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ),可以極大的提升整體數(shù)據(jù)的可讀性,增強(qiáng)用戶體驗(yàn)。
同時(shí),在數(shù)據(jù)存儲(chǔ)方面采用樹狀的存儲(chǔ)方式,可以極大的減少數(shù)據(jù)庫表的數(shù)量。但也存在一定的問題,比如在樹狀分支較深的情況下,數(shù)據(jù)間的關(guān)聯(lián)就顯的比較繁瑣,會(huì)導(dǎo)致數(shù)據(jù)查詢效率較低。因此,需要一種數(shù)據(jù)存儲(chǔ)方法,能夠優(yōu)化整個(gè)樹形結(jié)構(gòu)表的查詢、更新和刪除方式,提升整體的數(shù)據(jù)查詢和更新效率。
結(jié)合移動(dòng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),設(shè)計(jì)出一種樹狀的數(shù)據(jù)庫模型,能夠方便地進(jìn)行數(shù)據(jù)查詢,實(shí)時(shí)響應(yīng)用戶的查詢動(dòng)作,且便于數(shù)據(jù)維護(hù)和更新。
(1)數(shù)據(jù)庫三范式原則
第一范式:原子性原則,字段不可分,每個(gè)字段是原子級(jí)別的
第二范式:完全依賴,非主鍵字段完全依賴主鍵
第三范式:消除傳遞依賴,非主鍵字段不能相互依賴
(2)可擴(kuò)展性原則:移動(dòng)網(wǎng)絡(luò)的業(yè)務(wù)是不斷擴(kuò)展的,其中的網(wǎng)元也會(huì)不斷增加,因此模型設(shè)計(jì)上要遵循可擴(kuò)展性原則,便于后期的業(yè)務(wù)擴(kuò)展。
(3)易維護(hù):當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)增刪等情況時(shí),能夠方便快捷的維護(hù)整體數(shù)據(jù)庫的架構(gòu)。
移動(dòng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)從單個(gè)基站的角度來講是樹狀的,以LTE網(wǎng)絡(luò)為例,其單個(gè)基站的拓?fù)浣Y(jié)構(gòu)從硬件上可分為:BBU-板卡-RRU-天線四層結(jié)構(gòu),從邏輯結(jié)構(gòu)上又可大體分為:基站-小區(qū)-鄰區(qū)三層結(jié)構(gòu),整體結(jié)構(gòu)相對清晰。
但從現(xiàn)網(wǎng)北向數(shù)據(jù)(按集團(tuán)規(guī)范,廠家需將網(wǎng)絡(luò)參數(shù)上傳至北向服務(wù)器)的組成上來看,其板卡、RRU、天線這些硬件并未在數(shù)據(jù)上顯示明顯的樹狀結(jié)構(gòu),而是并列呈現(xiàn)的,其整體的數(shù)據(jù)組成結(jié)構(gòu)如圖1 北向參數(shù)架構(gòu)圖所示。
圖1 北向參數(shù)架構(gòu)圖
由圖1 可知,在常規(guī)的數(shù)據(jù)存儲(chǔ)中,如果需要得到一個(gè)BBU 下,主要的硬件和邏輯網(wǎng)元信息,則需要對板卡、RRU、天線、基站、小區(qū)等數(shù)據(jù)表分別進(jìn)行關(guān)聯(lián),才能得出結(jié)果,其查詢效率相對較低,數(shù)據(jù)庫語句寫法也相對較為復(fù)雜。
那么有沒有更簡單的存儲(chǔ)方式呢?圖1 中,我們把各表單獨(dú)進(jìn)行存儲(chǔ),表與表之間雖然可以通過外鍵進(jìn)行關(guān)聯(lián)和約束,但在統(tǒng)計(jì)上就顯的較為復(fù)雜。
如果我們把各表內(nèi)通用的字段提取出來,按照樹狀結(jié)構(gòu)放在一張表內(nèi),再將各表的私有字段存儲(chǔ)在私有表中,那么我們在統(tǒng)計(jì)上就會(huì)顯得相對簡單一些,只需要在一張表內(nèi)進(jìn)行即可。如果需要各參數(shù)表的具體參數(shù)信息,則可以通過與相對應(yīng)的參數(shù)表進(jìn)行關(guān)聯(lián)獲取,其數(shù)據(jù)庫模型可以抽象為圖2 樹表結(jié)構(gòu)設(shè)計(jì)圖。
圖2 樹表結(jié)構(gòu)設(shè)計(jì)
在該模型中,將各參數(shù)表的通用字段存儲(chǔ)在一張通用表內(nèi),添加網(wǎng)元類型字段用于區(qū)分參數(shù)類型;添加父節(jié)點(diǎn)ID 字段,用于進(jìn)行表內(nèi)的數(shù)據(jù)關(guān)聯(lián)和統(tǒng)計(jì)。該模型將原本樹狀的網(wǎng)絡(luò)架構(gòu)進(jìn)行了扁平化,將網(wǎng)絡(luò)內(nèi)的主要網(wǎng)元信息存儲(chǔ)在了一張通用表內(nèi),與原有的模型相比,有如下幾個(gè)特點(diǎn)。
(1)簡化了數(shù)據(jù)統(tǒng)計(jì)
將原本需要在多個(gè)表間進(jìn)行的關(guān)聯(lián)統(tǒng)計(jì),簡化到了一張主表內(nèi)。在主表內(nèi)通過遞歸查詢,即可實(shí)現(xiàn)原本需要多個(gè)表關(guān)聯(lián)的統(tǒng)計(jì),極大地簡化了統(tǒng)計(jì)語句,同時(shí)提升了查詢效率。
(2)結(jié)構(gòu)靈活,數(shù)據(jù)易擴(kuò)展
隨著網(wǎng)絡(luò)的不斷升級(jí),數(shù)據(jù)版本不斷地演進(jìn),網(wǎng)絡(luò)存在多版本共存的情況,但實(shí)際網(wǎng)絡(luò)規(guī)模擴(kuò)長并沒有那么快速。
傳統(tǒng)的數(shù)據(jù)架構(gòu)設(shè)計(jì)中,每新增一個(gè)版本,就需要新增一張數(shù)據(jù)表,在做數(shù)據(jù)統(tǒng)計(jì)時(shí),就需要多關(guān)聯(lián)一張表。采用樹表結(jié)構(gòu)設(shè)計(jì)后,如果新增了一個(gè)版本的數(shù)據(jù),只需要在主表內(nèi)進(jìn)行相應(yīng)的數(shù)據(jù)更新即可,其新版本可以作為一個(gè)新的參數(shù)表,與主表進(jìn)行關(guān)聯(lián),其原有的統(tǒng)計(jì)方式不變。數(shù)據(jù)擴(kuò)展方便,可以根據(jù)需求隨時(shí)進(jìn)行擴(kuò)展,腳本改動(dòng)小,開發(fā)迅速。
(3)維護(hù)方便
當(dāng)某個(gè)參數(shù)版本不需要時(shí),可以對該版本的參數(shù)表進(jìn)行整體刪除,而不影響統(tǒng)計(jì)結(jié)果,極大地降低了維護(hù)成本。
本部分以LTE網(wǎng)絡(luò)為例,對各主題域所包含的內(nèi)容和關(guān)系進(jìn)行描述,整理各主題內(nèi)資源的邏輯關(guān)系
通用參數(shù)表主要將LTE網(wǎng)絡(luò)內(nèi)的通用參數(shù)進(jìn)行存儲(chǔ),并添加相應(yīng)的網(wǎng)元類型和父節(jié)點(diǎn)信息,便于進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。如表1 所示,通用參數(shù)表。
表1 通用參數(shù)表
包含了RRU、BBU、板卡、天線、邏輯基站、邏輯小區(qū)等網(wǎng)絡(luò)參數(shù)信息,與通用參數(shù)表進(jìn)行關(guān)聯(lián),用于查詢某個(gè)網(wǎng)元的具體網(wǎng)絡(luò)參數(shù)。參數(shù)信息表如表2 所示。
表2 參數(shù)信息表
通信網(wǎng)絡(luò)數(shù)據(jù)架構(gòu)多以樹狀結(jié)構(gòu)為主要的拓?fù)湫问?,傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方式雖然可以滿足數(shù)據(jù)存儲(chǔ)的需要,但在數(shù)據(jù)查詢效率和擴(kuò)展性方面存在較大的不足。當(dāng)出現(xiàn)數(shù)據(jù)版本升級(jí)時(shí),會(huì)導(dǎo)致較大的代碼改動(dòng),數(shù)據(jù)維護(hù)升級(jí)維護(hù)成本較大,在數(shù)據(jù)統(tǒng)計(jì)方面需要關(guān)聯(lián)大量的表格才能出結(jié)果。
采用主表與實(shí)體參數(shù)表相結(jié)合的模型進(jìn)行數(shù)據(jù)設(shè)計(jì),可以極大的減少數(shù)據(jù)和代碼的維護(hù)成本,而且極易實(shí)現(xiàn)數(shù)據(jù)的橫向擴(kuò)展,對后續(xù)的網(wǎng)絡(luò)升級(jí)極為有利。
其不足之處在于:
(1)通用表的數(shù)據(jù)量可能相對較大。在實(shí)際的模型設(shè)計(jì)中,需要根據(jù)網(wǎng)絡(luò)的規(guī)模進(jìn)行通用表的拆分。不需要將所有的數(shù)據(jù)存在一張通用表內(nèi),可以適度拆分,減少通用表的數(shù)據(jù)存儲(chǔ)量。
(2)對于樹狀分支較深的表,采用遞歸查詢,效率會(huì)有所降低。遞歸查詢在多層的深度分支表內(nèi),其查詢效率會(huì)有所下降,且對資源的占用率比較大。因此,在遇到多層分支表的情況下,可以提前將樹狀關(guān)聯(lián)關(guān)系計(jì)算出來,再進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。
在實(shí)際的網(wǎng)絡(luò)數(shù)據(jù)庫設(shè)計(jì)中,應(yīng)結(jié)合當(dāng)?shù)鼐W(wǎng)絡(luò)規(guī)模和數(shù)據(jù)組織結(jié)構(gòu)以及實(shí)際的業(yè)務(wù)場景,選擇合適數(shù)據(jù)庫模型進(jìn)行設(shè)計(jì),以提升整體的系統(tǒng)資源利用率和網(wǎng)絡(luò)響應(yīng)速度。