[曹德強]
大數(shù)據(jù)技術(shù)的基礎是數(shù)據(jù),移動網(wǎng)絡作為目前最大的數(shù)據(jù)產(chǎn)生源之一,其每天會產(chǎn)生海量的數(shù)據(jù)。數(shù)據(jù)中蘊含著網(wǎng)絡的健康情況,用戶的使用感知等各種各類的信息,如果不加整理直接進行存儲,則會對后續(xù)的數(shù)據(jù)分析帶來極大的不便。因此需要針對不同的數(shù)據(jù)類型,建立符合其自身數(shù)據(jù)特點和應用場景的數(shù)據(jù)庫模型,以提升數(shù)據(jù)的存取效率,使數(shù)據(jù)更易分析使用,為后續(xù)的數(shù)據(jù)挖掘打下一個良好的基礎。本文主要針對參數(shù)類的數(shù)據(jù),結(jié)合網(wǎng)絡的拓撲結(jié)構(gòu),提出了一種符合范式、易維護、易擴展的數(shù)據(jù)存儲模型,供各位讀者在實際的應用中進行參考。
現(xiàn)階段,移動網(wǎng)絡的經(jīng)歷了由2G 到5G 的技術(shù)演進,網(wǎng)絡也從模擬時代進入了數(shù)字時代,網(wǎng)絡中硬件結(jié)構(gòu)的組成也不斷發(fā)生著變化。但移動網(wǎng)絡整體的拓撲結(jié)構(gòu)依然使用著樹狀組網(wǎng)的拓撲方式,因此如果在數(shù)據(jù)存儲方面也采用與網(wǎng)絡拓撲結(jié)構(gòu)相同的架構(gòu)進行數(shù)據(jù)存儲,可以極大的提升整體數(shù)據(jù)的可讀性,增強用戶體驗。
同時,在數(shù)據(jù)存儲方面采用樹狀的存儲方式,可以極大的減少數(shù)據(jù)庫表的數(shù)量。但也存在一定的問題,比如在樹狀分支較深的情況下,數(shù)據(jù)間的關(guān)聯(lián)就顯的比較繁瑣,會導致數(shù)據(jù)查詢效率較低。因此,需要一種數(shù)據(jù)存儲方法,能夠優(yōu)化整個樹形結(jié)構(gòu)表的查詢、更新和刪除方式,提升整體的數(shù)據(jù)查詢和更新效率。
結(jié)合移動網(wǎng)絡的拓撲結(jié)構(gòu),設計出一種樹狀的數(shù)據(jù)庫模型,能夠方便地進行數(shù)據(jù)查詢,實時響應用戶的查詢動作,且便于數(shù)據(jù)維護和更新。
(1)數(shù)據(jù)庫三范式原則
第一范式:原子性原則,字段不可分,每個字段是原子級別的
第二范式:完全依賴,非主鍵字段完全依賴主鍵
第三范式:消除傳遞依賴,非主鍵字段不能相互依賴
(2)可擴展性原則:移動網(wǎng)絡的業(yè)務是不斷擴展的,其中的網(wǎng)元也會不斷增加,因此模型設計上要遵循可擴展性原則,便于后期的業(yè)務擴展。
(3)易維護:當網(wǎng)絡節(jié)點出現(xiàn)增刪等情況時,能夠方便快捷的維護整體數(shù)據(jù)庫的架構(gòu)。
移動網(wǎng)絡的拓撲結(jié)構(gòu)從單個基站的角度來講是樹狀的,以LTE網(wǎng)絡為例,其單個基站的拓撲結(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ù)(按集團規(guī)范,廠家需將網(wǎng)絡參數(shù)上傳至北向服務器)的組成上來看,其板卡、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ù)存儲中,如果需要得到一個BBU 下,主要的硬件和邏輯網(wǎng)元信息,則需要對板卡、RRU、天線、基站、小區(qū)等數(shù)據(jù)表分別進行關(guān)聯(lián),才能得出結(jié)果,其查詢效率相對較低,數(shù)據(jù)庫語句寫法也相對較為復雜。
那么有沒有更簡單的存儲方式呢?圖1 中,我們把各表單獨進行存儲,表與表之間雖然可以通過外鍵進行關(guān)聯(lián)和約束,但在統(tǒng)計上就顯的較為復雜。
如果我們把各表內(nèi)通用的字段提取出來,按照樹狀結(jié)構(gòu)放在一張表內(nèi),再將各表的私有字段存儲在私有表中,那么我們在統(tǒng)計上就會顯得相對簡單一些,只需要在一張表內(nèi)進行即可。如果需要各參數(shù)表的具體參數(shù)信息,則可以通過與相對應的參數(shù)表進行關(guān)聯(lián)獲取,其數(shù)據(jù)庫模型可以抽象為圖2 樹表結(jié)構(gòu)設計圖。

