令曉明,郝玉勝
(1. 蘭州交通大學(xué)光電技術(shù)與智能控制教育部重點實驗室,蘭州 730070;2. 國家綠色鍍膜技術(shù)與裝備工程技術(shù)研究中心,蘭州 7 30070)
一種磁盤歷史數(shù)據(jù)庫模型研究
令曉明1,2,郝玉勝1
(1. 蘭州交通大學(xué)光電技術(shù)與智能控制教育部重點實驗室,蘭州 730070;2. 國家綠色鍍膜技術(shù)與裝備工程技術(shù)研究中心,蘭州 7 30070)
為解決流程工業(yè)中過程歷史數(shù)據(jù)的存儲以及大量數(shù)據(jù)的快速查詢問題,提出一種基于關(guān)系數(shù)據(jù)庫的磁盤歷史數(shù)據(jù)庫模型。在數(shù)據(jù)存儲方案設(shè)計中,將關(guān)于位號和數(shù)據(jù)采集接口的靜態(tài)信息存儲在關(guān)系數(shù)據(jù)庫中,歷史數(shù)據(jù)以文件形式存放,采用三重二級緩存機制避免頻繁訪問磁盤,并使用經(jīng)典的SDT算法對實時數(shù)據(jù)進(jìn)行壓縮存儲,降低存儲成本。數(shù)據(jù)查詢方案采用三級索引文件結(jié)構(gòu),即總索引文件、二級索引文件和位號索引文件,提高查詢效率。該磁盤歷史數(shù)據(jù)庫的第一版已經(jīng)成功實現(xiàn),應(yīng)用結(jié)果表明,數(shù)據(jù)存儲方案和查詢方案的設(shè)計是合理的,100個位號的查詢時間約為500 ms。
實時數(shù)據(jù)庫;內(nèi)存數(shù)據(jù)庫;過程歷史數(shù)據(jù);位號數(shù)據(jù);三重二級緩存機制;SDT算法
將采集到的實時數(shù)據(jù)保存到特有的數(shù)據(jù)庫中形成歷史數(shù)據(jù),為之后的再現(xiàn)生產(chǎn)過程、數(shù)據(jù)分析、應(yīng)用開發(fā)提供數(shù)據(jù)支持,是流程工業(yè)信息化的必然需求[1]。對企業(yè)而言,反映生產(chǎn)過程的歷史數(shù)據(jù)意義重大,對這些數(shù)據(jù)的分析,可以幫助改進(jìn)生產(chǎn)工藝、提高生產(chǎn)效率、分析生產(chǎn)故障。由于反映整個生產(chǎn)過程的實時數(shù)據(jù)在流程工業(yè)中一般都是秒級、毫秒級的,而且必須處理數(shù)以萬計的位號數(shù)據(jù)(位號是工業(yè)生產(chǎn)中每一個數(shù)據(jù)采集點在關(guān)系數(shù)據(jù)庫中的表示形式,采集點的數(shù)值在歷史數(shù)據(jù)庫中被稱為位號數(shù)據(jù))。因此,傳統(tǒng)關(guān)系數(shù)據(jù)庫顯然無法存儲這些實時數(shù)據(jù),即使存儲其查詢效率也會非常低。然而,盡管這些歷史數(shù)據(jù)量大,但較高的查詢效率仍是亟需解決的問題[2]。所以,相比關(guān)系數(shù)據(jù)庫,生產(chǎn)過程的歷史數(shù)據(jù)在組織方式上需要重新設(shè)計。
工業(yè)上常用的歷史數(shù)據(jù)庫有2種:(1)內(nèi)存數(shù)據(jù)庫[3]:采集的實時數(shù)據(jù)位于內(nèi)存中,數(shù)據(jù)只是有選擇性地被保存到磁盤,有利于先進(jìn)控制和實時優(yōu)化;(2)磁盤歷史數(shù)據(jù)庫:歷史數(shù)據(jù)主要以磁盤數(shù)據(jù)文件的形式存在,可以長時間地存儲大量數(shù)據(jù),為上層應(yīng)用系統(tǒng)提供歷史數(shù)據(jù)支持[4]。目前,國際上主流的實時數(shù)據(jù)庫產(chǎn)品有PI、IP21以及Industrial SQL Serve r等。PI系統(tǒng)性能優(yōu)越,數(shù)據(jù)壓縮比非常高,查詢速度也非???;IP21集成生產(chǎn)過程信息,為應(yīng)用程序提供基礎(chǔ)數(shù)據(jù)平臺,其分析工具強大,圖形化的界面也易于操作。Industrial SQL Server內(nèi)嵌MS SQL Server,它具有一些關(guān)系數(shù)據(jù)庫的特性并且繼承了Mail和Internet的優(yōu)勢。
過程歷史數(shù)據(jù)庫所涉及的信息主要有靜態(tài)信息、歷史數(shù)據(jù)信息。核心模塊包括數(shù)據(jù)采集、內(nèi)存數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)的壓縮存儲以及高效的數(shù)據(jù)查詢接口。本文在分析其他實時歷史數(shù)據(jù)庫優(yōu)缺點的基礎(chǔ)上,借鑒實時數(shù)據(jù)庫的典型設(shè)計思想,提出一個高效率、低成本的實時歷史數(shù)據(jù)庫設(shè)計方案。不論是存儲方案還是查詢接口,都體現(xiàn)了“為提高數(shù)據(jù)查詢效率而設(shè)計”的原則。
磁盤歷史數(shù)據(jù)庫采用組件方式設(shè)計,不同的組件負(fù)責(zé)實現(xiàn)的不同的功能,這些組件共同構(gòu)成數(shù)據(jù)庫服務(wù)器端[5]。整個系統(tǒng)架構(gòu)設(shè)計為客戶/服務(wù)器結(jié)構(gòu),分為歷史數(shù)據(jù)庫服務(wù)器端和歷史數(shù)據(jù)庫客戶端。歷史數(shù)據(jù)庫服務(wù)端主要負(fù)責(zé)數(shù)據(jù)采集接口的建立、內(nèi)存數(shù)據(jù)結(jié)構(gòu)的維護(hù)、數(shù)據(jù)的壓縮存儲以及響應(yīng)數(shù)據(jù)庫客戶端發(fā)來的查詢請求。如接口名稱、接口采集頻率、接口服務(wù)器IP等接口配置信息以及位號名稱、位號單位、位號上下限、位號回路、位號屬性等位號配置信息統(tǒng)統(tǒng)存儲在關(guān)系數(shù)據(jù)庫中;API服務(wù)組件主要用于向服務(wù)器管理工具和客戶端提供查詢數(shù)據(jù)的函數(shù),客戶端通過遠(yuǎn)程調(diào)用這些函數(shù)得到滿足條件的結(jié)果;另外,服務(wù)器端的數(shù)據(jù)庫管理進(jìn)程用于管理員維護(hù)數(shù)據(jù)庫。歷史數(shù)據(jù)庫客戶端負(fù)責(zé)向服務(wù)器端發(fā)送用戶的數(shù)據(jù)查詢請求,整個系統(tǒng)模型架構(gòu)見圖1。
圖1 歷史數(shù)據(jù)庫模型架構(gòu)
歷史數(shù)據(jù)庫模型架構(gòu)具體如下:
(1)數(shù)據(jù)庫服務(wù)進(jìn)程:數(shù)據(jù)庫服務(wù)進(jìn)程作為歷史數(shù)據(jù)庫的主引擎,主要負(fù)責(zé)接收來自數(shù)據(jù)采集接口的數(shù)據(jù)并將數(shù)據(jù)置于隊列中進(jìn)行緩沖;另外,它還負(fù)責(zé)將已經(jīng)存滿數(shù)據(jù)的二級緩存以數(shù)據(jù)塊的形式保存到磁盤文件中。
(2)數(shù)據(jù)采集接口:數(shù)據(jù)采集接口主要負(fù)責(zé)從傳感器獲取數(shù)據(jù),并將其發(fā)送到歷史數(shù)據(jù)庫服務(wù)引擎。數(shù)據(jù)采集接口在建立時需要的配置信息都是從關(guān)系數(shù)據(jù)庫中讀取的。每個數(shù)據(jù)采集接口可以同時采集幾百個位號的數(shù)據(jù),數(shù)據(jù)采集接口建立后應(yīng)立即讀取關(guān)系數(shù)據(jù)庫中所屬位號的所有靜態(tài)信息并保留一份備份。每次數(shù)據(jù)請求都會利用這些位號的配置信息。當(dāng)位號配置信息發(fā)生改變后,數(shù)據(jù)庫服務(wù)進(jìn)程會通知數(shù)據(jù)采集接口盡快更新所屬位號的配置信息。
(3)API接口服務(wù)進(jìn)程:API接口服務(wù)進(jìn)程主要維護(hù)服務(wù)器端的各種API函數(shù),這些API函數(shù)為歷史數(shù)據(jù)庫管理工具提供監(jiān)視和管理數(shù)據(jù)庫的接口,也為客戶端提供查詢位號數(shù)據(jù)的接口。
(4)歷史數(shù)據(jù)文件:歷史數(shù)據(jù)文件中存放的是經(jīng)過高度優(yōu)化的歷史數(shù)據(jù)文件。
(5)關(guān)系數(shù)據(jù)庫:關(guān)系數(shù)據(jù)庫在系統(tǒng)中用于存放所有采集點基本配置信息和所有位號的配置信息,也可以為上層應(yīng)用程序的開發(fā)提供關(guān)系數(shù)據(jù)庫支持[6]。
(6)數(shù)據(jù)庫管理進(jìn)程:數(shù)據(jù)庫管理進(jìn)程是用于監(jiān)視歷史數(shù)據(jù)庫運行的工具,通過數(shù)據(jù)庫管理進(jìn)程可以對數(shù)據(jù)庫的運行情況進(jìn)行全面的管理監(jiān)控。
在存儲方案設(shè)計上,常用的做法是將傳感器采集到的數(shù)據(jù)先放到內(nèi)存緩沖區(qū)中,待緩沖區(qū)滿后再將數(shù)據(jù)經(jīng)過壓縮后寫到磁盤中。對于數(shù)據(jù)壓縮,SDT算法是最為經(jīng)典的算法之一,國內(nèi)也有學(xué)者針對SDT算法作了一些細(xì)微的改進(jìn)[7]。本文模型中的數(shù)據(jù)壓縮算法采用經(jīng)典的SDT算法。
3.1 數(shù)據(jù)存儲流程
當(dāng)數(shù)據(jù)采集接口將從傳感器采集到的數(shù)據(jù)送達(dá)數(shù)據(jù)緩沖隊列后,數(shù)據(jù)存儲線程將這些數(shù)據(jù)寫入到二級緩存1中,二級緩存1被寫滿后,數(shù)據(jù)繼續(xù)被送往二級緩存2中,只有當(dāng)二級緩存2被寫滿后,才開始往二級緩存3中寫數(shù)據(jù)。與此同時,數(shù)據(jù)庫存儲線程會把二級緩存1和二級緩存2中的數(shù)據(jù)經(jīng)過壓縮處理后按照2個數(shù)據(jù)塊存入文件隊列的當(dāng)前文件組。如果當(dāng)前文件組已滿,則將文件隊列中的下一個文件組作為當(dāng)前文件組并寫入數(shù)據(jù),存儲流程見圖2。
圖2 歷史數(shù)據(jù)存儲流程
數(shù)據(jù)存儲方案中使用的是三重二級緩存機制。一級緩存其本質(zhì)是一個隊列,數(shù)據(jù)采集模塊和數(shù)據(jù)存儲模塊都可以訪問該隊列,實際上是一個將傳感器上的各個位號數(shù)據(jù)送達(dá)數(shù)據(jù)庫的通道。設(shè)置三重二級緩存的目的是為了增大緩存區(qū)域,當(dāng)二級緩存1被寫滿后,將數(shù)據(jù)寫到二級緩存2中,當(dāng)二級緩存2寫滿后,繼續(xù)往二級緩存3寫數(shù)據(jù)。與此同時,二級緩存1和二級緩存2中的數(shù)據(jù)在經(jīng)過壓縮處理之后作為2個歷史數(shù)據(jù)塊寫入到文件隊列的當(dāng)前文件組中。依次類推,當(dāng)前一個二級緩存被寫滿后開始往下一個二級緩存寫,當(dāng)下一個二級緩存寫滿后,繼續(xù)往第3個二級緩存寫,同時還要將前2個二級緩存的數(shù)據(jù)壓縮并寫入文件隊列的當(dāng)前文件組。在只有2個二級緩存的情況下,第1個二級緩存寫滿后往第2個二級緩存寫數(shù)據(jù)的同時把第1個二級緩存的數(shù)據(jù)寫入歷史文件組。引入第3個二級緩存后,等寫滿2個二級緩存再寫第3個二級緩存的同時才保存前2個二級緩存,訪問磁盤的次數(shù)減少了一半,效率提高了一倍。
任意時刻,只有一個二級緩存是當(dāng)前二級緩存。這樣,既避免了數(shù)據(jù)壓縮保存時無法緩存歷史數(shù)據(jù)的問題,又減少了磁盤的訪問頻次。而且,由于存在3個二級緩存,使得內(nèi)存中的歷史數(shù)據(jù)量增多。在具體應(yīng)用中剛要求數(shù)據(jù)接口采集的那些位號往往是最近要查詢的位號,而內(nèi)存的二級緩存中正好是一些剛被采集到的位號,這對于查詢效率的提高具有十分明顯的作用。
在二級緩存中,每一個位號都占有同樣大小的內(nèi)存區(qū)域,存儲線程將一級緩存隊列中取得的位號數(shù)據(jù),逐個寫入到當(dāng)前二級緩存相應(yīng)的位號對應(yīng)的內(nèi)存區(qū)域,也就是說位號在每一個二級緩存中的排序是相同的。
除二級緩存中暫存的數(shù)據(jù)外,其余的數(shù)據(jù)全部都存儲在磁盤文件中。磁盤文件按照隊列的形式組織起來,隊列里的基本單元是文件組。一個文件組由數(shù)據(jù)文件、數(shù)據(jù)塊信息文件和位號索引文件組成[8]。數(shù)據(jù)庫在運行過程中,文件隊列中至少有一個文件組是當(dāng)前歷史文件組。前2個二級緩存被寫滿之后將作為2個歷史數(shù)據(jù)塊并產(chǎn)生索引信息寫入到當(dāng)前文件組中。只有當(dāng)前文件組被寫滿(數(shù)據(jù)文件有大小限制,這樣做的目的是為了防止數(shù)據(jù)文件過大影響查詢效率)之后,才在隊列中尋找下一個文件組并將其作為當(dāng)前文件組。如果隊列中沒有可用的文件組,則按照一定的命名規(guī)則新建一個文件組。隊列的長度和文件組的大小都是可以配置的。
3.2 歷史數(shù)據(jù)庫文件系統(tǒng)設(shè)計
整個歷史數(shù)據(jù)庫有一個總的索引文件,該索引文件記錄著每一個文件組記錄數(shù)據(jù)的起始時間和結(jié)束時間[9]。
文件隊列中每一個文件組包括數(shù)據(jù)塊信息文件、位號索引文件和數(shù)據(jù)文件。當(dāng)前2個二級緩存滿后,其中所有位號的歷史數(shù)據(jù)依次被壓縮后形成數(shù)據(jù)文件的2個數(shù)據(jù)塊。同時,在數(shù)據(jù)塊信息文件和位號索引文件中寫入對應(yīng)的索引信息。其中,數(shù)據(jù)塊信息文件記錄著每一個數(shù)據(jù)塊記錄數(shù)據(jù)的起始時間、結(jié)束時間以及該數(shù)據(jù)塊相對于數(shù)據(jù)文件首部的偏移量;位號索引文件則記錄著每一個位號在數(shù)據(jù)塊中的起始位置和壓縮后的數(shù)據(jù)量。
圖3顯示了數(shù)據(jù)塊信息文件、位號索引文件和數(shù)據(jù)文件之間一一對應(yīng)的關(guān)系。圖中僅表達(dá)了數(shù)據(jù)文件的一個歷史數(shù)據(jù)塊。數(shù)據(jù)塊信息文件中的信息包括:數(shù)據(jù)壓縮存儲后數(shù)據(jù)塊在數(shù)據(jù)文件中的位置信息。位號索引文件中的信息是指在數(shù)據(jù)文件的數(shù)據(jù)塊中每個位號數(shù)據(jù)的位置以及壓縮后的數(shù)據(jù)量。
圖3 歷史數(shù)據(jù)文件系統(tǒng)結(jié)構(gòu)
為了節(jié)省存儲空間,數(shù)據(jù)文件中并不會保存絕對時間值,而是保存相對時間[10]。假設(shè)數(shù)據(jù)記錄時間為T,數(shù)據(jù)記錄所在的數(shù)據(jù)塊記錄的起始時間為TStart,則相對時間計算表達(dá)式為:
其中,TSample是對應(yīng)數(shù)據(jù)所屬位號的記錄周期。簡而言之,相對時間是數(shù)據(jù)記錄時間與其所在的數(shù)據(jù)塊記錄起始時間之間的記錄周期個數(shù)。一般在二級緩存中,將單個位號的采樣次數(shù)限制在255以下,這樣相對時間就可以用一個字節(jié)來表示,如果存儲絕對時間值,則一個字節(jié)是根本不夠用的。
3.3 歷史數(shù)據(jù)的壓縮算法
工業(yè)上對數(shù)據(jù)的壓縮技術(shù)主要有無損壓縮技術(shù)和有損壓縮技術(shù)2種[11]。對不同類型的數(shù)據(jù),使用不同的壓縮技術(shù)才能夠得到較好的壓縮效果。
(1)浮點型數(shù)據(jù)的壓縮。在本文模型第一版的實現(xiàn)中,針對浮點型數(shù)據(jù)采用美國OIS公司開發(fā)的有損壓縮算法SDT[12],其原理如下:
設(shè)ΔE為SDT算法的壓縮精度參數(shù),起點t0為上一個存儲的點,以距離t0為ΔE的上下兩點作為支點,建立兩扇虛擬的門,只有一個數(shù)據(jù)時門閉合;隨著數(shù)據(jù)點的增加,門會旋轉(zhuǎn)打開,門的寬度可延伸,門一旦打開就不能再閉合;只有兩扇門的內(nèi)角和小于180°(兩扇門未平行),旋轉(zhuǎn)操作就可以繼續(xù);當(dāng)兩扇門的內(nèi)角和大于180°,就停止操作,存儲前一數(shù)據(jù)點,并由該點開始新一段壓縮。在圖4中,經(jīng)過旋轉(zhuǎn)門壓縮后,壓縮段1由t0~t4的線代替了t0~t4的數(shù)據(jù)點;壓縮段2由t4~t7的線代替了t4~t7的數(shù)據(jù)點。
圖4 旋轉(zhuǎn)門算法原理
SDT算法是一種有損壓縮算法,但是適當(dāng)?shù)膲嚎s偏差能夠消除小信號擾動,起到過濾噪聲的作用,有利于進(jìn)行數(shù)據(jù)挖掘和分析。
(2)開關(guān)量數(shù)據(jù)壓縮。開關(guān)量在計算機中可以用1位表示。對于開關(guān)量,本文模型中采用了變化即保存的方式,這是一種無損壓縮方法。壓縮模塊在處理開關(guān)量數(shù)據(jù)時,都會與最后一次記錄的開關(guān)量數(shù)據(jù)做比較,如果變化則保存該點,否則就不保存該點。如一串連續(xù)的開關(guān)量值為11101001,其實經(jīng)過壓縮后只保存10101。
(3)字符串?dāng)?shù)據(jù)的壓縮。字符串是一種比較特殊的數(shù)據(jù)類型,單個數(shù)據(jù)的長度可能比較長。因此,有可能要使用二次壓縮。針對原始字符串?dāng)?shù)據(jù),首先通過有損壓縮算法篩選出需要保存的字符串歷史數(shù)據(jù),然后再根據(jù)具體情況做無損壓縮處理。對于字符串?dāng)?shù)據(jù)的壓縮,一般采用標(biāo)準(zhǔn)的LZW算法[13]。
3.4 SD T算法仿真
使用Matlab對SDT壓縮算法作仿真,實驗數(shù)據(jù)采用一條正弦曲線上的629個數(shù)據(jù)點。經(jīng)過SDT算法壓縮處理之后,需要存儲在歷史數(shù)據(jù)文件中的點只有41個,由于時間值采用相對時間的形式存放,一個位號在某一時刻的數(shù)據(jù)只占5 Byte(1 Byte存放相對時間,4 Byte存放數(shù)據(jù))。這樣629個位號在某一時刻的存儲空間只有41×5 Byte=205 Byte,仿真結(jié)果如圖5、圖6所示,其中,橫軸是離散的時間點,表示采集位號數(shù)據(jù)的某一時刻;縱軸表示在某一時刻位號的采集值。
圖5 S DT算法仿真結(jié)果(所有數(shù)據(jù)點)
圖6 S DT算法仿真結(jié)果(需要存儲的數(shù)據(jù)點)
4.1 設(shè)計方案
基于數(shù)據(jù)庫的應(yīng)用,其本質(zhì)是對數(shù)據(jù)的查詢。本文模型中的存儲方案在設(shè)計時充分考慮了數(shù)據(jù)查詢效率??偹饕募?、文件組中的數(shù)據(jù)塊信息文件和位號索引文件構(gòu)成了查詢的索引結(jié)構(gòu)[14],如圖7所示。
圖7 歷史數(shù)據(jù)查詢索引結(jié)構(gòu)
數(shù)據(jù)查詢的基本形式為:從Ts時刻起,到Te時刻結(jié)束,查詢步長為Tspan的位號集合S={S1, S2,…,Sn}在所有時刻的值。
具體的查詢流程為:
(1)查看三重二級緩存中的歷史數(shù)據(jù)是否符合查詢條件。如果所查詢數(shù)據(jù)全部位于某一個二級緩存當(dāng)中,則直接將數(shù)據(jù)返回;否則,轉(zhuǎn)到步驟(2)。
(2)進(jìn)入總索引文件,順序比較查詢時間,假設(shè)Ts所代表的時間比總索引文件中最早的時間Tbegin還要早,則將Ts設(shè)置為Tbegin,然后依次順序比較直到查出Te所在的信息單元。同時,記錄下查詢過程中涉及到的歷史文件組的名稱(為了便于查找,本文模型中歷史數(shù)據(jù)文件組名稱按照其在文件隊列中的序號命名)。若找不到查詢的時間范圍,則返回。
(3)根據(jù)步驟(2)所得二級索引信息,順序查詢數(shù)據(jù)塊信息文件中的各信息單元,記錄所有符合時間條件的歷史數(shù)據(jù)塊信息,即歷史數(shù)據(jù)塊的起始位置、起始時間以及對應(yīng)歷史數(shù)據(jù)塊在歷史數(shù)據(jù)文件中的序號。
(4)進(jìn)入位號索引文件信息單元,查詢位號歷史數(shù)據(jù)信息,即單個位號歷史數(shù)據(jù)在歷史數(shù)據(jù)塊中的位置和壓縮后的數(shù)據(jù)量。
(5)根據(jù)各個符合條件的歷史數(shù)據(jù)塊的起始位置,進(jìn)入歷史數(shù)據(jù)文件的各個歷史數(shù)據(jù)塊讀取符合時間條件的歷史數(shù)據(jù)和相對時間,然后再根據(jù)不同位號數(shù)據(jù)類型進(jìn)行插值。開關(guān)量位號某時刻的插值為上一個保存時刻的值;對于浮點型數(shù)據(jù),需要根據(jù)查詢時刻前后2個保存時刻的值進(jìn)行線性插值,并根據(jù)壓縮偏差進(jìn)行適當(dāng)?shù)奈⒄{(diào)。對于字符串?dāng)?shù)據(jù),要根據(jù)壓縮算法(一次壓縮或者二次壓縮)進(jìn)行解壓。
4.2 實驗結(jié)果及分析
使用客戶端程序TagMonitor分別請求100個、500個、1 000個、1 500個、2 000個和2 500個位號在某一時刻的實時數(shù)據(jù)值(在程序請求數(shù)據(jù)前和請求數(shù)據(jù)成功后都記錄時間,以這2個時刻的差值作為查詢時間),系統(tǒng)反饋查詢結(jié)果的時間如表1所示。
表1 系統(tǒng)反饋查詢結(jié)果的時間 ms
可以看出,隨著位號數(shù)量的增加,服務(wù)器返回位號數(shù)據(jù)的時間也在逐次增加,基本呈線性增長態(tài)勢,并沒有出現(xiàn)隨著位號數(shù)量的增加而突然出現(xiàn)查詢時間激增的問題,完全可以滿足一般小型應(yīng)用系統(tǒng)的要求。
本文設(shè)計的歷史數(shù)據(jù)庫模型,有效利用了傳統(tǒng)的開源關(guān)系數(shù)據(jù)庫。對于位號在30 000個以下的小型歷史數(shù)據(jù)庫系統(tǒng)提供了一種低成本的解決方案。存儲方案中引入的三重二級緩存機制不但減少了訪問磁盤的頻次,也使得查詢效率非常高。但由于采用了SDT算法,其壓縮比隨著數(shù)據(jù)量的變化波動較大,因此今后將對壓縮算法進(jìn)行改進(jìn),使數(shù)據(jù)壓縮比保持較高水平。
[1] 毛國君, 段立娟, 王 實, 等. 數(shù)據(jù)挖掘原理與算法[M].北京: 清華大學(xué)出版社, 2005.
[2] 高寧波, 金 宏, 王宏安. 歷史數(shù)據(jù)實時壓縮方法研究[J].計算機工程與應(yīng)用, 2004, 40(28): 167-170.
[3] 許貴平, 蔡博克. 支持實時內(nèi)存數(shù)據(jù)庫不間斷服務(wù)的恢復(fù)技術(shù)[J]. 計算機工程, 2008, 34(6): 70-71.
[4] 陸會明, 周 釗, 廖常斌. 基于實時數(shù)據(jù)庫系統(tǒng)的歷史數(shù)據(jù)處理[J]. 電力自動化設(shè)備, 2009, 29(3): 127-131.
[5] 劉云生. 實時數(shù)據(jù)庫系統(tǒng)[M]. 北京: 科學(xué)出版社, 2012.
[6] Sch wartz B. High Perfor mance M ySQL[M]. 寧海元, 譯.北京: 電子工業(yè)出版社, 2013.
[7] 趙利強, 于 濤, 王建林. 基于SQL數(shù)據(jù)庫的過程數(shù)據(jù)壓縮方法[J]. 計算機工程, 2008, 34(14): 58-59.
[8] 嵇月強, 王文海. 工業(yè)歷史數(shù)據(jù)庫的研究[J]. 工業(yè)控制計算機, 2007, 20(8): 43-44.
[9] 文水英. 實時數(shù)據(jù)庫中歷史數(shù)據(jù)壓縮算法的研究[D]. 長沙:中南大學(xué), 2008.
[10] Kao B, Garcia-Molina H. An Overview of Real-time Database Systems[M]. Stanford, USA: Stanford University, 1993.
[11] 曲奕霖. 流程工業(yè)歷史數(shù)據(jù)的壓縮策略與壓縮方法研究[D].杭州: 浙江大學(xué), 2010.
[12] 張景濤, 王 華, 王宏安. 實時數(shù)據(jù)的存取與壓縮[J]. 化工自動化及儀表, 2003, 30(3): 47-50.
[13] 徐 慧. 實時數(shù)據(jù)庫中數(shù)據(jù)壓縮算法的研究[D]. 杭州:浙江大學(xué), 2006.
[14] 納永良. 大型實時數(shù)據(jù)庫關(guān)鍵技術(shù)及應(yīng)用研究[D]. 北京:北京化工大學(xué), 2010.
編輯 陸燕菲
Research on a Disk History Database Model
LING Xiao-ming1,2, HAO Yu-sheng1
(1. Key Laboratory of Opto-Technology and Intelligent Control, Ministry of Education, Lanzhou Jiaotong University, Lanzhou 730070, China; 2. National Engineering Research Center of Green Coating Technology and Equipment, Lanzhou 730070, China)
In order to solve th e problem of stor ing process history data and fastly querying lar ge amounts, this paper proposes a disk history database model based on relational database. In the storage design, static information about the tags and data collect interfaces are stored in relational database. History data is stored in files, and a mechanism named triple secondary cache is used in RAM, thus the frequency of disk access is re duced. Meanwhile, the S DT algorithm is also used in data processing to reduce storage cost. In order to improve the efficiency of query, three-level index file structure which consists of a total index file, secondary index file and tag number index file is adopted in the data query scheme. The first version of the model is implemented. Applications result shows that the storage and query scheme is reasonable, and it returns the results of 100 tag numbers in about 500 ms.
real-time database; memory database; process history data; tag number data; triple secondary cache mechanism; SDT algorithm
10.3969/j.issn.1000-3428.2014.05.006
國家“863”計劃基金資助項目(2012AA04027)。
令曉明(1975-),男,副教授,主研方向:計算機控制技術(shù),實時操作系統(tǒng),數(shù)據(jù)庫技術(shù);郝玉勝,碩士研究生。
2013-09-24
2013-12-05E-mail:daryhao@126.com
1000-3428(2014)05-0026-05
A
TP392