李 鵬 ,于洪濤 ,徐靜波
(1.國家數(shù)字交換工程技術研究中心 鄭州 450002;2.珠海高凌信息科技有限公司 珠海 519060;3.解放軍信息工程大學信息工程學院 鄭州 450052)
隨著我國電信行業(yè)的迅速發(fā)展,各種通信網(如固定、移動電話網)的規(guī)模在不斷擴大,作為通信支撐網的七號信令網,其地位也越來越重要。早期對七號信令網進行維護的方法是使用交換機本身的功能以及借助監(jiān)測儀表完成,維護手段和維護能力有很大的局限性。目前,一般采用獨立的系統(tǒng)對七號信令網進行集中監(jiān)測和管理,這種七號信令監(jiān)測系統(tǒng)獨立于電信網絡設備,通過高阻跨接方式或由交換機內部分切導出的電接口終端連接方式[1],在七號信令鏈路上直接采集七號信令的鏈路數(shù)據(jù),對各種用戶部分或應用部分信令進行實時或歷史微觀分析,從而判斷七號信令網的運行狀態(tài)、運行性能以及七號信令網支撐的電信業(yè)務的運行質量、跟蹤呼叫信令的過程等,以便及時發(fā)現(xiàn)故障隱患、查找故障點。
目前,業(yè)內的七號信令監(jiān)測系統(tǒng)一般由前端采集設備、監(jiān)測中心服務器、監(jiān)測終端組成,形成了包括本地級、地區(qū)級、總部級的三級分布式七號信令監(jiān)測體系結構,具體如圖1所示。
其中,每級監(jiān)測中心均可并行提供信令監(jiān)測和分析維護功能,這就包括對下級中心進行信息同步、數(shù)據(jù)匯總,以便根據(jù)需求進行后繼的數(shù)據(jù)挖掘和信令分析工作。同時,還需要對下級中心采集信令消息進行冗余備份,以便故障恢復。因此,系統(tǒng)內部需要實現(xiàn)上下級信令監(jiān)測中心間的數(shù)據(jù)同步以便實現(xiàn)上述功能,本文對此同步方法展開研究。
(1)遠程鏡像
遠程鏡像又叫遠程復制,是保持遠程數(shù)據(jù)同步和實現(xiàn)災難恢復的基礎[2]。它利用物理位置分離的存儲設備所具備的遠程數(shù)據(jù)連接功能,在遠程維護一套數(shù)據(jù)鏡像,為地理上分散的站點提供聯(lián)機實時數(shù)據(jù)復制。遠程鏡像采用第三方基于文件的遷移與Oracle基于日志的恢復機制以實現(xiàn)數(shù)據(jù)同步,但需要特殊的軟硬件支持,如采用光纖連接主備數(shù)據(jù)庫系統(tǒng),需要EMC軟件等,造價昂貴,成本很高。
(2)數(shù)據(jù)衛(wèi)士(data guard)
為了實現(xiàn)數(shù)據(jù)的同步可以考慮使用Oracle 9i Data Guard。它通過將主數(shù)據(jù)庫的重做日志傳到并應用到在線備用數(shù)據(jù)庫,使備用數(shù)據(jù)庫與主數(shù)據(jù)庫保持同步[3]。應用中分為同步和異步兩種方式。其主備用切換時需重啟數(shù)據(jù)庫,后期維護工作量巨大。
(3)數(shù)據(jù)庫的觸發(fā)器
觸發(fā)器是現(xiàn)在大型關系型數(shù)據(jù)庫都具備的功能,可以使用數(shù)據(jù)庫觸發(fā)器實現(xiàn)基于表的數(shù)據(jù)同步。當對表執(zhí)行特定操作時,就會引發(fā)數(shù)據(jù)庫觸發(fā)器。以Oracle為例,在創(chuàng)建觸發(fā)器之前,須為該觸發(fā)器創(chuàng)建一個數(shù)據(jù)庫鏈接指向遠程數(shù)據(jù)庫。這種方法雖然能夠實現(xiàn)數(shù)據(jù)同步,當對端數(shù)據(jù)庫故障時,通過數(shù)據(jù)庫鏈接的更新操作會有較長的響應時間,且頻繁操作表上的觸發(fā)器也會降低數(shù)據(jù)庫性能。
(4)數(shù)據(jù)庫的高級復制
主流的大型關系型數(shù)據(jù)庫都具備高級復制功能,比如Oracle、SQL Server、Sysbase等。數(shù)據(jù)庫高級復制主要是在分布式數(shù)據(jù)庫環(huán)境中維護表副本的過程,在一個復制環(huán)境中任何對復制對象的更新都會反映到其他站點對應的對象中,實現(xiàn)數(shù)據(jù)同步。復制關系可靈活配置,復制對象支持表、索引和視圖等類型。
針對本系統(tǒng)來講,遠程鏡像造價過于昂貴;Data Guard主/備數(shù)據(jù)庫在切換時需要重啟數(shù)據(jù)庫,且同步過程復雜,性能欠佳;數(shù)據(jù)庫觸發(fā)器性能差,可維護性不好;高級復制因其低成本、配置方式靈活、無縫切換等優(yōu)點被選擇應用于此系統(tǒng)。
在七號信令監(jiān)測系統(tǒng)中,各級監(jiān)測中心對數(shù)據(jù)同步和實時性要求不高,且各級中心對收集信令原始數(shù)據(jù)無修改要求,可利用Oracle高級復制的多級物化視圖實現(xiàn),在一些文章中有相關研究,基本的方法如下。
· 每個監(jiān)測中心數(shù)據(jù)庫均有一個信令數(shù)據(jù)表,用來統(tǒng)一存儲所有信令消息。
· 采用可更新實體化視圖機制。一級監(jiān)測中心數(shù)據(jù)庫設置為主數(shù)據(jù)庫,二級監(jiān)測中心數(shù)據(jù)庫和三級監(jiān)測中心數(shù)據(jù)庫是從數(shù)據(jù)庫,所以整個分布式數(shù)據(jù)庫系統(tǒng)是“一主多從”的結構。一級監(jiān)測中心信令數(shù)據(jù)表A1作為實體表,二級監(jiān)測中心信令建立以A1為實體表的可寫物化視圖A2,三級監(jiān)測中心創(chuàng)建以A2為實體表的可寫物化視圖A3,所有二級管理中心數(shù)據(jù)庫站點都是基于一級中心數(shù)據(jù)庫主站點的物化視圖站點,并且每個三級中心數(shù)據(jù)庫是作為它管轄的二級中心數(shù)據(jù)庫的目標站點[4]。這種方法中,每個監(jiān)測中心采集的信令數(shù)據(jù)統(tǒng)一存儲到一個數(shù)據(jù)庫表中,這樣既便于監(jiān)測終端進行數(shù)據(jù)分析,數(shù)據(jù)庫復制關系建立步驟也較為簡單,但在實際應用中也存在以下問題。
· 信令數(shù)據(jù)單獨存儲到一個數(shù)據(jù)庫表,此表在運行階段會迅速膨脹,不利于后臺進行數(shù)據(jù)分析。下面,就信令數(shù)據(jù)表容量做一個估算。假設一個中等規(guī)模的三級監(jiān)測中心下管理2個信令點,每個信令點有100條電路,一個中繼電路平均每小時有 28個呼叫,一個TUP/ISUP呼叫平均有 9條消息(IAM、SAM×4、ACM、ANC、CLI、RLG),每天此信令點呼叫記錄數(shù)約為 28×9×100×24=64.08 萬條,此三級信令中心每天的數(shù)據(jù)量為64.08×2=128.16萬條,此中心十天累計數(shù)據(jù)量約為1 280萬條,對一個千萬級數(shù)據(jù)表查詢統(tǒng)計操作的響應時間較長,很難讓用戶滿意。
· 在可更新物化視圖中,對實體表的更新操作可在目標站點物化視圖中實現(xiàn)按主鍵的快速刷新。但對目標站點物化視圖的更新則需通過延遲事務,層層推回上級中心數(shù)據(jù)庫,再逐級向下進行刷新,耗時較長,特別是針對大數(shù)據(jù)表的刷新,速度更難以接受,無法體現(xiàn)物化視圖快速刷新的特性。在目前的應用中,恰恰是從數(shù)據(jù)庫的二、三級站點對應物化視圖需要進行頻繁的更新。
針對系統(tǒng)的需求以及常用高級復制方法存在的不足可作如下改進。
(1)信令數(shù)據(jù)分表存儲
信令數(shù)據(jù)表按日存放,將信令消息分開存儲到多個表中,以避免單一表的過度膨脹。
信令數(shù)據(jù)表分兩類:本地采集數(shù)據(jù)表和下級采集數(shù)據(jù)表,統(tǒng)一命名為SIGNALYYYYMMDD_LNN。其中,YYYYMMDD表示8位的年月日,LNN表示3位的監(jiān)測中心編號,三級中心數(shù)據(jù)庫無下級采集數(shù)據(jù)表,一級、二級中心數(shù)據(jù)庫的兩類數(shù)據(jù)表都存在,各個監(jiān)測中心可預先配置各中心編號間上下級的隸屬關系。
N級中心N+1級中心數(shù)據(jù)庫收集數(shù)據(jù)(1≤N<3),收集的數(shù)據(jù)包含上述兩類信令數(shù)據(jù)表信息,定義下級收集數(shù)據(jù)配置表(命名為SUBCDCFG),并存儲相關信息,表的結構見表1。
(2)調整信令數(shù)據(jù)表結構
增加監(jiān)測中心編號(NCID)和采集點標識(NMPC)字段,與原表主鍵字段一起,作為新的聯(lián)合主鍵。監(jiān)測中心編號(NCID)用以區(qū)分不同的監(jiān)測中心,命名為LNN,3位數(shù)字統(tǒng)一編碼,L表示本監(jiān)控中心等級,取值1~3,NN表示此中心在本級編號,取值00~99,如301表示一個編號為01的三級監(jiān)控中心。采集點標識(NMPC)記錄本信令消息采集自哪個接入點,存儲此信令點點碼。這樣三級信令數(shù)據(jù)表可保持一致結構,以便上級中心作后繼數(shù)據(jù)處理。
(3)更改各級數(shù)據(jù)庫站點實體表——物化視圖對應關系
為了提高物化視圖刷新效率,將下級站點更新頻繁的表作為上級站點的實體表,所有二級管理中心數(shù)據(jù)庫站點都是基于三級中心數(shù)據(jù)庫主站點的物化視圖站點,并且每個一級中心數(shù)據(jù)庫是作為它管轄的二級中心數(shù)據(jù)庫的目標站點,這樣就形成了與原來相反的復制體系結構。
每個中心可根據(jù)業(yè)務需求,以中心為單位靈活地對信令數(shù)據(jù)采集/上傳進行配置。最終形成的多級物化視圖層次結構如圖2所示。
在二、三級中心可為實體表建立物化視圖日志表,以實現(xiàn)快速刷新。
(4)物化視圖動態(tài)生成
信令消息具有實效性,采集設備生成信令消息的時間戳總是本日的,對應的信令數(shù)據(jù)表是按日存放,所以當前操作的只是本日對應的信令數(shù)據(jù)表,歷史表是不會再被更新的。每日可在系統(tǒng)閑時定時生成新物化視圖并移除過期物化視圖,整理刷新組。
表1 數(shù)據(jù)配置表的結構
建立高級復制環(huán)境有兩種方式:一種是采用 Oracle企業(yè)管理器中的復制管理工具來管理復制環(huán)境;另一種是采用后臺腳本的方式來實現(xiàn),相關配置見Oracle手冊[5]。另外,需在物化視圖站點創(chuàng)建一刷新組,定時物化視圖的控制刷新,周期可設定為30 min。
物化視圖的動態(tài)創(chuàng)建由數(shù)據(jù)庫JOB實現(xiàn),可按照如下策略維護各站點的物化視圖。
· 定時生成3日內兩類信令數(shù)據(jù)表(帶主鍵),針對這些表生成對應視圖日志,以便實現(xiàn)快速刷新;
·定時生成3日內物化視圖并加入刷新組,以ON
PREBUILT TABLE/REFRESH FORCE模式創(chuàng)建,ON PREBUILT TABLE參數(shù)表示以現(xiàn)有表創(chuàng)建,以便即使物化視圖被刪除,對應實體表依然存在,REFRESH FORCE參數(shù)可實現(xiàn)快速刷新,默認為只讀;
·將3日前物化視圖移出刷新組;
·定時刪除3日前物化視圖以及物化視圖日志表。
本文就方案改進后的系統(tǒng)效率做了測試,測試環(huán)境如下。
(1)硬件
采用惠普 ProLiant DL580,CPU:Intel Xeon處理器2.80 GHz×4個,內存:4 GB雙路交叉 PC2100 DDR SDRAM內存,外存:熱插拔SCSI硬盤容量72 GB×2,以太網卡:2個Compaq NC7781 PCI-X吉比特位網卡。
(2)軟件
采用 Windows Server 2003和 Oracle 9i。
(3)測試預置條件
按照前面對數(shù)據(jù)量的估算,每天每個三級中心的信令數(shù)據(jù)表容量約為128萬條記錄,以10天作為一個測試單元,假設按照改進方案,系統(tǒng)存儲數(shù)據(jù)到1個數(shù)據(jù)表SINGNAL2009中,改進后系統(tǒng)分開存儲到10個表中(SIGNAL20090101~SIGNAL20090110),其中,SINGNAL2009約有記錄1 280萬,每個SIGNAL200901xx中約有記錄128萬,均在主鍵上建索引。
(4)測試項目
· 查詢統(tǒng)計性能(如圖3所示):計算某一信令點1日內數(shù)據(jù)總和 ;計算某一信令點3日內數(shù)據(jù)總和;計算某一信令點10日內數(shù)據(jù)總和。
· 物化視圖刷新時間(如圖4所示):增加1 000條記錄刷新耗時;增加1萬條記錄刷新耗時;增加10萬條記錄刷新耗時。
通過測試可以得出如下結論。
· 對于查詢統(tǒng)計操作來說,針對涉及全表遍歷的求和操作,執(zhí)行速度有明顯提高,特別是較短日期范圍內的操作,提高更為顯著。
· 對于物化視圖刷新方面。由于改進前物化視圖的主體表均在上級數(shù)據(jù)庫,每次更新操作需通過延遲事務推入上級數(shù)據(jù)庫站點,耗時較久,無法實現(xiàn)快速更新,并占用大量資源,其刷新周期一般較長。改進后,主體站點數(shù)據(jù)表按日期分表存儲,物化視圖站點也對應創(chuàng)建多個物化視圖與之一一對應,此時,對應物化視圖為簡單物化視圖,可實現(xiàn)按主鍵的快速刷新,刷新時間大大縮短,進而可定義一個較短的刷新周期,如30 min,從而大大提高了上級站點數(shù)據(jù)同步的實時性和效率。
本文使用Oracle高級復制的物化視圖來解決分布式七號信令監(jiān)測系統(tǒng)的數(shù)據(jù)同步問題,針對系統(tǒng)采集數(shù)據(jù)的時效性特點,采用信令數(shù)據(jù)分表存儲,物化視圖動態(tài)管理等手段,實現(xiàn)了上下級系統(tǒng)間數(shù)據(jù)的快速同步,大大提高了短期數(shù)據(jù)的查詢統(tǒng)計效率,有效保證了系統(tǒng)的正常運行和數(shù)據(jù)的完整性。但是,分表存儲和物化視圖的動態(tài)生成也在一定程度上提高了應用層訪問和數(shù)據(jù)配置的復雜度,在工程應用中需要得到進一步的改進。
1 田婷婷.七號信令監(jiān)測系統(tǒng)的實現(xiàn)與應用.廣東通信技術,2008,28(7)
2 遠程鏡像技術.http://www.aimite.com/doc009.htm
3 龔艷,張世錢.用Oracle 9i dataguard構建系統(tǒng)容災.計算機應用與軟件,2006,23(10)
4 刑朝華,季新生.Oracle高級復制技術在七號信令網管系統(tǒng)中的應用.計算機工程,2007,33(1)
5 Oracle Technology Network,Oracle Documentation.http://technet.oracle.com
6 易成就等.Oracle數(shù)據(jù)庫內存優(yōu)化的討論與配置.微計算機信息,2008(1-3):168~170
7 蓋國強.深入解析Oracle.北京:人民郵電出版社,2009
8 葉建位,蘇宏業(yè).實時數(shù)據(jù)庫系統(tǒng)關鍵技術及實現(xiàn).計算機應用研究,2005(3):45~47