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