圖2 樹表結(jié)構(gòu)設計
在該模型中,將各參數(shù)表的通用字段存儲在一張通用表內(nèi),添加網(wǎng)元類型字段用于區(qū)分參數(shù)類型;添加父節(jié)點ID 字段,用于進行表內(nèi)的數(shù)據(jù)關(guān)聯(lián)和統(tǒng)計。該模型將原本樹狀的網(wǎng)絡架構(gòu)進行了扁平化,將網(wǎng)絡內(nèi)的主要網(wǎng)元信息存儲在了一張通用表內(nèi),與原有的模型相比,有如下幾個特點。
(1)簡化了數(shù)據(jù)統(tǒng)計
將原本需要在多個表間進行的關(guān)聯(lián)統(tǒng)計,簡化到了一張主表內(nèi)。在主表內(nèi)通過遞歸查詢,即可實現(xiàn)原本需要多個表關(guān)聯(lián)的統(tǒng)計,極大地簡化了統(tǒng)計語句,同時提升了查詢效率。
(2)結(jié)構(gòu)靈活,數(shù)據(jù)易擴展
隨著網(wǎng)絡的不斷升級,數(shù)據(jù)版本不斷地演進,網(wǎng)絡存在多版本共存的情況,但實際網(wǎng)絡規(guī)模擴長并沒有那么快速。
傳統(tǒng)的數(shù)據(jù)架構(gòu)設計中,每新增一個版本,就需要新增一張數(shù)據(jù)表,在做數(shù)據(jù)統(tǒng)計時,就需要多關(guān)聯(lián)一張表。采用樹表結(jié)構(gòu)設計后,如果新增了一個版本的數(shù)據(jù),只需要在主表內(nèi)進行相應的數(shù)據(jù)更新即可,其新版本可以作為一個新的參數(shù)表,與主表進行關(guān)聯(lián),其原有的統(tǒng)計方式不變。數(shù)據(jù)擴展方便,可以根據(jù)需求隨時進行擴展,腳本改動小,開發(fā)迅速。
(3)維護方便
當某個參數(shù)版本不需要時,可以對該版本的參數(shù)表進行整體刪除,而不影響統(tǒng)計結(jié)果,極大地降低了維護成本。
本部分以LTE網(wǎng)絡為例,對各主題域所包含的內(nèi)容和關(guān)系進行描述,整理各主題內(nèi)資源的邏輯關(guān)系
通用參數(shù)表主要將LTE網(wǎng)絡內(nèi)的通用參數(shù)進行存儲,并添加相應的網(wǎng)元類型和父節(jié)點信息,便于進行數(shù)據(jù)統(tǒng)計。如表1 所示,通用參數(shù)表。

表1 通用參數(shù)表
包含了RRU、BBU、板卡、天線、邏輯基站、邏輯小區(qū)等網(wǎng)絡參數(shù)信息,與通用參數(shù)表進行關(guān)聯(lián),用于查詢某個網(wǎng)元的具體網(wǎng)絡參數(shù)。參數(shù)信息表如表2 所示。

表2 參數(shù)信息表
通信網(wǎng)絡數(shù)據(jù)架構(gòu)多以樹狀結(jié)構(gòu)為主要的拓撲形式,傳統(tǒng)的數(shù)據(jù)存儲方式雖然可以滿足數(shù)據(jù)存儲的需要,但在數(shù)據(jù)查詢效率和擴展性方面存在較大的不足。當出現(xiàn)數(shù)據(jù)版本升級時,會導致較大的代碼改動,數(shù)據(jù)維護升級維護成本較大,在數(shù)據(jù)統(tǒng)計方面需要關(guān)聯(lián)大量的表格才能出結(jié)果。
采用主表與實體參數(shù)表相結(jié)合的模型進行數(shù)據(jù)設計,可以極大的減少數(shù)據(jù)和代碼的維護成本,而且極易實現(xiàn)數(shù)據(jù)的橫向擴展,對后續(xù)的網(wǎng)絡升級極為有利。
其不足之處在于:
(1)通用表的數(shù)據(jù)量可能相對較大。在實際的模型設計中,需要根據(jù)網(wǎng)絡的規(guī)模進行通用表的拆分。不需要將所有的數(shù)據(jù)存在一張通用表內(nèi),可以適度拆分,減少通用表的數(shù)據(jù)存儲量。
(2)對于樹狀分支較深的表,采用遞歸查詢,效率會有所降低。遞歸查詢在多層的深度分支表內(nèi),其查詢效率會有所下降,且對資源的占用率比較大。因此,在遇到多層分支表的情況下,可以提前將樹狀關(guān)聯(lián)關(guān)系計算出來,再進行數(shù)據(jù)統(tǒng)計。
在實際的網(wǎng)絡數(shù)據(jù)庫設計中,應結(jié)合當?shù)鼐W(wǎng)絡規(guī)模和數(shù)據(jù)組織結(jié)構(gòu)以及實際的業(yè)務場景,選擇合適數(shù)據(jù)庫模型進行設計,以提升整體的系統(tǒng)資源利用率和網(wǎng)絡響應速度。