大型實時系統的原始數據的記錄、收集、管理、分析和解釋一直是一項十分重要的內容。禁核試北京國家數據中心是我國禁核試核查相關監測數據的收集、存儲、分析和交換樞紐,是我國禁核試核查監測系統的數據處理中心。國家數據中心日常性工作是處理來自國內外地展、水聲、次聲和核素臺站的監測數據,其中地震、水聲、次聲數據為實時傳輸的時序數據。來自國際監測系統(IMS)和其他監測機構的臺站數據通過國家數據中心的連續數據傳輸子系統接收,最終以CSS 3. 0 ( Center for SeismicStudies)的數據格式進人運行系統。CSS是原型國際數據中心(PIDC)在進行GSETT試驗時創造的一種格式,由二進制的原始數據文件和數據庫表wfdisc相關記錄兩部分組成。在CTBT研究中常用的地震波形分析軟件Geotool、國際數據中心數據自動處理系統等就是使用CSS格式數據文件的,所有進入運行系統的原始數據都需進行歸檔存儲以便科研人員使用、檢索和拷貝,同時在運行文件系統和運行數據庫中只保留有限天數的數據記錄,以保證運行系統穩定高效地運行。本文所討論的數據歸檔機制每天自動存儲和歸檔國家數據中心所有要歸檔的數據,同時保證用戶能有效檢索已存儲到磁盤陣列上的數據,在確認數據正確歸檔后,自動清除運行文件系統中的數據文件和運行數據庫表wfdisc相關記錄。數據歸檔機制是基于Solaris系統,數據庫采用Oracle,主體程序用標準C語言和perl語言編制,通過監控數據庫表interval的state屬性來了解歸檔處理的狀態。
1 總體結構及軟件模塊功能
國家數據中心數據歸檔機制管理數據文件從操作文件系統到大型存儲文件介質的遷移,整個機制在確保數據的完整性的同時,需保證科研人員在以后的工作中能便利地進行數據檢索。原始數據從運行文件系統拷貝到歸檔文件系統中,同時讀出運行數據庫中相應的關系數據表,更新表中反映文件位置的屬性(目錄路徑、文件名和文件偏移量),將相關數據庫記錄寫入到歸檔數據庫系統中,且在對比數據無誤的情況,刪除運行文件系統中的數據文件,清除運行數據庫中的表wfdisc和wfaux中相應的記錄。我們當前定義把運行庫接收到的十天之前的數據轉移到歸檔庫和文件服務器,在運行系統中保留20天的原始數據。
系統中可以歸檔的數據類型在數據庫表arcl_data_type中定義,該機制可以被配置歸檔許多不同的數據類型,在系統中,可歸檔的數據類型為波形數據、IMS消息、放射性核素數據和閾值監控結果,目前,我們只歸檔了連續地震波形數據。
數據歸檔機制由PRIARC _ create, Archive, ManageInterval, GetData, MergeData,ReadWriteData,write_file, check_arch和del_archived程序實現其功能。其中PRIARQcre-ate,check_arch和del archived用pert語言編寫,其余的程序用標準C語言編寫。圖1為數據歸檔機制的數據流圖,反映了各個軟件模塊之間的關系,check_arch和del_archived為兩個獨立的程序,未在圖1中顯示。
圖1數據歸檔機制數據流圖
PRIARC-create為perl程序,主要功能是通過讀取數據庫表chan_groups表,為歸檔處理產生新的interval表的記錄,設置interval表中的,fate屬性為NEW。
Archive是整個歸檔機制的主程序,該程序進行初始化處理,讀取參數文件,獲得數據庫查詢。程序首先分析命令行參數,主要指獲得特定的歸檔數據類型參數。Archive程序調用函數ManageInterval通過執行數據庫查詢來排隊處理的時間間隔(interval), ManageInter-val更新interval表的state屬性,使其從狀態NEW更新到狀態QUEUED。代表查詢規則的數據庫查詢從參數文件中獲得。
GetData函數循環每個狀態為QUEUED的處理時間間隔,得到interval表中time和endtime屬性,聯合其他相關的數據庫表,查詢運行庫中的rvfdisc表,從而可獲得與待歸檔數據相關的數據庫記錄。如果GetData程序讀取運行數據庫失敗,則程序中斷,并且更新inter-vaL state屬性為FAILED。該階段的錯誤主要是由于參數文件中不正確的數據庫查詢所引起的,Archive程序調用函數GetData時,更新interval表的state屬性為RUNNING,
獲得待歸檔數據相關的數據庫記錄后,Archive喚醒軟件模塊MergeData,合并相鄰的數據庫記錄并產生與歸檔數據相關的新的數據庫記錄。對于波形數據,可通過設置數據庫表arch_data_type中的Merge_date屬性來完成相應合并處理。如果同一臺站同一通道的兩個wfdisc記錄是相鄰的,則按照一定的規則合并數據庫記錄。
ReadWriteData寫數據到歸檔文件系統中,并且增加與數據文件相關的數據庫記錄到歸檔數據庫中。在實現過程中,ReadWriteIhta按照讀出的運行數據庫的相關記錄,得到待歸檔數據的數據文件、文件偏移量和文件大小,拷貝數據文件到歸檔文件系統系統中,同時還將運行系統中許多小的數據文件合并成一個大的歸檔數據文件。在運行系統中,實時接收的臺站數據由于各種原因,數據有可能中斷,重新接收,故接人運行系統的數據為不規則長度的數據文件。在歸檔處理時,系統將波形文件歸檔成4個小時一個的數據文件,每個臺站一天產生6個波形文件,同一天接收的不同臺站的數據在同一路徑下。如果在傳輸數據文件或在數據庫寫入的過程中出錯,則Achive更新in-tern. state為FAILED,否則,更新為DONE。
checl_arch為perl編寫的程序,它主要是比較運行系統與歸檔系統,確認歸檔系統中的數據文件和數據庫記錄與運行系統一致,如果成功運行,更新intern. state為VERFIED,否則更新為NO VERFIED。
de_archived程序用pert語言編寫,通過查詢歸檔庫interval表,找出預設定del_days之前的已歸檔并確認的記錄,利用該記錄從wfdisc表中找出相應的記錄,通過wfdisc表的字段dir和dfile找出相應的波形文件和路徑,刪除文件和數據庫記錄。程序完成后,更新運行數據庫和歸檔數據庫interval表中的記錄,設置是state=' PURGED。
歸檔處理的每一步讀更新interval表的state屬性,用戶圖形界面WorkFlow讀取interval表的state屬性,并用不同的顏色表示不同的處理狀態,用戶可根據WorkFlow監控歸檔處理的狀態。在歸檔處過程中,任何函數的失敗,都將導致系統回滾到歸檔處理的原始狀態,保證了數據的完整性。
2 數據庫描述
數據庫在數據中心歸檔機制中處于核心地位。在處理過程中,除了讀待歸檔的數據文件相關的數據庫記錄,寫相應的數據庫記錄到歸檔數據庫外Archive還使用數據庫識別、排隊、跟蹤數據歸檔處理,同時還使用數據庫存儲一些配置信息。
圖2為歸檔機制所涉及到數據庫表的實體關系圖。如圖2所示,wfdisc表中記錄與數據文件相關的信息,sta和chan定義將要歸檔的數據。arch_data_type表中的datatype對應著interval表的class與name, interval關聯多個數據庫表,class和name用來識別和排隊歸檔對象,time和endtime給出了處理時間間隔的上下限,state用于跟蹤和排隊處理時間間隔。chan__groups在wfdisc表的sta和than與interval的name和class之間建立聯系。
圖2 歸檔機制所涉及到數據庫表的實體關系圖
3 調試與建立
國家數據中心數據歸檔機制的建立在Solaris環境下,數據庫采用Oracle8. 0,在目前的狀態下,如果數據庫為其他商業軟件,程序報錯并退出,如需應用到其他的數據庫管理系統,需修改源程序,但改動不會很大。在運行中,我們使用UNIX cron后臺守護程序按照時間表定期執行數據歸檔任務。Cron讀取配置文件crontab并根據其中的內容進行工作,當前定義每天運行數據歸檔任務。在日常監控中,啟動WorkFlow圖形界面監控處理結果。如圖3所示。
圖3 WorkFlow圖形界面
4 結束語
國家數據中心自建立數據歸檔機制以來,系統運行穩定。該機制歸檔子系統根據實際情況確定歸檔的時間間隔、存儲介質、歸檔策略及日志記錄,解決了原始波形數據的存儲和有效檢索歷史數據的問題,該機制可為建立與國家中心數據處理系統類似的大規模實時信息處理系統時,解決歷史數據存儲和檢索提供了有益的借鑒。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.lukmueng.com/
本文標題:一種數據歸檔機制的實現