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