李永鋒
(西安航空職業(yè)技術(shù)學(xué)院 陜西 西安 710089)
目前,數(shù)據(jù)庫的應(yīng)用無處不在,自1970年IBM公司的E.F.Codd提出了關(guān)系數(shù)據(jù)庫理論之后,數(shù)據(jù)庫的理論技術(shù)飛速發(fā)展,各種各樣的數(shù)據(jù)庫技術(shù)分支應(yīng)運而生,比如面向?qū)ο蠹夹g(shù),分布式技術(shù),數(shù)據(jù)倉庫和數(shù)據(jù)挖掘理論,實時技術(shù)等,其中實時技術(shù)與數(shù)據(jù)庫技術(shù)的結(jié)合產(chǎn)生了實時數(shù)據(jù)庫系統(tǒng)。其在電力行業(yè)中有良好的應(yīng)用前景,隨著逐步實現(xiàn)批發(fā)競爭的電力市場,對于現(xiàn)代化的電力自動化系統(tǒng)的需求越來越迫切。電力自動化系統(tǒng)的功能包括系統(tǒng)故障的報警及檢測、系統(tǒng)現(xiàn)狀的圖形表示、負荷預(yù)測及遠程控制等[1],它既要保存短暫數(shù)據(jù)也要保存大量歷史數(shù)據(jù),因此需要實時數(shù)據(jù)庫和傳統(tǒng)數(shù)據(jù)庫的同時支持。
RTDBS與傳統(tǒng)數(shù)據(jù)庫系統(tǒng)在概念、原理、結(jié)構(gòu)上有很大的差別,其所采用的優(yōu)先級指派算法、事務(wù)提交協(xié)議、并發(fā)控制協(xié)議等與后者也大相徑庭,產(chǎn)生這些不同的根本原因在于RTDBS所具有的數(shù)據(jù)及事務(wù)的時間限制。下面說明RTDBS中的幾個基本概念:
截止期(Deadline),截止期是指事務(wù)所希望或者說能承受的最晚提交時間。按照事務(wù)在錯過截止期后提交造成的后果可將事務(wù)分為兩類[2]:1)硬截止事務(wù),事務(wù)超截止期提交將導(dǎo)致惡果(價值為負),這類事務(wù)在錯過截止期后應(yīng)立即夭折(Abort);2)軟截止事務(wù),事務(wù)超截止期提交還有一定價值,典型地到某一時間點,價值降到零,此后保持為零,不會降到負值。有些分類方法中還有一類,固截止事務(wù),事務(wù)超截止期提交價值為零,它實質(zhì)上是軟截止事務(wù)的一種特例,無須單獨考慮。在實際應(yīng)用中,大多數(shù)事務(wù)可歸結(jié)為硬截止事務(wù),比如電話交換,當(dāng)用戶掛機后仍然繼續(xù)進行查詢和連接無疑是浪費資源,價值為負,文中所討論的事務(wù)除非特別指明都是指硬截止事務(wù)。
RTDBS性能的衡量尺度[3]最常用的有以下幾個:
1)事務(wù)超截止期的比率(%Miss),這是衡量RTDBS性能的最重要的尺度,它在硬截止事務(wù)中可以用公式(1)來表示,在軟截止事務(wù)中可以用公式(2)來表示,硬截止事務(wù)中超截止期事務(wù)將被ABORT,所以不存在超截止期提交的事務(wù)(Tardy Transactions);
2)超截止期事務(wù)平均超時,限于軟截止事務(wù),也就是超截止期提交的事務(wù)超過截止期的時間的平均值;
3)事務(wù)重啟的比率,指因為并發(fā)控制或別的原因而被重啟的事務(wù)在所有事務(wù)中所占的比例。
在傳統(tǒng)數(shù)據(jù)庫系統(tǒng)中,事務(wù)處理需要訪問存儲在輔存(通常是硬盤)上的數(shù)據(jù)文件,因此,事務(wù)的響應(yīng)時間受限于硬盤的訪問延遲,一次I/O的訪問延遲一般在幾十毫秒至幾百毫秒左右,這對于傳統(tǒng)應(yīng)用是比較快的,而對于實時應(yīng)用來說卻不夠,雖然傳統(tǒng)數(shù)據(jù)庫也做了各種各樣的優(yōu)化措施,比如提供內(nèi)存緩沖區(qū)等措施,但當(dāng)訪問不在緩沖區(qū)的數(shù)據(jù)時,訪問磁盤的時間也許就會使得這個事務(wù)超過它所允許的時限。因此必須有效地設(shè)計RTDBS以適應(yīng)實時應(yīng)用嚴格的時間要求。有兩種途徑可以達到目的[4]:第一,完全拋開傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的已有結(jié)構(gòu),提出新的體系結(jié)構(gòu),采用新的數(shù)據(jù)庫技術(shù);第二,在傳統(tǒng)數(shù)據(jù)庫系統(tǒng)的現(xiàn)有體系下,重新設(shè)計數(shù)據(jù)庫的系統(tǒng)結(jié)構(gòu),提高其性能,從而滿足實時應(yīng)用的需要。從目前看來,第一種途徑還有待研究,在較短的時間內(nèi)還很難做到,而第二種途徑顯得更加實際一些,它的代價也較第一種要小得多,而重新設(shè)計系統(tǒng)結(jié)構(gòu)也有兩種方法[5]:
1)修改數(shù)據(jù)庫系統(tǒng),滿足實時應(yīng)用本身的需求,可以采取以下一些措施:①提供新的數(shù)據(jù)模型以組織實時數(shù)據(jù);②為實時應(yīng)用提供有效的支持事務(wù)時間限制的接口,提供基于新的數(shù)據(jù)模型的嵌入式數(shù)據(jù)庫語言;③將數(shù)據(jù)庫系統(tǒng)建立在實時操作系統(tǒng)上,傳統(tǒng)數(shù)據(jù)庫往往建立在通用的龐大操作系統(tǒng)上,并沒有注意數(shù)據(jù)庫管理系統(tǒng)的要求,可以將RTDBS的數(shù)據(jù)管理運行部件建立在可裁剪的高效實時操作系統(tǒng)上,使系統(tǒng)更加緊湊、簡潔、可靠,開銷更小,性能更優(yōu)越;④引入實時語義約束到數(shù)據(jù)庫中,建立有效的實時事務(wù)并發(fā)控制機制,提高系統(tǒng)的實時處理性能,滿足實時事務(wù)調(diào)度。
2)利用硬件技術(shù)發(fā)展成果,使用大量廉價的內(nèi)存,來替換成為速度瓶頸的磁盤。因為數(shù)據(jù)庫操作的速度大多受限于I/O的訪問延遲,將數(shù)據(jù)庫的大部分或者整個放入內(nèi)存,減少甚至消除磁盤I/O的訪問延遲,這是提高數(shù)據(jù)庫性能一個很自然的想法。然而大容量內(nèi)存的使用,也使得數(shù)據(jù)庫系統(tǒng)設(shè)計者必須重新考慮數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)組織、訪問方法、查詢處理的算法等等。
分布式實時數(shù)據(jù)庫系統(tǒng)(DRTDBS)是由若干相互自主的單節(jié)點數(shù)據(jù)庫系統(tǒng)松散耦合成的一個總的數(shù)據(jù)庫系統(tǒng),其中數(shù)據(jù)以數(shù)據(jù)片段/復(fù)制的形式分布于各個節(jié)點上;事務(wù)具有訪問共享數(shù)據(jù)的能力,它既可以訪問本地節(jié)點的數(shù)據(jù)也可以訪問存儲于遠程節(jié)點上的數(shù)據(jù)。DRTDBS有兩種事務(wù)[6]:1)僅訪問和更新一個節(jié)點中數(shù)據(jù)的事務(wù)稱為局部事務(wù);2)需訪問和更新N個節(jié)點中數(shù)據(jù)的事務(wù)稱為全局事務(wù),局部事務(wù)的處理相對全局事務(wù)來說要簡單的多,它可以看作N=1情況下的全局事務(wù)。分布式實時數(shù)據(jù)庫研究的核心論題是全局事務(wù)處理,事務(wù)的調(diào)度必須同時滿足截止期、局部一致性和全局一致性的要求。為達到上述目的,執(zhí)行事務(wù)的各節(jié)點必須交換信息,進行同步操作,而所有這些引發(fā)的時間延遲對于事務(wù)的響應(yīng)時間來說是一個不小的開銷,這對于滿足分布式實時事務(wù)的截止期很不利??梢?,在分布式實時數(shù)據(jù)庫中解決截止期和數(shù)據(jù)一致性這一對矛盾比在集中式實時數(shù)據(jù)庫中要困難得多,文中將分別簡單介紹DRTDBS的CPU及I/O調(diào)度算法、事務(wù)提交協(xié)議、并發(fā)控制協(xié)議。
在DRTDBS的每個節(jié)點上,事務(wù)進入就緒狀態(tài)后,首先要為事務(wù)指定優(yōu)先級,根據(jù)事務(wù)的優(yōu)先級操作系統(tǒng)會進行調(diào)度,分配CPU時間片。常用的優(yōu)先級指派策略有:先來先服務(wù)(FCFS)、截止期最早優(yōu)先(EDF)、最小空余時間優(yōu)先(LSF)、價值最高優(yōu)先(HVF)、價值比最大優(yōu)先(GVDF)等。
當(dāng)實時數(shù)據(jù)庫不采用內(nèi)存數(shù)據(jù)庫的實現(xiàn)方法時,磁盤I/O的調(diào)度將是提高系統(tǒng)性能的一個突破口,CPU的速度每年都在成倍提高,而磁盤的平均訪問時間大約每十年才能縮減一半,因此,合適的I/O調(diào)度策略對于提高系統(tǒng)性能有很大作用,常用的I/O調(diào)度的策略[7]有:先來先服務(wù)(FCFS)、基于優(yōu)先級服務(wù) (Priority Serve)、電梯調(diào)度 (Elevator)、最短尋道(Shortest Seek)、優(yōu)先級電梯調(diào)度(Priority Elevator)等。
傳統(tǒng)的分布式數(shù)據(jù)庫系統(tǒng)為了保證事務(wù)原子性而首先實現(xiàn)了事務(wù)提交協(xié)議[8],在過去的幾十年中,數(shù)據(jù)庫研究者們提出了大量的提交協(xié)議,其中包括經(jīng)典的Two Phase Commit(2PC),它的變種協(xié)議Presumed Commit(PC)、Presumed Abort(PA),Three Phase Commit(3PC)等,這些協(xié)議通常都需要在各個階段在參與全局事務(wù)的節(jié)點之間交換大量信息,同時記錄日志文件,日志往往因為故障恢復(fù)的原因而需要立即同步寫入磁盤,而這些同步信息的交換以及日志的記錄極大地增加了事務(wù)的執(zhí)行時間,事務(wù)執(zhí)行時間的增加在傳統(tǒng)的分布式數(shù)據(jù)庫也許可以接受,而這對于DRTDBS來說,這將意味著更多的事務(wù)將不能在其截止期內(nèi)完成,因此DRTDBS中提交協(xié)議的選擇是一個非常重要的設(shè)計問題。
DRTDBS中多個節(jié)點的多個事務(wù)同時執(zhí)行,需要有一種機制來控制DRTDB的更新順序以保證數(shù)據(jù)庫的串行性和正確性。有兩種基本的途徑進行并發(fā)控制,悲觀的并發(fā)控制和樂觀的并發(fā)控制。在悲觀的并發(fā)控制中,我們首先驗證事務(wù)不會破壞串行性原則才允許事務(wù)進行讀寫;而在樂觀的并發(fā)控制中,我們首先執(zhí)行事務(wù)中的讀操作,然后驗證事務(wù)是否破壞了串行性,如果沒有則進行寫操作。兩者的區(qū)別如圖1所示。
圖1 悲觀與樂觀并發(fā)控制Fig.1 Pessimistic and optimistic concurrency control
悲觀的并發(fā)控制一般通過鎖的機制來實現(xiàn),文中討論的鎖允許共享鎖和排它鎖兩種類型,共享鎖也稱讀鎖,它允許多個并發(fā)的讀者;排它鎖也稱寫鎖,它同一時間只允許一個寫者。我們稱共享鎖之間是兼容的,也就是不沖突的,而排它鎖與共享鎖、排它鎖之間都是不兼容的。常見的并發(fā)控制協(xié)議有:分布式兩階段封鎖、分布式時間戳排序、分布式時間戳排序、多版本機制等。
電能量計費系統(tǒng)TMR是準實時的系統(tǒng),雖然對于實時性的要求與調(diào)度管理系統(tǒng)SCADA相比要低,但電力企業(yè)對于TMR的需求已不僅僅停留在電量的采集和考核上,隨著電力系統(tǒng)實施“廠網(wǎng)分開”,電力企業(yè)作為一個獨立的經(jīng)濟實體,必然需要追求經(jīng)濟效益,而在電力傳輸中的降低線損是電力企業(yè)降低成本的主要途徑之一,因此電力企業(yè)希望電能量計費系統(tǒng)能夠進行線損的分析計算,對降低損耗提供一定的決策支持。線損計算一般分為兩種,統(tǒng)計線損和實時線損,實時線損要求在電能量數(shù)據(jù)的基礎(chǔ)上結(jié)合SCADA采集的數(shù)據(jù)進行實時的線損計算,這種需求對于電能量計費系統(tǒng)的實時性能有很高的要求,引入實時數(shù)據(jù)庫的支持是提高系統(tǒng)實時性能和響應(yīng)速度的重要手段。
下面介紹分布式實時數(shù)據(jù)庫在電能量計費系統(tǒng)TMR中的應(yīng)用。TMR系統(tǒng)中DRTDBS建立在跨操作系統(tǒng)平臺的ACE(Adaptive Communication Environment)環(huán)境基礎(chǔ)之上,服務(wù)器可采用Windows 2000 Advanced Server/MS SQL Server 2000 Enterprise環(huán)境,ALPHA Tru64UNIX/Oracle 9i環(huán)境,或者Sun Solaris 9/Oracle 9i,客戶端可采用PC工作站/Windows 2000 (Server或Professional)或Sun工作站/Solaris9,在Windows平臺采用Visual C++6編譯實現(xiàn),UNIX平臺采用cxx 6.3/g++3.2.2編譯實現(xiàn)。
在實現(xiàn)RTDB時使用內(nèi)存數(shù)據(jù)庫的實現(xiàn)方式,因此無需選擇I/O調(diào)度算法,而內(nèi)存數(shù)據(jù)庫的速度能夠滿足DMS系統(tǒng)中絕大多數(shù)事務(wù)實時性能的需要,采用了實現(xiàn)最簡單的先來先服務(wù)的CPU調(diào)度算法,通過對應(yīng)用程序設(shè)定不同的優(yōu)先級,讓某些關(guān)鍵的應(yīng)用程序在執(zhí)行指令時享有較高的CPU優(yōu)先級,但所有應(yīng)用對于RTDB訪問的優(yōu)先級是基于事務(wù)就緒的時間排序的。在提交協(xié)議中,采用了使用較多的假定提交Presumed Commit協(xié)議,當(dāng)發(fā)生錯誤時通過日志記錄發(fā)生的錯誤,必要時可重新通過服務(wù)器同步節(jié)點的實時數(shù)據(jù)庫,PC協(xié)議也比較符合邏輯,畢竟用戶希望他們提交的絕大部分事務(wù)都能夠提交成功,事實上使用內(nèi)存數(shù)據(jù)庫存儲數(shù)據(jù),的確可以保證絕大多數(shù)事務(wù)能夠正確提交,因此采用假定提交這樣的策略也可以進一步降低系統(tǒng)在事務(wù)提交情況下的開銷。
TMR系統(tǒng)中的DRTDBS讀操作遠遠多于寫操作,較少發(fā)生讀、寫的并發(fā)沖突,因此在并發(fā)控制上未作相應(yīng)控制。在實踐中我們發(fā)現(xiàn),分布式實時數(shù)據(jù)庫的實施降低了網(wǎng)絡(luò)流量,提高了各節(jié)點的數(shù)據(jù)查詢速度,從而提高系統(tǒng)的響應(yīng)速度,為進行實時的線損計算提供了基礎(chǔ)。
DRTDBS能夠較大程度提高系統(tǒng)的整體性能,在電力自動化領(lǐng)域有著廣泛的應(yīng)用,但同時我們發(fā)現(xiàn)目前DRTDBS技術(shù)在理論和實際應(yīng)用上有著較大的差距,在DRTDBS的研究中往往需要做出某些假設(shè),這些假設(shè)在實際應(yīng)用中經(jīng)常無法或者很難有效地滿足,使得在實際應(yīng)用中多數(shù)情況都放棄實現(xiàn)理論,因此我們還需要進一步研究理論并縮小理論和實際之間的差距。
[1]Abbott R,Garcia-Molina H,Scheduling rteal-time transactions:A performance evaluation[J].ACM Transactions on Database Systems,1992(3):33-36.
[2]Haritsa J,Ramamritham K,Gupta R,The PROMPT Realtime commit protocol[J].IEEE Transactions on Parallel and Distributed Systems,2000(2):21-22.
[3]Kanitkar V,Delis A.A case for real-time client-server database[J].2nd International Real-Time Database Workshop,1997(9):17-19.
[4]Haritsa J,Ramamritham K.Adding PEP to real-time distributed commit processing[J].Tech Report,2000(3):14-16.
[5]Lindsay B,et al,Computation and communication in R*:a distributed database manager[J].ACM Transactions on Computer Systems,1984(1):41-42.
[6]Mohan C,Lindsay B,Obermarck R.Transaction management int the R*distributed database management system[J].ACM Transactions on Database Systems,1986(4):28-30.
[7]劉云生,黨德鵬.分布式實時事務(wù)處理[J].計算機科學(xué),2001(7):59-61.LIU Yun-sheng,DANG De-peng. Distributed real-time transaction processing[J].Computer Science,2001(7):59-61.
[8]吳文傳,張伯明,等.一體化系統(tǒng)的分布式實時數(shù)據(jù)庫管理系統(tǒng)[J].中國電力,2000(10):85-89.WU Wen-chuan,ZHANG Bo-ming,et al.Integrated system of distributed real-time database management system[J].Electric Power,2000(10):85-89.