時間:2022-12-09 12:30:01 | 來源:信息時代
時間:2022-12-09 12:30:01 來源:信息時代
主動數(shù)據(jù)庫事務(wù) : 數(shù)據(jù)庫系統(tǒng)中保持?jǐn)?shù)據(jù)一致性的基本控制單位。主動數(shù)據(jù)庫系統(tǒng)中事務(wù)可分為兩類,一類是為執(zhí)行應(yīng)用程序由用戶定義的事務(wù),另一類是為執(zhí)行規(guī)則由系統(tǒng)創(chuàng)建的事務(wù),規(guī)則事務(wù)需要與用戶事務(wù)同步進(jìn)行。因用戶事務(wù)的執(zhí)行可能發(fā)生某個事件而觸發(fā)相應(yīng)規(guī)則的執(zhí)行,該規(guī)則的執(zhí)行又可能觸發(fā)另一個規(guī)則的執(zhí)行,這樣的執(zhí)行是一種嵌套結(jié)構(gòu),相應(yīng)事務(wù)的執(zhí)行也是嵌套的,稱為嵌套事務(wù)。為觸發(fā)規(guī)則創(chuàng)建的事務(wù)稱為被觸發(fā)事務(wù),而引起規(guī)則被觸發(fā)的事務(wù)稱為觸發(fā)事務(wù)。由于規(guī)則不同的耦合模式,形成了不同的事務(wù)處理模式。
在基本嵌套事務(wù)模型中有兩類事務(wù): 嵌套事務(wù)和頂級事務(wù)。一個嵌套事務(wù)是包含在另一個事務(wù)中的事務(wù),稱為嵌套子事務(wù),這另一個事務(wù)稱為子事務(wù)的父事務(wù)。頂級事務(wù)是不包含在任何事務(wù)中的事務(wù)。一個頂級事務(wù)可以有多個子事務(wù),一個子事務(wù)還可以有多個子事務(wù),從而形成一棵事務(wù)樹。在一個嵌套事務(wù)內(nèi)部,處在同一層上的多個子事務(wù)可以串行執(zhí)行或并行執(zhí)行,而處在不同層上的子事務(wù)自底向上執(zhí)行。事務(wù)的提交也是自下而上的,只有所有的子事務(wù)都提交后頂級事務(wù)才能提交。如果頂級事務(wù)夭折則整個事務(wù)樹也夭折。
以上事務(wù)模型是基本嵌套事務(wù)模型,也稱封閉的嵌套事務(wù)模型。此外,還有多種擴展的嵌套事務(wù)模型。如在有的嵌套事務(wù)模型中不要求保證頂層事務(wù)的原子性,其事務(wù)的部分結(jié)果對其他事務(wù)是可見的,稱為開放的嵌套事務(wù)模型。
除了基本嵌套子事務(wù)外還有兩種類型的嵌套(子)事務(wù):
(1)延遲嵌套子事務(wù):是指嵌套子事務(wù)要延遲到頂級事務(wù)執(zhí)行后事務(wù)提交前才能執(zhí)行。如果一個嵌套事務(wù)中有多個延遲型子事務(wù),則這些延遲子事務(wù)在頂級事務(wù)執(zhí)行后并行執(zhí)行。如果任意延遲型子事務(wù)又派生另外的子事務(wù),若該子事務(wù)是延遲型的則要在所有上層延遲型子事務(wù)完成后再執(zhí)行,延遲子事務(wù)的提交通過頂級事務(wù)提交,以保證頂級事務(wù)的原子性。
(2)嵌套頂級事務(wù): 是由其他事務(wù)執(zhí)行時引發(fā)的,但不是形成子事務(wù)而是獨立于其他事務(wù)的頂級事務(wù)。嵌套頂級事務(wù)可以有自己的事務(wù)樹,但對啟動它的事務(wù)沒有任何權(quán)力,即不能看到啟動事務(wù)任何非提交的更新數(shù)據(jù),嵌套頂級事務(wù)的提交和夭折都是獨立的。
在主動數(shù)據(jù)庫中,規(guī)則條件的評估和動作的執(zhí)行是在不同的事務(wù)中處理的。當(dāng)規(guī)則被觸發(fā)后,系統(tǒng)首先創(chuàng)建條件評估事務(wù),評估規(guī)則的條件是否成立。如果規(guī)則的E-C耦合模式為立即型,則條件評估事務(wù)作為觸發(fā)事務(wù)的子事務(wù)在觸發(fā)點創(chuàng)建并立即執(zhí)行,而觸發(fā)事務(wù)被暫停直到條件子事務(wù)執(zhí)行完后再繼續(xù)執(zhí)行; 如果規(guī)則的E-C耦合模式為延遲型,則條件評估子事務(wù)為延遲嵌套子事務(wù),該子事務(wù)在觸發(fā)點創(chuàng)建但要延遲到觸發(fā)事務(wù)執(zhí)行完后才能執(zhí)行; 如果規(guī)則的E-C耦合模式為分離型,則系統(tǒng)為條件評估創(chuàng)建一個嵌套頂級事務(wù)獨立于觸發(fā)事務(wù)執(zhí)行。如果規(guī)則的條件成立,則系統(tǒng)將創(chuàng)建另一個子事務(wù)以執(zhí)行規(guī)則的動作。規(guī)則動作事務(wù)的創(chuàng)建和執(zhí)行由規(guī)則的C-A耦合模式?jīng)Q定。在規(guī)則的條件評估或動作執(zhí)行期間可能會引發(fā)事件,該事件又觸發(fā)了另一個規(guī)則。同樣地,系統(tǒng)要為觸發(fā)規(guī)則創(chuàng)建相應(yīng)的條件評估子事務(wù),如果規(guī)則條件成立,系統(tǒng)也要為規(guī)則的動作執(zhí)行創(chuàng)建另一個子事務(wù),從而形成了事務(wù)的嵌套執(zhí)行。
在實際應(yīng)用中,對嵌套頂級事務(wù)有不同的處理模式。嵌套頂級事務(wù)與觸發(fā)事務(wù)可以串行執(zhí)行,也可以并行執(zhí)行。這樣處理可能會出現(xiàn)被觸發(fā)事務(wù)提交而觸發(fā)事務(wù)夭折的情況,這對于一些應(yīng)用是不允許的。例如,在銷售管理中,一次銷售使庫存量低于限額而引發(fā)訂貨的動作,動作的執(zhí)行不應(yīng)作為銷售事務(wù)的一部分,應(yīng)該以分離方式執(zhí)行。但負(fù)責(zé)重訂貨的事務(wù)只有在原觸發(fā)事務(wù)的銷售持續(xù)下去的情況下其執(zhí)行才有意義。這類應(yīng)用,在觸發(fā)事務(wù)與被觸發(fā)事務(wù)間存在因果關(guān)系。為滿足這類應(yīng)用,在嵌套頂級事務(wù)的基礎(chǔ)上,提出了嵌套(causallydependent,CD)頂級事務(wù),即具有因果關(guān)系的嵌套頂級事務(wù)。嵌套CD頂級事務(wù)與啟動它的事務(wù)間具有因果依賴關(guān)系,即事務(wù)提交依賴于啟動它的事務(wù)的提交,如果啟動它的事務(wù)夭折,則CD頂級事務(wù)也跟著夭折。但是,CD頂級事務(wù)的夭折不會對啟動它的事務(wù)有任何影響。如銷售管理的例子中,負(fù)責(zé)重訂貨的事務(wù)就可以采用嵌套CD頂級事務(wù)執(zhí)行,如果銷售事務(wù)夭折,則重訂貨的事務(wù)也跟著夭折。嵌套CD頂級事務(wù)有兩個變種,一種是嵌套頂級事務(wù)的執(zhí)行要等到啟動它的事務(wù)提交后才能執(zhí)行,即嵌套頂級事務(wù)的執(zhí)行與啟動它的事務(wù)具有順序依賴關(guān)系。例如,要將傳感器的輸出在屏幕上顯示,一個分離耦合規(guī)則用來更新傳感器輸出的變化,在具有順序依賴的嵌套頂級事務(wù)的執(zhí)行能夠使輸出顯示正確反映更新次序。還有一種是嵌套頂級事務(wù)與啟動它的事務(wù)的執(zhí)行是并行的,但只有當(dāng)啟動事務(wù)夭折后它才能提交,即嵌套頂級事務(wù)作為啟動它的事務(wù)失敗后的一種補償。如果啟動事務(wù)成功提交,則嵌套頂級事務(wù)將夭折。例如,在工程管理中,工程事務(wù)要求在某一關(guān)鍵時刻之前完成,如果此事務(wù)執(zhí)行時發(fā)現(xiàn)可能趕不上預(yù)定的進(jìn)度,系統(tǒng)會調(diào)度一個起彌補作用的事務(wù),此事務(wù)與原觸發(fā)事務(wù)并行執(zhí)行,如果在預(yù)定時間內(nèi)觸發(fā)事務(wù)完成,被觸發(fā)事務(wù)將中止。
數(shù)據(jù)庫系統(tǒng)中,當(dāng)事務(wù)失敗后應(yīng)將數(shù)據(jù)庫恢復(fù)到一致狀態(tài)。主動數(shù)據(jù)庫系統(tǒng)中的恢復(fù)是很復(fù)雜的,主要和規(guī)則事務(wù)有關(guān)。其主要原因是: 有些事件是不可恢復(fù)的,有些外部動作是不可逆的,還有一些耦合模式允許被觸發(fā)事務(wù)的提交在觸發(fā)事務(wù)之前進(jìn)行。封閉嵌套事務(wù)總是通過頂級事務(wù)提交,因而封閉嵌套事務(wù)是可恢復(fù)的。與數(shù)據(jù)庫操作有關(guān)的事件總是可以恢復(fù)的。其他事件如暫時事件,有的可以恢復(fù)有的是不可以恢復(fù)的,因有些事件在恢復(fù)過程中不可能再生成。事件日志應(yīng)清楚地記錄與事件相關(guān)的所有內(nèi)容,如事件所觸發(fā)的規(guī)則、是否是復(fù)合事件的組成部分等。一般的恢復(fù)原則是: 由提交事務(wù)引發(fā)的事件在事故發(fā)生前所執(zhí)行的動作應(yīng)該被恢復(fù),在事故發(fā)生前未完成的動作如果是可恢復(fù)的應(yīng)由該事件重新引發(fā)再執(zhí)行。以分離模式被觸發(fā)的規(guī)則事務(wù)以及嵌套CD頂級事務(wù)必須能保證它的執(zhí)行,即系統(tǒng)應(yīng)提供相應(yīng)的機制保證這些規(guī)則的執(zhí)行。因為觸發(fā)事務(wù)已經(jīng)提交而用戶并不知道分離的被觸發(fā)事務(wù)的失敗,因而不能采取相應(yīng)的措施。因分離模式下的事務(wù)不依賴于觸發(fā)事務(wù),因此,分離模式應(yīng)該用于觸發(fā)事務(wù)能夠容忍分離模式事務(wù)失敗的這樣一些應(yīng)用中,或在這些應(yīng)用中能定義補償事務(wù)已彌補事務(wù)失敗的影響。
微信公眾號
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。