http://blog.csdn.net/hzhsan/article/details/9384885
1.前言
一提到數據庫,大家肯定會想到SQL Server、Oracle等關系型數據庫。實際上,數據庫的種類非常多,在計算機發展的歷史上,存在着多種類型的數據庫。
早期,關系型數據庫與層次型數據庫、網絡型數據庫並駕齊驅,但關系型數據庫依靠其描述簡單、實現容易等特點,在競爭中取得了勝利,在上世紀90年代初期,從Foxpro、Access到Oracle、Informix、SyBase、SQL server,關系型數據庫一統天下。
但在特定的應用領域中,關系型數據庫並不能完美表現,於是,產生了新的數據庫類型:在協同辦公領域中使用的文檔型數據庫(如NOTES),在嵌入式應用領域中使用的嵌入式數據庫(如SQLite),在工業監控領域使用的實時數據庫(如PI),等等。
本文章將對實時數據庫進行簡單的介紹。
2.在工業監控領域中,數據庫應用的特點
工業監控系統的定義非常大,所有需要對運行設備進行自動化監視、控制的系統都可以定義為工業監控系統,這里面就包括火電廠廠級監控系統(SIS),在這類應用領域中,數據庫應用有如下特點:
- 測點數量多
一個新建300WM的火電廠的SIS系統,需要處理的測點數超過了10000點,這些測點的變化周期通常在1秒鍾之內,也就是說,需要將超過10000點的數據在1秒鍾之內保存到數據庫中。
- 存儲量大
實時數據庫的核心就是對大量的實時信息進行處理,由於成年累月的數據將占據大量的硬盤空間。例如對於 1萬點的系統,每 1秒鍾存儲一次,每次單點占用 8個字節,那么保存 10年的數據量將有 10000*8*10*365*86400=25228800000000字節,也就是 23TGB。若用 80GB的硬盤存放,需要存放 293塊硬盤!
- 時效性強
每個需要處理的測點的值都與時間相關,一秒鍾之后的數據與一秒鍾之前的數據可能就不一樣了,因此,在保存測點值的同時,必須通過某種方法將其對應的時間也紀錄起來。
3.不選擇關系型數據庫的理由
關系型數據庫,較難處理工業控制領域的數據。主要原因是:
- 插入速度慢
一般關系型數據庫是基於事務處理的,在處理失效后,還要回滾作業。所以至少要存放兩處,該機制使速度較慢;既使用今日的Intel P4 雙至強類CPU,在對2000 個測點進行插入時也用占用10s 以上的時間。而工業監控系統需要面對的是數萬點的實時數據以秒級的間隔存放數據。
- 維護困難
商用數據庫為了保證完整性,所有的內容往往放在一個文件內,這對海量數據的存放維護發生困難。如果有一個200G 的數據庫,完全備份就可能要一天。備份文件中有一個錯誤就可能導致200G 的備份文件失效,所以不實用。
- 不能滿足實時應用的需求
用數據庫存放實時數據據及查詢方式不能滿足實時應用的需要。一個簡單的例子是假定以1 秒為間隔存放好了數據,一周有數據604800 組,但是現要以60 秒為間隔取出其中10080 組或者以等間隔原則取出8888 組,標准SQL 語法就較難實現。
因此,工業監控領域以及電廠SIS應用領域,必須尋找適合實時應用需要的實時數據庫系統。
4.實時數據庫的壓縮算法介紹
實時數據庫系統的技術核心在於數據壓縮。需要將數據經壓縮后再存入硬盤,當需要用數據時再解壓縮硬盤上的數據。目前用於國內外實時數據庫上的壓縮算法通常分為兩類:無損壓縮和有損壓縮。
4.1 無損壓縮
大多數信息的表達都存在着一定的冗余度,通過采用一定的模型和編碼方法,可以降低這種冗余度。Huffman編碼是無損壓縮中非常著名的算法之一。 WinRar和WinZip等軟件都采用了類似Huffman編碼的壓縮方式。這些壓縮方法的共同特點是:壓縮和解壓過程中,信息不會發生變化。
在實時數據庫中,也可以采用這些無損壓縮技術,但是在實現時,必須要考慮壓縮和解壓縮的效率,如果某個壓縮算法的壓縮比非常高,但是其解壓的速度非常慢,則肯定不能用於實時數據庫中,否則,人們在查詢數據時,會等待得失去耐心。
4.2 有損壓縮
相對於無損壓縮,有縮壓縮肯定會丟失一些信息,但必須要保證這些丟失的信息不能影響系統數據的精度。大家在其它領域中也遇到過有損壓縮的應用,比如:JPG圖像壓縮就是一種有損壓縮,MP3聲音壓縮也是一種有損壓縮。
在實時數據庫中,有損壓縮主要有兩種方法:死區壓縮和趨勢壓縮。
- 死區壓縮
所謂死區就是定義某一測點的值不變的范圍。采用死區壓縮就是記錄該點死區之外的數據值。例如有一測點 A,定義其死區為 1%,上次記錄的測點值為 110.00,那么此次采集的測點值為 111.00,那么兩者差值(111-110)/110<1%,那么認為此次測點值在該點的死區范圍內,則認為不變化,即不記錄。若下一次測點值為 120.00,那么兩者差值(120-110)/110>1%,那么認為此次測點值在該點的死區范圍外,則認為變化,記錄。
- 趨勢壓縮
趨勢壓縮,是根據測點的階段性趨勢進行壓縮,原則上只記錄滿足趨勢條件的起點和終點。PI的旋轉門壓縮技術是該類算法的典范。
一般的趨勢壓縮如上圖所示,T1到 T2時刻某測點的值保持者該趨勢,那么在此趨勢上下的兩條容差線將是下一時刻點的死區范圍,若下一時刻 T3在此兩條兩條容差線之間,那么不記錄此值,兩條容差線將適用於下一時刻,若下一時刻 T4在此兩條兩條容差線之外,則記錄該值,趨勢發生改變,兩條容差線將發生改變,下一時刻測點將按改變后的容差線來判斷。
5.實時數據庫的訪問方式
- 使用實時數據庫提供的API
這種方式效率最高,也最簡單。
- 使用ODBC
大部分實時數據庫提供了標准的ODBC接口,也提供了SQL查詢語言,通過這些方法,用戶可以將實時數據庫當作一個標准的數據庫來使用。但這種方法速度較慢,且不能體現實時數據的全部優勢。
- 使用OPC方式(OLE for Process Control)
因為太多的數據庫和DCS使用自己的API方式存取數據,無法做到算法的通用,因為工業監控領域提出了一個標准的存取接口,這就是OPC,如今有超過兩百家產商加入到OPC組織中,聲勢浩大。
6.可供選擇的實時數據庫產品
目前進入國內市場比較成熟的實時數據庫產品如下所列:
美國OSIsoft公司,PI;
美國Wonderware公司,IndustrialSQL Server,簡稱INSQL;
美國 GE,Intellution公司,iHistorian;
美國 InStep公司,eDNA;
美國HONEYWELL公司,Process History Database,簡稱PHD ;
美國AspenTech公司,InfoPlus;
總的來說,國外實時數據庫產品在工業監控行業占壟斷地位。其中OSIsoft公司的PI采用了旋轉門壓縮專利技術和獨到的二次過濾技術,使進入到PI數據庫的數據經過了最有效的壓縮,極大地節省了硬盤空間,是效率最高,使用最簡單,使用最廣泛的實時數據庫。因為其傑出的性能,PI已經多次提高了它的價格。
7.總結
實時數據庫在SIS系統中起着非常重要的作用,是SIS系統存貯數據的基礎。實時數據庫是一種特殊類型的數據庫系統,但它有許多與關系型數據庫存在差異。只有理解了這些相同之處和差異部分,才能對實時數據庫有更深地了解。
----------------------------------------------------------------------------------------------------------------------------
研究現狀與發展。
目前在國內比較流性的國外實時數據庫產品有Wonderware公司的Industrial SQL,OSIsoft公司的PI ,AspenTech公司的 IP21 (
InfoPlus 。21 )。以5000點數據庫和20客戶端應用為例,幾個數據庫價格分別是:
PI----10萬美元,每個接口6000美元,OPC接口收費;
InfoPlus.21----11萬美元,每個接口1萬美元,OPC接口不收費;
Industrial SQL Server----6.5萬美元,每個IDAS1200美元,OPC Link免費。
實時數據數據庫產品
PI將所有數據存於專有數據庫中,對於過程數據的存儲模式,每個點只有6個域可以由用戶定義。PI是純實時數據庫,如果要實現企業更高級的應用還要配備關系型數據庫。
PI采用了旋轉門壓縮專利技術和獨到的二次過濾技術,使進入到PI數據庫的數據經過了最有效的壓縮,極大地節省了硬盤空間。據計算,每秒1萬點數據存儲一年,僅需要4G的空間,即一只普通硬盤也可存貯五到十年的數據。是效率最高,使用最簡單,使用最廣泛的實時數據庫,因為其傑出的性能,PI已經多次提高了它的價格,而且PI在其文檔中公開了它的各種算法,比如上面提到的旋轉門壓縮和二次過濾。
OSI公司沒有提供PI服務器軟件和客戶端軟件漢化版本,但是據說在開發中,可以看見DataLink的某個漢化版本。國內某些公司也在為客戶做授權的漢化工作。
系統性能
每個PI服務器可容納150萬點(高端服務器),在PI的高端產品服務器中可以處理每秒鍾150萬點的數據。在客戶端軟件ProcessBook上,可以在秒級時間內從2年或3年歷史中取到1000點數據。
參考OSI公司提供的數據:實時信息點的數據值1天的平均變化次數為500,每個信息點所占的存儲空間為3個字節,那1萬個點在線存儲1年所需的存儲空間是:
變化次數 × 單點存儲空間 × 信息點數 × 1年的天數 = 總空間要求
500 × 3 × 10000 × 365 = 5.475GB
當然,硬盤很便宜,但是節約空間不是我們的出發點,關鍵是快速回放數據。
設備接口支持
OSI公司提供全球600多種DCS接口軟件,同時可以支持OPC數據采集,使得PI數據庫成為企業生產控制系統與管理信息系統連接的橋梁。
客戶端工具
PI-ProcessBook:組織和顯示過程信息,提供流程圖、實時和歷史趨勢,包含VBA編程環境。
Pi-datalink:Excel 內嵌的宏。為最終用戶提供了非常靈活的過程數據分析工具。可以提供用VBA來建各種所需的數學分析,可提供了最常規分析工具,包括:平均值、移動平均、幾何平均、標准偏差、累計值等等。
PI-Batch:生產批處理程序。
PI-ML:手動錄入終端(提供軟件或硬件兩種形式)。
PI- ACE:允許用戶寫方程式。在捕獲相似的數據集時,可以不用費力地重復使用這些方程式。
PI ICE:適於企業級實時績效管理的最有創新意義的web應用。
PI ActiveView:無縫地給web提供現有的PI ProcessBook顯示。
PI告警視圖:匯總PI 告警服務器信息,以分層次的樹形結構向任意個現場客戶或場外客戶顯示那些數據。
PI批視圖:在Windows台式電腦計算機上顯示PI 批數據。
PI系統管理工具:一套通過客戶的PC機對PI系統實施管理的應用程序。
PI模塊數據庫:將PI系統中的內容分成有用的組,幫助組織實時數據,儲存參數或規格,並使它們隨時可以用於程序和顯示中。
RLINK:生產數據(PI)與SAP R/3、JD Edwards OneWorld、MRO Software Maximo和Indus International PassPort/EMPAC等ERP或EAM(企業資產管理)系統之間的一個雙向網關。
二次開發工具
PI提供API,SDK, PI ODBC & PI OLEDB二次開發工具實現從數據庫讀取數據或寫入數據到實時數據庫中。另外,PI的客戶端ProceBook中內嵌了VBA,方便對ProceBook功能的擴充和客戶化。
PI API (Application Programming Interface,應用程序開發接口)
PI-API是一組C語言函數,提供了對PI系統進行訪問的通用編程接口,應用程序可以通過調用PI-API函數訪問或操作PI系統。許多PI的客戶端軟件,包括PI ProcessBook、PI
DataLink、PI ProfileView等,都是通過PI-API與PI服務器通信。用戶可以在UNIX,WINDOWS平台上調用。
PI SDK(Software Development Kit,軟件開發包)
PI SDK是PI提供的另一個編程工具集,用以訪問PI服務器以及相關子系統。它采用微軟ActiveX技術,內含一個ActiveX進程內組件,一個ActiveX控件和其他一些支持代碼庫,如
在線文檔、示例代碼、支持文檔等。ActiveX基於COM組件技術,在Microsoft Windows平台下具有開發語言無關性特點。用戶可以在開發簡便的。NET中使用PI SDK訪問PI服務器,
也可以在高效的C++中使用,以及在其他所有支持COM技術的開發工具中使用PI SDK。
PI ODBC & PI OLEDB
ODBC是數據庫領域的一個開放的工業標准。OLEDB是微軟基於COM的一個數據庫訪問接口標准。使用PI ODBC和PI OLEDB,用戶能夠像訪問關系數據庫一樣訪問PI系統。基於PI ODBC
或PI OLEDB的數據接口程序和客戶端應用程序,可利用標准的SQL語句訪問PI數據庫,包括PI Archive、PI Point Database或其他配置數據。
國內用戶
OSI將其數據庫定位於企業信息化集成平台,專注於實時數據軟件的研發和服務,主要用於大型流程行業用戶,如電力、石油、化工和冶金等。目前中國使用PI軟件的企業達到一
百多家,主要集中在電力、石油、化工行業,國內冶金行業用戶有唐山鋼鐵公司廠、太原鋼鐵集團第2煉鋼廠、石家庄鋼鐵公司等。
----------------------------------------------------------------------------------------------------------------------------
實時數據庫的簡介(初稿)
http://blog.okbase.net/bruceteen/archive/85.html
關系數據庫使用得比較廣,為大部分人所熟悉,以至於談到數據庫,缺省情況下指的就是關系數據庫,但實際上還有一些其他種類的數據庫在生產生活中被廣泛使用,比如我將談到的實時數據庫,它們用在要求非常嚴格、數據量非常大的生產工控中。
當今國際國內廣泛使用的實時數據庫只有三個產品:
a. 美國OSI公司的 PI ( Plant Information System )
b. 美國HONEYWELL公司的 PHD ( Process History Database )
c. 美國AspenTech公司的 IP21 ( InfoPlus .21 )
這些實時數據庫的價格是非常昂貴的,以百萬人民幣為單位,但是它們不全是以套也不全是以點(可容納的數據點)為單位來出售,所以無法數字化的比較其價格。因為工作的關系,我有幸能接觸到這三種數據庫,在此對它們做一個比較。
1. PI
采用了旋轉門壓縮專利技術和獨到的二次過濾技術,使進入到PI數據庫的數據經過了最有效的壓縮,極大地節省了硬盤空間。據計算,每秒1萬點數據存儲一年,僅需要4G的空間,即一只普通硬盤也可存貯五到十年的數據。是效率最高,使用最簡單,使用最廣泛的實時數據庫,因為其傑出的性能,PI已經多次提高了它的價格,確實不墜OSI的名號,而且PI在其文檔中公開了她的各種算法,比如上面提到的旋轉門壓縮和二次過濾。
2. PHD
HONEYWELL占據了DCS大部分份額,因此PHD使用得也比較廣泛,PHD在內部其實使用了Oracle關系數據庫,因此購買PHD就必須先購買Oracle。因為 PHD內部使用Oracle簡化了開發量 和 Oracle的性能限制比較嚴重,所以 PHD 的價格在這三種數據庫最低,算不上正宗的實時數據庫。但不要以為PHD內部使用Oracle就認為Oracle很強,如果直接使用Oracle,只要兩三秒的時間,巨大的數據量就會令它崩潰。HONEYWELL其志不在實時數據庫這一塊,而是她的DCS。
3. IP21
IP21基本上還未進入中國市場,它正在通過先期贈送的辦法打開中國市場。
在評價IP21之前,我需要先申明“我對IP21的看法只是個人看法,不是任何產品的托兒”。
IP21是我見過的最差的關系數據庫,也是我見過的最差的一個軟件,
a. 其軟件的安裝程序的運行需要一個硬狗,這種小氣的做法和PI公開算法的做法沒法比,問題還在於它的這條狗經常會死翹翹。
b. 其軟件的安裝即使是其公司的專業員工也不能保證安裝成功,10台計算機讓它的專業員工來安裝大約只能成功一兩台。
c. 其軟件的安裝盤只有一張,但這一張盤需要安裝四個小時以上,中途不停地看到在安裝某個版本的Java解釋器,其后它們又被刪除。
d. 沒有實現真正的自動安裝,在安裝之前它們的工程師需要在計算機上修改不少的文件。
e. 安裝中途如果出現錯誤是不立即報告的,需要四個小時之后安裝完畢才能看到安裝失敗的字樣,但也僅僅只能知道安裝失敗,不知道在哪一步安裝失敗。
f. 管理維護軟件非常的復雜,除非有人願意犧牲以后的前途來學習它,否則就只能讓它自己的員工來鼓弄。
g. 運行效率非常低下,而且占用系統資源非常嚴重,一台服務器只能給一個IP21使用。
實時數據庫的訪問方式
a. 使用自己的API,這種方式效率最高,其實也最簡單。
b. 使用ODBC,這種方式其實沒有多大作用,因為實時數據庫不同於關系數據庫,ODBC沒有太大的用武之地,所以在使用ODBC時有非常多的限制,大部分功能並不支持ODBC方式。
c. 使用OPC方式(OLE for Process Control)
因為太多的數據庫和DCS使用自己的API方式存取數據,無法做到算法的通用,因為提出了一個標准的存取接口,這就是OPC,如今有超過兩百家產商加入到OPC組織中,聲勢浩大,包括臭名昭著的M$,之所以講M$臭名昭著是因為M$強制性的在這個標准的存取接口中使用了COM/DCOM,令OPC只能在windows下使用,且效率(因為是工控場合,所以效率非常重要)低下。M$在OPC組織中非常的積極,所以現在的OPC基本上也脫離了當初制定的目標,令很多產商不滿,包括OSI在內,雖然OSI PI提供OPC接口,但OSI不建議客戶使用它,也不對它進行技術支持。在OPC中的COM還有另外一個大問題,因為COM規定必須支持先前制定的接口,而工控要求又非常嚴格,開發測試的費用和時間都非常高,沒有任何廠商願意支持先前的COM接口,因此沒有真正符合COM標准的OPC。
轉轉自:http://www.cnblogs.com/liushui-sky/articles/5209560.html