張玉生,劉煒東,黨引弟,胡愛蘭
?。ㄈA北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
摘要:為了適應(yīng)國產(chǎn)化指揮顯示控制系統(tǒng)中對大批量過程數(shù)據(jù)的實(shí)時(shí)快速存儲管理的需求,結(jié)合實(shí)時(shí)系統(tǒng)技術(shù)和數(shù)據(jù)庫技術(shù),在自主研究設(shè)計(jì)的力數(shù)實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)上,研究設(shè)計(jì)了適合當(dāng)前背景的內(nèi)存數(shù)據(jù)的存儲結(jié)構(gòu)、磁盤歷史數(shù)據(jù)的存儲結(jié)構(gòu)及數(shù)據(jù)模型,它能夠更好地滿足當(dāng)前指揮顯示系統(tǒng)的實(shí)際需求。
關(guān)鍵詞:實(shí)時(shí)數(shù)據(jù)庫;存儲模型;數(shù)據(jù)結(jié)構(gòu);指揮顯示
0引言
數(shù)據(jù)存儲與管理作為指揮顯示控制系統(tǒng)中的核心部分,承擔(dān)著整個(gè)系統(tǒng)中各個(gè)環(huán)節(jié)產(chǎn)生的大批量數(shù)據(jù)的實(shí)時(shí)存儲任務(wù),為指揮顯示系統(tǒng)提供了穩(wěn)定的數(shù)據(jù)支撐。一方面,現(xiàn)有的關(guān)系型數(shù)據(jù)庫難以滿足日益增長的大規(guī)模數(shù)據(jù)的實(shí)時(shí)存儲需求;另一方面,由于工程的特定相關(guān)性,商用的實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)很難滿足特定工程數(shù)據(jù)和業(yè)務(wù)邏輯的特殊性要求。
現(xiàn)有實(shí)時(shí)數(shù)據(jù)庫只支持單點(diǎn)較少類型的測試數(shù)據(jù)存儲,完全不能滿足現(xiàn)在各種類型數(shù)據(jù)存儲的需求,所以研究一種能夠支持多種數(shù)據(jù)類型、支持大批量數(shù)據(jù)存儲的實(shí)時(shí)數(shù)據(jù)庫十分必要。
因此本文在力數(shù)實(shí)時(shí)數(shù)據(jù)庫的基礎(chǔ)上,結(jié)合實(shí)際需要和實(shí)時(shí)數(shù)據(jù)庫的特點(diǎn),對內(nèi)存數(shù)據(jù)庫存儲結(jié)構(gòu)與模型、磁盤數(shù)據(jù)存儲結(jié)構(gòu)進(jìn)行了重新設(shè)計(jì),使其既支持關(guān)系型數(shù)據(jù)庫的多種組合類型的測點(diǎn)數(shù)據(jù),同時(shí)也有實(shí)時(shí)數(shù)據(jù)庫的海量實(shí)時(shí)存儲性能。
1研究現(xiàn)狀
實(shí)時(shí)數(shù)據(jù)庫的研究設(shè)計(jì)始于20世紀(jì)80年代中期。實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)一般是商業(yè)企業(yè)信息化建設(shè)和工業(yè)控制智能化的基礎(chǔ),在商業(yè)化的實(shí)時(shí)數(shù)據(jù)庫產(chǎn)品開發(fā)上,國外有不少著名公司在原有自營業(yè)務(wù)的基礎(chǔ)上推出了相應(yīng)的實(shí)時(shí)數(shù)據(jù)庫產(chǎn)品[1]。
國內(nèi)的實(shí)時(shí)數(shù)據(jù)庫研究開始得晚一些。隨著國內(nèi)工業(yè)界對分布式控制系統(tǒng)(Distributed Control System,DCS)的廣泛引進(jìn)和應(yīng)用,教育科技界率先進(jìn)行研究實(shí)時(shí)數(shù)據(jù)庫理論的研究。目前對實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)(RealTime Database System,RTDBS)的研究主要來解決實(shí)時(shí)系統(tǒng)中的數(shù)據(jù)管理問題或?yàn)镽TDBS提供時(shí)間驅(qū)動(dòng)調(diào)度和資源分配算法,而且目前的實(shí)時(shí)數(shù)據(jù)庫基本上只適用于特定的應(yīng)用領(lǐng)域和開發(fā)環(huán)境。
2實(shí)時(shí)數(shù)據(jù)庫特點(diǎn)
實(shí)時(shí)數(shù)據(jù)庫是數(shù)據(jù)庫技術(shù)和實(shí)時(shí)數(shù)據(jù)處理技術(shù)相結(jié)合的產(chǎn)物,需要同時(shí)滿足數(shù)據(jù)一致性和實(shí)時(shí)性這兩個(gè)要求。實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)主要目標(biāo)是保證在規(guī)定的時(shí)間內(nèi)盡可能多地完成任務(wù),而不像傳統(tǒng)數(shù)據(jù)庫那樣盡量公平地為所有任務(wù)分配系統(tǒng)資源。內(nèi)存數(shù)據(jù)庫是實(shí)時(shí)數(shù)據(jù)庫的重要部分,它一般用來處理實(shí)時(shí)數(shù)據(jù),進(jìn)行事務(wù)調(diào)度和報(bào)警,并與安全控制部分和上層應(yīng)用及用戶進(jìn)行交互[2]。
磁盤歷史數(shù)據(jù)庫一般用來保存實(shí)時(shí)過程數(shù)據(jù)的歷史記錄,即過時(shí)的過程數(shù)據(jù)。其中文件的索引和數(shù)據(jù)組織結(jié)構(gòu)、內(nèi)存緩存策略及磁盤I/O模型等是制約歷史數(shù)據(jù)庫發(fā)展的瓶頸,這些對整個(gè)實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)的效率和性能都有著至關(guān)重要的影響[3]。
概括起來,實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)有以下幾個(gè)特點(diǎn)[4]。
?。?)時(shí)間約束:實(shí)時(shí)數(shù)據(jù)庫無論對數(shù)據(jù)有效性還是事務(wù)都有明確的時(shí)間限制。實(shí)時(shí)系統(tǒng)中,大量的過程數(shù)據(jù)體現(xiàn)著當(dāng)前外部環(huán)境的實(shí)時(shí)狀態(tài)。因此實(shí)時(shí)數(shù)據(jù)庫中的數(shù)據(jù)大多是短暫的,當(dāng)數(shù)據(jù)不再能反映外部的狀態(tài)時(shí),就成了無效數(shù)據(jù)。
?。?)事務(wù)調(diào)度:實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)的正確性需要同時(shí)依賴于事務(wù)的邏輯結(jié)果和產(chǎn)生該邏輯結(jié)果所需要的時(shí)間。需要綜合考慮事務(wù)的執(zhí)行所需時(shí)間、截止時(shí)間以及緊急程度等有關(guān)影響因素。
?。?)數(shù)據(jù)存儲:實(shí)時(shí)數(shù)據(jù)的存儲和管理,為系統(tǒng)內(nèi)外的相關(guān)功能提供準(zhǔn)確高效的實(shí)時(shí)數(shù)據(jù)服務(wù)。實(shí)時(shí)數(shù)據(jù)庫的過程數(shù)據(jù)處理模塊需要以服務(wù)進(jìn)程常駐內(nèi)存,以保證讀取的實(shí)時(shí)性。對于隨著時(shí)間推移轉(zhuǎn)變成無效的過程數(shù)據(jù),可存放在磁盤等永久性存儲介質(zhì)中,以便于后續(xù)的查看或者數(shù)據(jù)的統(tǒng)計(jì)分析等應(yīng)用。因此在研究設(shè)計(jì)實(shí)時(shí)數(shù)據(jù)庫時(shí)時(shí)候,需要平衡存儲空間和所需時(shí)間之間的矛盾,以確保系統(tǒng)的實(shí)時(shí)性要求。
?。?)數(shù)據(jù)壓縮:在真實(shí)應(yīng)用的數(shù)據(jù)存儲系統(tǒng)中,還要考慮如何高效處理海量數(shù)據(jù)。如果對原始數(shù)據(jù)進(jìn)行原樣存儲,將會有大量內(nèi)存、磁盤空間和CPU時(shí)間的耗費(fèi),因此需要對數(shù)據(jù)進(jìn)行高效壓縮,以提高實(shí)時(shí)數(shù)據(jù)庫的存儲性能。
?。?)具有開放性:一個(gè)完整的實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)是數(shù)據(jù)統(tǒng)一管理的平臺,可以在不同產(chǎn)品間傳送信息。例如,實(shí)時(shí)數(shù)據(jù)庫對不同廠商的不同產(chǎn)品有豐富的數(shù)據(jù)采集以及專用的實(shí)時(shí)服務(wù)的接口。
3內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
實(shí)時(shí)內(nèi)存數(shù)據(jù)庫的物理組織包括存儲結(jié)構(gòu)、索引結(jié)構(gòu)等[5]。內(nèi)存數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)主要包括ID索引結(jié)構(gòu)(用來把關(guān)系型的聯(lián)合主鍵映射成實(shí)時(shí)數(shù)據(jù)庫的唯一ID)、塊內(nèi)數(shù)據(jù)參考結(jié)構(gòu)(數(shù)據(jù)塊內(nèi)把一組測點(diǎn)的數(shù)據(jù)按固定順序可擴(kuò)展的靈活格式組織成一條類關(guān)系型的數(shù)據(jù)記錄)以及單個(gè)測點(diǎn)數(shù)據(jù)塊內(nèi)數(shù)據(jù)組織結(jié)構(gòu)。
3.1ID索引結(jié)構(gòu)
該背景項(xiàng)目中一般由任務(wù)號、設(shè)備號、目標(biāo)號及時(shí)間戳共同標(biāo)識一組測點(diǎn)數(shù)據(jù)值,并由數(shù)據(jù)類型type字段來標(biāo)識屬于何種數(shù)據(jù),所以由此4個(gè)字段可以映射索引成數(shù)據(jù)庫的唯一ID主鍵。其中ID占4 B,其他各字段各占1 B,如表1所示。
按表1 ID映射結(jié)構(gòu),采集來的各測點(diǎn)數(shù)據(jù)均可由以上幾個(gè)聯(lián)合字段映射生成唯一ID主鍵,用于后面各階段的處理和存儲。
3.2各類型數(shù)據(jù)塊內(nèi)數(shù)據(jù)參考結(jié)構(gòu)
各過程測點(diǎn)數(shù)據(jù)塊內(nèi)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)由不同種類型的數(shù)據(jù)組成,各種類型數(shù)據(jù)對應(yīng)的個(gè)數(shù)按照固定順序排列,分別為double型、int型、char型、float型、short型,在數(shù)據(jù)塊內(nèi)按此順序及個(gè)數(shù)進(jìn)行數(shù)據(jù)打包和解析。各種類型數(shù)據(jù)的個(gè)數(shù)均使用1 B的unsigned char型數(shù)據(jù)表示(1 B最多可以表示255個(gè),足以適用絕大多數(shù)的數(shù)據(jù)格式),各種類型所占用的長度及表示個(gè)數(shù)的字段長度如表2所示。
例如,表2各字段值分別為1203,1453429819116,2,3,0,1,2即表示類型ID為1203的測點(diǎn)數(shù)據(jù),依次由2個(gè)double型字段、3個(gè)int型字段、0個(gè)char型字段、1個(gè)float型字段和2個(gè)short型字段組成。
3.3內(nèi)存數(shù)據(jù)庫塊內(nèi)數(shù)據(jù)組織結(jié)構(gòu)
單個(gè)測點(diǎn)數(shù)據(jù)的數(shù)據(jù)組織結(jié)構(gòu)由數(shù)據(jù)頭基本信息、測點(diǎn)數(shù)據(jù)值組成。其中數(shù)據(jù)頭包括ID(占用4 B,上文已說明)、時(shí)間戳(占用8 B,表示為long型,取值為自1970年1月1日0時(shí)起到該時(shí)間的毫秒數(shù),精確到毫秒)、測點(diǎn)值個(gè)數(shù)nums(占用1 B,即表2中的一共由多少個(gè)上述類型的數(shù)據(jù)值組成),測點(diǎn)數(shù)據(jù)值組由具體的共nums個(gè)對應(yīng)上述類型的數(shù)據(jù)值組成,結(jié)構(gòu)圖如圖1所示。
各測點(diǎn)塊內(nèi)數(shù)據(jù)按照圖1結(jié)構(gòu)組織數(shù)據(jù),按ID檢索塊內(nèi)數(shù)據(jù)參考結(jié)構(gòu),按其對應(yīng)格式及順序進(jìn)行組織、打包、存儲和解析。
4磁盤歷史數(shù)據(jù)存儲結(jié)構(gòu)
實(shí)時(shí)數(shù)據(jù)庫內(nèi)核服務(wù)系統(tǒng)對實(shí)時(shí)數(shù)據(jù)進(jìn)行打包緩存并同時(shí)寫入磁盤文件系統(tǒng),單個(gè)數(shù)據(jù)包大小為1 024×4=4 09圖2數(shù)據(jù)包內(nèi)部數(shù)據(jù)組織結(jié)構(gòu)6 B,一個(gè)包映射到文件系統(tǒng)和磁盤中的一個(gè)block數(shù)據(jù)塊,數(shù)據(jù)塊結(jié)構(gòu)如圖2所示。
其中包ID占用4 B,開始時(shí)間占用8 B(同上),截止時(shí)間為最后一測點(diǎn)數(shù)據(jù)的時(shí)間減去開始時(shí)間所得的差值,表示為4 B整型。此時(shí)打包數(shù)據(jù)包內(nèi)的各數(shù)據(jù)塊數(shù)據(jù)格式則和內(nèi)存數(shù)據(jù)庫中的單個(gè)測點(diǎn)數(shù)據(jù)塊格式略有不同,在其基礎(chǔ)上省略了ID,時(shí)間戳也同樣表示為與開始時(shí)間的時(shí)間差值,占用4 B。這樣相當(dāng)于對塊內(nèi)ID和時(shí)間戳進(jìn)行了壓縮,以減少空間。
5結(jié)論
本文在力數(shù)實(shí)時(shí)數(shù)據(jù)庫的基礎(chǔ)上,對現(xiàn)有內(nèi)存測點(diǎn)數(shù)據(jù)結(jié)構(gòu)和歷史數(shù)據(jù)歸檔打包結(jié)構(gòu)進(jìn)行了重新研究設(shè)計(jì),能夠靈活擴(kuò)展存儲各種數(shù)據(jù)類型的測點(diǎn)數(shù)據(jù),滿足當(dāng)前系統(tǒng)需求。在研究過程中,本文也還存在一些不足,比如內(nèi)存數(shù)據(jù)索引結(jié)構(gòu)的優(yōu)化、歷史數(shù)據(jù)塊的進(jìn)一步壓縮等,這些都是本課題后續(xù)將要繼續(xù)深入研究的問題。
參考文獻(xiàn)
?。?] 徐國風(fēng). 實(shí)時(shí)數(shù)據(jù)庫關(guān)鍵技術(shù)研究[D]. 西安:西安建筑科技大學(xué), 2006.
?。?] 王焱, 徐新國, 朱廷劭. 一種工控領(lǐng)域內(nèi)存數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)[J]. 微電子學(xué)與計(jì)算機(jī), 2012, 29(8):98101.
?。?] 曾強(qiáng). 實(shí)時(shí)歷史數(shù)據(jù)庫的設(shè)計(jì)與分析[D]. 成都:電子科技大學(xué), 2006.
?。?] 錢笑宇, 張彥武. 工業(yè)實(shí)時(shí)數(shù)據(jù)庫的研究和設(shè)計(jì)[J]. 計(jì)算機(jī)工程,2005, 31(1):9899.
[5] 梁巧玉. 實(shí)時(shí)內(nèi)存數(shù)據(jù)庫數(shù)據(jù)組織結(jié)構(gòu)優(yōu)化策略研究[D]. 太原:太原科技大學(xué),2010.(收稿日期:20160320)