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