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