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