黎展鵬
摘 要 對廣電各監測系統的現狀及系統間數據同步方式進行了闡述,隨著廣播電視監測事業的不斷發展,原有數據同步方式在廣電監測系統中同步效率低、靈活性差、不易擴展等弊端逐漸顯露,成為系統間數據共享的瓶頸。為了滿足廣播電視監測資源共享系統的要求,對數據同步系統架構進行了重新設計,由原來的通過JAVA/C++等程序來實現數據的同步改變為直接在數據庫層面進行編程完成數據的同步,并支持數據庫間單向、雙向、一對多的數據同步。文章對數據庫的觸發器、存儲過程、JOB、Dblink等在數據同步中應用進行了研究,實現了靈活的數據同步功能,在廣電監測系統中也得到了很好的實踐。
關鍵詞 數據同步;分布式;數據庫
中圖分類號 TP3 文獻標識碼 A 文章編號 1674-6708(2018)213-0073-04
1 相關概念
1)廣播電視監測系統,是指國家廣電總局構造的全國性的監測平臺,由1個中心節點、10個區域節點(總局直屬監測臺)、29個省級節點以及350套地級監測數據采集前端組成。通過該系統,可實現對全國337個地級以上城市播出的中央和地方電視和廣播節目進行24小時實時監測;對播出狀況(重大停、劣播事故)、播出質量、播出內容、頻譜狀況等進行監測。
2)廣播電視監測資源共享系統是在現有的5個監測系統(有線電視監測系統、廣播電視監測系統、開路電視和調頻廣播監測系統、衛星電視監測系統和海外監測系統)和原有的信息平臺系統之上,進行數據整合,實現廣播電視監測信息的上報、分析處理和發布,進一步加強監測數據的綜合分析處理能力,實現實時分析和統計,提供更多有價值的數據統計分析結果,并實現多種方式的展示,增強監測信息的獲取和即時通訊等能力,構建數據應用、分析、展示平臺。
3)分布式數據庫同步,利用Oracle數據庫特性實現多臺分布在網絡中的ORACLE數據庫服務器之間部份數據一致性,而采用的技術手段。
2 廣電各監測系統現狀
隨著廣播電視監測事業的不斷發展,監測工作越來越得到總局領導和有關部門的重視,為了把廣播電視節目優質地傳送給廣大聽眾和觀眾,促進廣播電視傳輸和播出質量的提高,強化廣播電視事業管理工作和政府職能,加強監管,到目前為止,已建設有線電視監測系統、廣播電視監測系統、開路電視和調頻廣播監測系統、衛星電視監測系統和海外監測系統等為總局各個部門服務。
在各系統的運行過程中發現系統本身所獲取到的監測數據不能完成滿足監測的需要,而其他部門建設的監測系統卻可以滿足這部份工作,為了更好地完成監測任務,提高工作效率避免重復建設,各系統開放部分數據給其他需要的部門,實現了監測數據的按需獲取。
3 原有廣播電視監測各業務系統間的數據同步方式
為了提高監測工作的效率、監測結果的準確性和監測數據的共享,設計了初期的數據同步方式,基本原理是針對需要同步的數據設計相應的數據同步程序,根據不同系統間的需要,采用定時或指定時間間隔的定向數據發送,當有多個系統需要同一份數據時,需要發送多次才能完成,而非真正的實時數據同步,基本實現方法如圖1。
4 廣播電視監測資源共享系統的建設背景和目標
國家廣電總局監測中心目前已經建立了5個獨立的監測子網,即有線電視監測網、廣播監測網、開路電視和調頻廣播監測網、衛星電視監測網和海外監測網。5個監測系統都已具有較為完善的監測功能,在日常監測業務中發揮了重要的作用,并且5個子系統分別和數據中心實現了網絡互通。
廣電總局資源共享系統是在現有的5個監測系統和原有的信息平臺系統之上,進行數據整合,實現廣播電視監測信息的上報、分析處理和發布,進一步加強監測數據的綜合分析處理能力,實現實時分析和統計,提供更多有價值的數據統計分析結果,并實現多種方式的展示,增強監測信息的獲取和即時通訊等能力,構建數據應用、分析、展示平臺。
5 數據同步系統設計
針對廣播電視監測資源共享系統的建設需要,需要對已經建立的五個獨立監測子網的監測數據提供給廣播電視監測資源共享系統,經調研分析,各系統產生的數據量大、實時性要求高,并且在對監測數據分析的同時,發現其中部分數據在某一時間段產生量比較大的特點,并且數據庫表結構不統一,這樣也為數據的同步產生了難度,綜合以上特點的同時保證數據實時的提供廣播電視監測資源共享系統和今后大數據分析和信息共享的原則,決定采用分布式數據庫同步方式來完成數據的同步。
5.1 分布式數據庫同步原理
建立數據同步中心數據庫,該數據同步中心定位為數據同步的中央處理單元,來自不同網絡的同步數據首先到達該中心,然后由該中心進行分發處理。
各監測網建立標準統一的基于數據庫觸發器(Trigger)的數據同步機制,將需要同步的監測數據根據條件觸發,將監測數據信息分發到基于數據表的同步監測數據隊列,最后通過存儲過程將同步監測數據隊列中的數據,利用數據庫的DBLink連接機制,連接到數據同步中心,數據同步中心再對接收到的監測數據根據觸發條件,分發到相應的監測網絡數據庫,至此數據的同步結束。分布式數據庫同步的原理如圖2。
5.2 數據同步的總體設計
數據同步在數據庫層面完成,利用數據庫Tigger、JOB、DBLink、Data Queue等特性為基礎完成數據的同步。
Tigger:觸發器(trigger)它是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行。觸發器經常用于加強數據的完整性約束和業務規則等。觸發器是一個能由系統自動執行對數據庫修改的語句。
JOB:oracle提供的一個定期執行某個存儲過程或者包體的功能。需在在job中設定執行的開始時間、間隔時間、執行對象。
DBLink:是定義一個數據庫到另一個數據庫的路徑的對象,database link允許你查詢遠程表及執行遠程程序。在任何分布式環境里,database都是必要的。
分布式數據同步示意圖如圖3。
5.2.1 分布式數據庫同步的實現步驟
1)創建同配置表;
2)根據同步配置表創建同步需要的表;
3)狀態監控;
4)創建同步總序列分發存儲過程;
5)停止所有同步job;
6)創建同步job;
7)重新創建所有job;
8)創建同步錯誤日志記錄存儲過程;
9)刷新同步表字段的存儲過程;
10)創建同步目的端的存儲過程;
11)同步所需表的說明。
5.2.2 啟動同步程序
1)執行存儲過程sync_table_columns_tab;
2)執行存儲過程NEWRESTART_SYNC_JOB;
3)創建同步job的 監測job,(NEWCHECK_ SYNC_JOB)監測時間可以根據實際情況修改。
5.2.3 同步異常情況的處理
在分布式的數據庫同步過程中,由于數據量大、數據來源不同,并有可能存在臟數據,在這樣的環境下首先要保證數據庫同步Tigger程序的健壯性,對于可能造成的異常也必須有相應的處理機制。那么利用ORACLE數據庫的JOB就可以很好的解決這樣的問題,通過對Tigger觸發結果的監控,發現同步錯誤,同步錯誤一般有以下幾種情況:
1)數據格式異常;
2)分布式數據庫連接異常,造成同步數據積累;
3)數據庫同步程序問題。
針對問題1需要人工干預解決問題,針對問題2、3可以通過重啟同步程序。
至此完成了數據庫同步程序,那么為了實現各數據庫分布式的數據庫數據互相同步,只需要將程序部署在不同數據庫中,并且配置對應的數據目的地址,啟動同步程序即可。
數據同步系統在廣播電視監測資源共享系統與其它業務系統間的應用
將數據庫同步的存儲過程觸發器等在需要使用同步的數據庫中運行,并且配置需要同步的數據庫表及字段、配置同步數據庫表的觸發規則、配置數據庫表的同步目的地址然后啟動同步程序即可實現同步,數據的同步速度與之前相比有了較大幅度的提高,真正的實現了監測數據的實時性,為廣播電視監測資源共享系統實時性要求提供了技術支撐,同時也為總局領導快速決策提供了幫助。
6 與原有數據同步方式的對比
表2是對原有的數據同步方式與分布式數據庫同步方式的比較。
7 總結與展望
本文對分布式數據庫同步技術在廣播電視監測資源共享系統與其他業務系統間的數據同步進行了比較深入的探討;介紹了原有數據同步中存在的一些問題;廣播電視監測資源共享系統對數據實時性的要求及各系統的情況分析;闡述了分布式數據庫同步技術的原理、實現方式、異常情況處理及在廣播電視監測資源共享系統中的應用;并且對原有的同步方式和分布式數據庫同步方式進行了對比。
雖然分布式數據庫同步方式解決了廣播電視監測資源共享系統的數據同步問題,但隨著業務需求的不斷變化,分布式數據庫同步方式也將面臨著更大的挑戰,分布式數據庫同步方式也將隨著業務的需要不斷的時進行自我完善和增強。
參考文獻
[1]張偉.發展中的廣播電視監測業務[J].中國廣播技術發展論壇,2003,30(5):40-44.
[2]林陽歐.多個業務系統間數據同步系統的設計與實現[D].上海:華東師范大學,2009.
[3]互聯網ORACLE中文產品技術白皮書[EB/OL].(www.oracle. com).
[4]宋俊蘇.分布式數據庫在高職院校辦公自動化管理系統中的應用[J].電腦知識與技術,2009,5(8):2044-2046.
[5]邵佩英.分布式數據庫系統及其應用[M].2版,北京:科學出版社,2005:10-11.
[6]Richard Staehli,Frank Eliassen,Sten Amundsen. Designing Adaptive Middleware for Reuse[A]Middleware 2004 Companion[C]Toronto: IFIP International Federation for Information Processing,2004:153-157.
[7]張良,佟俐鵑.異構數據庫集成中數據傳輸問題的研究[J].計算機應用研究,2004(11):65-66.
[8]馬錦忠.數據庫系統概論[M].南京:南京大學出版社,1995.
[9]林天峰.ORACLE 程序設計[M].北京:科學出版社,2003.
[10]李維宏,徐如志.中間件技術及其發展動態[J].微計算機應用,2002,23(3):138-141.