新四季網

關於資料庫的方法

2023-12-11 19:05:12 4

專利名稱:關於資料庫的方法
技術領域:
本發明涉及一種能夠在一個資料庫中一致地讀取多個數據對象的方法。
本發明特別適用於通過二階段鎖定法進行交易管理的資料庫,其中第一階段包括一個訪問受該交易影響的對象的請求,並且一旦獲得該訪問就鎖定這些對象,而第二階段包括交易委託並解除在第一階段中所設置的所有鎖定。
背景技術:
說明交易管理是資料庫管理進程中的基本技術,有時用於將一個交易與資料庫中的其它操作或事件分離並提供一個包含在一個動態的隨時在變的資料庫中的信息的一致圖形。
在傳統的交易進程中,阻塞那些在實際的交易進程中被交易所用的對象,以便防止它們在正在進行的交易過程中被其它交易利用。因此,需要訪問同一對象的其它交易必須等待或中斷,以及稍後再試。
在一個交易中所執行的實際工作包括改變一個對象的操作和/或保留一個未變對象的操作,以下稱這些操作或事件為對象改變事件和對象未變事件。通過將改變後的內容寫入一個對象的新版本或覆蓋其舊版本,可以改變或更新一個對象的內容。
在已知技術中,在交易「委託」之前執行與一個交易相關的所有操作,包括一個改變和一個未變交易。術語一個交易的「提交/委託」對本領域的技術人員來說是公知的,簡而言之就是該交易請求的操作或事件並執行請求分離的交易通知。還應注意術語「提交」一般還包括解除所設置的所有鎖定,儘管我們在本文中將解鎖視為一個單獨的操作。
對象在交易之前的當前或現有版本以這種當前的形式被保存,直到不再有其它交易使用當前或現有版本為止。這意味著一個對象的不同版本可能需要被保存不同的時期,這取決於哪個交易使用所述版本。
特定的應用程式需要以不阻塞訪問與其它交易,特別是只讀交易一起所用的對象的方式實時訪問一個資料庫。在本文中,利用一個資料庫管理系統是公知的,該系統允許訪問沒有交易限制並且是迅速而非阻塞的不同對象。
這種系統的缺點在於用戶不能以與交易限制系統中相同的分離方式在資料庫進行操作,並且不能提供資料庫的絕對一致圖形。
通過管理一種定義明確的交易協議能夠實現非阻塞交易是公知的。但是這些交易協議是不容易管理的並且它們的實現過程是複雜的,處理要求和/或需要較大的存儲容量。
因此,在公知技術中,或者提供一個能夠迅速而簡單地執行但不能總保證資料庫的一致圖形,即正確結果,或者提供一個在積極管理的同時緩慢顯示一個正確圖形且不便使用的資料庫。
在所屬技術領域中,基於所謂不鎖定並行交易最優控制的資料庫是公知的。這種控制基於允許所有交易而假設不會發生衝突。
特別是,並行交易最優控制意味著要進行檢查以確保在交易被「提交」之前衝突不會隨交易而發生。如果發現存在衝突,就放棄交易。否則,就允許交易委託。
還應注意在所謂二階段鎖定或在兩個階段中進行鎖定時,通常有兩個不同的鎖定。
第一鎖定是一個所謂的共享鎖定,它由與一個數據對象相關的只讀交易設置,並允許其它讀交易訪問所述對象,但鎖定該對象而不能改變交易。
第二鎖定是一個所謂的排它鎖定,它由改變數據對象的交易設置並鎖定與所有其它交易相關的對象。
下面的公開文件列出幾個現有技術示例,示出了幾種不同類型的非阻塞交易。
US-A-4,627,019此公開文件描述了一個用覆蓋了資料庫中各種對象的引用來表示何處發現不同對象的資料庫。當開始一個改變對象交易時,交易指的是改變後的對象在資料庫中的新存儲位置。創建一個新引用,它指向改變後的對象的新位置。
舊的引用被保留並仍然指向相應對象的舊位置。
原先引用的每個版本都保持可用,只要某些交易用到該引用的這個版本。
儘管這種交易管理提供了一種非阻塞交易協議,它需要大量存儲空間,因為引用的不同版本需要並列保存。而且這種交易管理的執行也相對複雜。
EP-A2-0 471 282此公開文件描述了三種新型鎖定,即現時鎖定,未決鎖定和過期鎖定。當第一交易,一個讀交易,在不同對象上設置了一個鎖定時,用一個現時鎖定取代一個共享鎖定。如果第二交易需要在同一對象上設置排它鎖定而第一交易仍在進行中,則將現時鎖定變成未決鎖定。
如果第二交易改變了一個具有未決鎖定的對象,則該鎖定變成一個過期鎖定。如果第二交易不改變對象,則在提交第二交易時將未決鎖定變成一個現時鎖定。
只要所有的鎖定都是現時鎖定,則第一交易就正常繼續。如果在任何一個受第一交易影響的對象上存在任何未決鎖定,則第一交易進行等待,直到該未決鎖定轉換成其它類型的鎖定。
當一個未決鎖定變成一個現時鎖定時,第一交易能夠繼續。如果該未決鎖定變成一個過期鎖定,這表示該對象已被改變並且第一交易隨後被放棄。
儘管這種方法能夠使一個被設置的鎖定不阻塞改變交易,但是它需要放棄一個已開始的讀交易,因為在執行該讀交易的同時,一個數據對象改變交易改變了一個對象。
發明概述技術問題在考慮到上述現有技術的出發點的同時,還應當看到在交易管理的啟動過程中還存在一個技術問題,其中一個指定鎖定阻塞一個對象改變交易的時間期限應大大縮短。
另一個技術問題是縮短設置一個指定鎖定和為一個未變交易解除所述鎖定之間的時間期限。
還有一個技術問題是提供對由未變交易所用的對象相對時間的不受限訪問,而在由該交易設置的鎖定被解除之後,在這個訪問時間內不阻塞受改變交易影響的對象,即非阻塞訪問。
還應當看到在將一個交易分成改變和未變操作的過程中存在一個技術問題,即為所述交易中的改變操作提供一個排它鎖定,而為未變操作提供對受影響對象的時間不受限非阻塞訪問。
另一個技術問題是解決在一個以對一個對象的每個版本分配一個計數器為基礎的資料庫中存在的上述技術問題,所述計數器在允許一個交易訪問該對象,如設置一個鎖定時加1,在一個交易不再需要訪問該對象的這個版本,如解除一個鎖定時減1。
還有一個技術問題是解決一個以為每個交易分配一個時間標記為基礎的資料庫中存在的上述技術問題,所述時間標記表示該交易開始的時間。當不再有新的交易具有對該對象此版本的時間標記時,每個交易就對具有這個時間標記的相應對象的版本作出標記,並且將保留一個對象的每個版本,只要沒有一個象更舊交易一樣的交易或與最新時間標記一樣舊的交易結束,最新時間標記已分配給所述版本。
解決方案本發明立足於能夠使一個資料庫中的多個對象被一致讀取的方法,其中通過在兩個階段上鎖定來管理交易。
第一階段包括一個訪問受交易影響的對象的請求,並在獲得該訪問後鎖定該對象。第二階段包括提交該交易並解除第一階段中設置的所有鎖定。
在一個交易中所執行的實際工作包括改變一個對象的操作和/或不改變一個對象的操作,其中通過將改變後的內容寫到該對象的一個版本來實現更新或改變一個對象的內容,並且對象在交易之前的版本被保留,直到不再有其它交易使用當前或現有版本為止。
交易在第一階段中執行所有的數據改變操作。
隨著從這樣一種方法的出發點以及向一個或多個上述技術問題提供解決方案的目的,本發明提出交易在第二階段之後保持對所述對象的訪問,交易在第二階段之後儘可能執行最大量的未變操作,並且交易在執行了所述未變操作之後關閉對對象的訪問。在解除所述鎖定之後,交易在資料庫中保留與未變操作相關的對象的一致抽點列印。
本發明還提出在第二階段之後,對一個對象的訪問包括將相應對象的當前版本標記為被該交易所用,以及關閉對這些對象的訪問包括刪除所述標記,同時儘管該交易被提交,但仍保持所述對象的版本可用,至少到該交易結束為止。
當為一個對象的每個版本分配了一個計數器時,本發明提出在刪除該標記,即結束該交易時,所述標記僅由計數器的減少構成,所述計數器在分配一個交易訪問所述版本,如設置一個鎖定時逐一增加,在一個交易不再需要訪問所述版本,如解除一個鎖定時逐一減少。
當為每個交易分配了一個時間標記時,本發明提出所述標記包括相應對象版本的時間標記,並且認為在結束對所述對象的訪問時,該交易已被終止,其中時間標記表示該交易開始的時間,當沒有更新的交易對對象的該版本進行時間標記時,每個交易以其時間標記標記出受影響對象的相應版本,以及只要還有比分配給所述版本的時間標記更早或一樣早的交易尚未結束,就允許保留一個對象的每個版本。
當交易只包括未變操作時,本發明提出鎖定應包括一個共享鎖定,其允許在該共享鎖定被解除之前,其它交易能夠對一個對象進行訪問,但限制為只能對該對象進行讀取。
隨著提供所謂的組打開,即在交易開始之前,已知所有的對象要被打開,本發明提出這些對象在第一階段被打開。
隨著發明提供所謂數據對象的遞歸打開,即在交易開始之前已知有一個或多個起始對象,以及所述起始對象中的一個或多個指向另外一個或多個對象,本發明提出在第一階段打開這些起始對象,在第一階段進行估計對任意其它對象的引用,並在第一階段打開涉及的任意的其它對象。
本發明還提出在第一階段估計從其它對象到另一些還是其它對象的引用,以及在第一階段打開又涉及的任意的還是其它對象等。
本發明還能夠通過預定來自從較早打開的對象到另一些對象產生的引用中的對象的允許級別數目來限制可用對象的數目。
隨著提供所謂的路徑打開,本發明提出在第一階段打開起始對象,根據所述起始對象中的一個預定對象來估計對另外一些對象的引用,並在第一階段打開涉及到另外一些對象,在路徑打開中,在交易開始之前,有一個或多個起始對象是已知的,並且其中一個或多個起始對象指向另外一些對象中的一個或多個。
依據本發明的一個實施例,在第一階段估計從可能的其它對象到仍然是其它對象的引用,並在第一階段打開仍然是任意其它對象等。
依據另一個實施例,通過預定來自從較早打開的對象到其它對象的引用中的對象的允許級別數目,限制可用對象的數目。
以下優點主要來自於這樣一種有創造性的方法能夠將一個交易鎖定一個對象使之不被其它交易訪問的時間縮短,從而以一種簡單、迅速、存儲量相對較小和有利於計算的方式來影響一個虛擬的非阻塞操作的讀交易。
本方法提供了在交易提交後受交易影響的對象的保持一致抽點列印,從而能夠使該交易在進行未變操作時利用該對象的一致圖形而無須限制該交易的時間和阻塞其它交易。
其它交易鎖定一個或多個對象,即不是只讀交易的偶交易(eventransaction)所經歷的時間期限能夠被縮短到不同的長度,這意味著由於用於鎖定對象的等待時間將被大大縮短,從而一個資料庫進行所有交易的速度不同。
本發明還提供了這樣一種特別有益的方法在數據塊中,複製不同的對象版本被認為是一種在存儲容量、時間和/或執行上成本昂貴的操作。依據本發明方法的一個實施例,對於讀交易來說,首先要避免複製並且在時間上允許較早解除所用的鎖定。
本發明還特別具有這樣的優點關於資料庫,發現了需求多個對象的一致抽點列印而不必根據最後的交易完全更新這個圖形。
本發明還具有這樣的優點在RAM資料庫中執行該方法時,發現了與實時應用程式結合的更高要求。
本發明方法的主要特徵如後面的權利要求1所述。
下面將參照實施例和附圖詳細描述本發明,其中

圖1簡要示出了與資料庫中的並列交易相關的第一公知問題,圖2簡要示出了與資料庫中的並列交易相關的第二公知問題,圖3簡要示出了與資料庫中的並列交易相關的第三公知問題,圖4簡要示出了與資料庫中的並列交易和相互依賴的對象相關的第四公知問題,圖5簡要示出了依據本發明在一個資料庫中更新一個對象的情況;圖6簡要示出了依據本發明將一個交易分成了不同階段;圖7示出了依據本發明的高度簡化的讀交易;圖8簡要示出了依據本發明的組打開操作;
圖9簡要示出了依據本發明的遞歸打開操作;以及圖10簡要示出了依據本發明的路徑打開操作。
圖1示出了在一個資料庫中同時執行多個相互影響的交易的不同情況中的第一種情況。
在這種被稱為更新丟失的情況下,第一交易T1和第二交易T2在不同的時間彼此獨立和互不知道地更新同一個數據對象「0」。
在時間點「a」,第一交易T1收集對象01的第一版本,而在時間點「b」,第二交易T2收集所述對象的同一版本01。當第一交易T1完成更新時,更新後的對象02在時間點「c」被寫入資料庫覆蓋該對象的第一版本。當第二交易T2完成更新時,更新後的對象03在時間點「d」被寫入資料庫覆蓋由第一交易T1執行的更新02。
當例如對象是一個由兩個不同用戶(T1,T2)進行了修改的文件時,在第二用戶T2的更新03中丟失了由第一用戶T1進行的修改02。
上述操作的順序為「讀,寫,寫」,這就造成了衝突。
這個問題可以通過例如利用傳統的二階段鎖定來解決。由於將要執行的交易是一個更新交易,也就是一個改變交易,所以第一交易T1在對象0上設置一個排它鎖。第二交易T2將不能訪問對象0,直到第一交易T1已被提交並解除排它鎖為止。
圖2示出了另一種被稱為錯讀(dirty read)的情況,其中第一交易T1在時間點「f」訪問一個對象04並讀取該對象,而第二交易T2已在較早的時間點「e」改變了對象04。第二交易T2在稍後的時間點「g」對對象05進行了一次以上的改變。由於讀出的對象04不具有最後的版本05的內容,從而由第一交易T1執行的讀出操作被稱為一次錯讀。
在這種情況下所執行的操作順序為「寫,讀,寫」,這就造成了所示的衝突。
也可以通過第二交易T2在對象04上設置一個排它鎖來解決這個問題,因為該交易是一個數據改變交易,從而拒絕讀交易T1訪問所述對象。
圖3示出了被稱為不可重複讀取的第三種情況,其隱含了第一交易T1兩次讀取一個對象0,第一次是在第二交易T2更新對象07的時間點「I」之前的時間點「h」讀取對象06,然後是第一交易T1在時間點「j」第二次讀取對象07。由第一交易T1進行的兩次不同讀取將產生兩個不同的值06,07,並且由於第一次讀取是不可重複的,所以第一次讀取的結果是不能重新獲得的。
這個操作的順序為「讀,寫,讀」,這就造成了所示的衝突。
由於該交易是一個未變交易,可以通過在第一次讀取的過程中設置一個共享鎖定來防止這個問題,該共享鎖定防止改變交易T2得到一個排它鎖,從而防止了更新該對象。
在ISBN為1-55860-190-2,由Morgan Kaufmann於1993年出版,作者為Jim Gray和Andreas Reuter的「Transaction ProcessingConcepts and Techniques」一書中更早地詳細描述了上述各種情況。
本發明涉及的問題與上面第三種情況所描述的不可重複讀取問題相似,不同的是需要讀取不同的對象。
我們把這個問題稱為非阻塞讀取問題,下面將參照圖4進行說明。圖4示出了第一交易已請求訪問多個不同對象,例如對象10,20和30。這些對象中的兩個,10和30彼此相關。
第一交易T1在第一時間點「k」讀取對象101,在第二時間點「1」讀取對象201,和在第三時間點「n」讀取對象301。
第二交易T2在位於第三時間點「n」之前和第一時間點「k」之後的一個時間點「m」更新兩個對象102和302。
這樣,第一交易T1就見到了對象10的第一版本101和對象30的第二版本302,這兩個版本在兩個對象10,30之間的相關關係上是互不一致的。
可以通過傳統的二階段鎖定來解決這個問題,藉此或者第一交易T1利用設置在對象10,20和30上的一個共享鎖阻塞了第二交易T2,或者第二交易T2利用設置在對象10和30上的一個排它鎖來阻塞第一交易T1。
在兩種情況下都是擁有鎖定的交易阻塞正在等待的交易。本發明的目的在於減少這種阻塞的不利影響,同時仍允許第一交易獲得三個對象10,20和30的一致圖形。
本發明涉及一種利用二階段鎖定來管理資料庫中執行的交易,其中第一階段包括請求訪問受一個交易影響的對象並在獲得改訪問後鎖定這些對象,第二階段包括交易委託和解除第一階段中設置的所有鎖定。
一個交易所執行的實際工作可以包括改變一個數據對象的操作或事件和/或不改變所述對象的操作或事件。
本發明還包括通過一個交易T1讀取一個對象01的內容並寫入改變後的內容來改變或更新一個對象的內容,從而提供對象02的一個新版本(依據圖5),其中在所述交易之前存在的對象01的版本被保留,直到不再有其它交易使用這個已有版本01為止。
以這些假設為出發點,本發明提出一個交易適於將對受影響對象的訪問保留到第二階段之後。該交易還適於在第一階段執行所有的數據改變操作,並在第二階段之後的第三階段執行儘可能多的未變操作。
一個交易可以包括各種操作。這些操作包括-打開和鎖定一個對象。這隱含了將一個對象加到由一個交易打開的對象集合中。
·導航。這隱含了讀取一個打開對象的部分內容以確定和某些其它對象的關鍵字或引用的同一性。如果該對象已被打開,則對下一個對象的訪問/導航是不成問題的。
·讀取一個屬於一個打開對象內容的值。
-將一個值寫入一個對象,例如更新一個對象。
-產生一個新的對象。這就將新的對象加入到由一個交易打開的對象集合中。
-刪除一個已有的對象。這就將被刪除的對象加入到由該交易打開的對象集合中。
·不直接與訪問該交易打開的對象相關的其它計算。
這些用短線「-」標記的操作是在某些方面進行了數據改變的操作並且這些操作必須在交易的第一階段中執行,即在提交之前執行。用黑點「·」標記的操作是未進行數據改變的操作,並且主要在第二階段之後執行,即提交之後。
依據本發明,一個交易在執行了仍不可執行的未變操作之後結束對一個對象的訪問。
圖6簡要示出了依據本發明的一個數據改變交易T1。第一階段「A」在時間點「o」開始。在這個階段,交易T1訪問受交易T1影響的對象10,20,30,在圖中用對象和交易之間的實線表示。在各個對象上設置相關鎖定,在圖中用被鎖定對象中的點表示,其中一個實心點表示一個排它鎖定e1,而一個空心點表示一個共享鎖定s1。
在所示的情況下,由於交易T1是關於這個對象的改變交易,所以第二對象20上的鎖定是一個排它鎖定e1。在剩餘對象上的鎖定是共享鎖定s1,因為交易T1是一個關於這些對象的未變交易。
交易T1在第一階段「A」執行所有的改變操作。這樣的改變在於將第二對象20從第一版本201更新到第二版本202。
在時間點「p」開始第二階段「B」。這個階段包括由交易T1解除所設置的鎖定和委託。
但是,依據本發明概念,即使在第二階段之後仍然保留相關對象的可用性。這種可用性意味著這些對象對交易T1仍是打開的,如圖中的虛線所示。
在完成第二階段「B」的同時,在時間點「q」開始第三階段「C」,其中交易T1執行剩餘的未變操作。這種操作就是前面用黑點標記的那些操作。
第三階段「C」還包括解除對象10,20,30對交易T1的可用性,即所謂的對象關閉,它是在第三階段「C」中執行的最後一個操作,即在剩餘的未變操作都已執行之後。
因此交易T1在解除了所有的鎖定,即在圖6所示的第二階段「C」之後,為未變操作提供了資料庫中相關對象的保持一致抽點列印。
這個訪問在時間上不會受限,因為這個操作基本上不會阻塞其它的交易。但是受限的因素能是存儲容量或訪問,因為這個訪問需要能夠將對象的當前版本保存在存儲器中。
為了確保將不刪除一個沒有被交易鎖定但仍對按前述交易打開的對象的版本,本發明提出通過將各對象的當前版本標記為被交易所用提供在交易的第三階段「C」中訪問一個對象,反之由刪除所述標記構成關閉。
現有技術中有多種不同的標記被交易所用的一個對象的方法。本發明不對這些方法中的任何方法構成限制,但可以應用到相應的方法中。下面將詳細描述應用到兩種最通用的將對象標記為被交易所用的方法中的實施例。
但是,這些不同的方法的共有特徵和本發明的先決條件是通過將該對象的新版本存到資料庫的不同位置並且只要所述版本被標記為被交易所用,就保存該舊版本來更新對象。
在本發明的第一實施例中,為一個對象的每個版本分配一個計數器,所述計數器在一個交易訪問這個版本,如設置一個鎖定時加1或遞增,而在一個交易不再需要訪問所述對象,如解除一個鎖定時減1或遞減。
在這種交易管理中,本發明提出在這個標記存在時,計數器不減1,直到在圖6中的第三階段「C」結束時刪除該標記為止,並且在圖6中的第二階段「B」結束時與解除的鎖定無關。
在這種情況下,如果當前版本沒有構成該對象的最新版本,則隨著計數器減為0而刪除該對象的當前版本。
這意味著該交易隨同解除鎖定而被提交,這在交易完成了所有的改變操作後立即實現,但是依據現有技術,計數器不會減1並且計數器不會發生減少,直到該交易不再需要訪問該對象版本為止,這種情況發生在交易已執行了剩餘未變操作和/或交易不再需要訪問這些對象時。
依據本發明的另一個實施例,為每個交易分配一個表示交易開始時間的時間標記,在當前對象版本沒有用最近交易的時間標記進行標記時,每個交易用其各自的時間標記來標記相關對象的各版本,而只要有任何比分配給當前版本的最新時間標記更早或一樣早的交易還沒有結束,就要保留一個對象的每個版本。
在這樣的交易管理中,本發明提出標記由各對象的當前版本上的時間標記組成,並且在關閉對對象的訪問時,認為該交易結束。
這意味著在圖6中的第二階段「B」結束時,交易隨同解除鎖定而被提交,只要交易完成了所有的改變操作就會這樣做,但認為該交易在提交之後仍然可用,即時間標記仍是有效的,這意味著由於具有其時間標記的交易仍然有效,所以不能刪除當前文本。直到該交易不再需要訪問這些對象時才刪除該交易的時間標記,這在交易已經完成了所有的改變操作和/或交易不再需要訪問執行對象,即圖6中的第三階段「C」結束時發生。
本發明的效果依涉及的交易類型的不同而不同。下面將描述幾種本發明認為具有特殊性能的交易。
這種交易的第一個例子是只包括未變操作並且所用的鎖定是一個共享鎖定,例如一個只讀交易。
這個交易允許其它交易在解除該共享鎖定之前訪問相關的對象,儘管需要限制所述交易只能讀取這些對象。
如圖7所示,由於鎖定這些對象的時間周期「A」,「B」只是提供了訪問所有相關對象和鎖定這些對象「A」,然後提交該交易並解除鎖定「B」所花費的時間,所以時間周期相對較短。由於將不執行改變操作,該交易在設置了所有的鎖定之後被馬上提交,鎖定被解除,然後在各對象的當前版本上保留標記以表示這個版本可以不被刪除。
因此,在此整個周期中,由於只設置了共享鎖定而使當前對象對其它未變交易是可用的,並且對提交後的改變交易也是直接可用的。
直到相關對象被關閉的時間點「C」為止的時間周期將隨著將要執行的未變操作而改變。
圖8示出了依據本發明而特別受益的交易T1的第二個例子。在這個交易中,已知所有對象1O,2O,3O在開始該交易之前被打開,這個交易被認為是一個組打開交易。當然,這個交易可以包括改變操作和未變操作。
與該交易是否同時包括改變操作和未變操作或是否只包括未變操作無關,相關的對象將在第一階段「A」被打開。
圖9示出了依據本發明而特別有益的交易T1的第三個例子。在這個交易中,已知在該交易開始之前有一個或多個起始對象10,20,30,而且這些起始對象中的一個或多個涉及另外的一個或多個與該交易相關的對象40,50,60,70,這就是所謂的遞歸打開交易。
不管這個交易是否同時包括改變操作和未變操作或是否只包括未變操作,起始對象10,20,30將在第一階段「A」被打開,在第一階段「A」估計對其它對象的引用,即在起始對象10,20,30中導航應當在第一階段「A」攜帶,並在第一階段「A」應打開任一其它的對象40,50,60,70。
在特定的情況下,在第一階段「A」中還要估計從另外一些對象40,50,60,70到仍然是其它對象80,90,100,110的引用,並根據可能的其他引用在第一階段A應打開仍然是其他對象80,90,100,110等。
本發明提出在第一階段「A」應當執行一個未變操作和一個導航操作,這對找到受影響的對象並在第一階段「A」鎖定是必要的。
對於限制找到所有對象所需的時間周期和限制一個交易打開的對象數目,依據本發明可以允許從原先打開的對象對另外一些對象產生引用的對象的允許等級數被預定和限制為「D」。在圖9中,被限制為「D」的允許等級數為2,因此對象80,90,100,110都不能被打開。
圖10示出了依據本發明而特別有益的交易T1的第四個例子。在這個交易中,已知在該交易開始之前有一個或多個起始對象10,20,30,這些起始對象中的一個或多個涉及另外的一個或多個與該交易相關的對象40,50,60,70,而且為當前起始對象10,20,30中的一個預定起始對象30估計對其它對象的任一引用,這就是所謂的路徑開始交易。
只有從對象30開始的路徑或分支將被估計,並且由圖10中的標記「E」進行選擇。
不管這個交易是否同時包括改變操作和未變操作或是否只包括未變操作,在第一階段「A」中將打開當前的起始對象,進行對預定起始對象30的導航並應打開任一其它的相關對象70。
另外,在第一階段「A」中還將執行對從對象70到其它對象100,110的引用的估計,並根據可能的引用而打開可能涉及的仍然是其它對象100,110等。
在這種情況下還可以通過允許從原先打開的對象對另外一些對象產生引用的對象的允許等級數被預定和限制為「D」來限制找到所有對象所需的時間和由一個交易打開的對象數目。
圖8,9和10隻是為了示出受影響的對象在第一階段「A」中的打開過程,應當理解這些圖中所示的不同階段「A」,「B」,「C」之間的相對尺寸關係對本發明來說是沒有意義的。
在所有可能的情況中,所提出的交易要經過下述進程-創建交易;-在沒有中間的耗時計算的情況下打開多個對象;
-當由於其它交易而造成對一個或多個對象的訪問被阻塞時,放棄該交易並稍後再試;-在對所有相關對象進行訪問時,執行所有的改變操作和任一必需的未變操作;-在保持對相關對象的未變訪問的同時,提交該交易並解除所有的鎖定;-為該交易提供相關對象的一致抽點列印而不擾亂其它交易或被所述其它交易擾亂;-執行剩餘的未變操作;以及-解除對相關對象的訪問。
儘管關於與完全非鎖定系統相關的實施和執行的簡易性使得這種折衷可接受並適合於特定應用程式,但是依據本發明的交易管理仍然不是完全非阻塞的,因為有特定的鎖定發生在第一階段「A」和第二階段「B」中。
應當理解對二階段鎖定的限制意味著還涉及包括兩個階段以上的設置鎖定和解除鎖定的交易管理,儘管其中一個階段包括訪問一個受交易影響的對象的請求並在獲得該訪問後鎖定所述對象,而另一個階段包括提交該交易並解除設置在第一階段中的所有鎖定,而不管與包括在該交易管理中的任一其它階段。
應當理解本發明不限於上述各實施例,在不偏離由權利要求書限定的發明保護範圍的情況下,對本發明進行的修改是允許的。
權利要求
1.一種能夠使一個資料庫中的多個對象被一致讀取的方法,其中通過在兩個階段上鎖定來管理交易,其中第一階段包括一個訪問受交易影響的對象的請求,並在獲得該訪問後鎖定該對象,其中第二階段包括提交該交易並解除第一階段中設置的所有鎖定,其中由所述交易所執行的實際工作包括改變一個對象的操作和/或不改變一個對象的操作,其中通過將改變後的內容寫到該對象的一個版本所述交易來實現更新或改變一個對象的內容,其中對象在交易之前的版本被保留,直到不再有其它交易使用當前或現有版本為止,以及其中交易在第一階段中執行所有的數據改變操作,其特徵在於交易在第二階段之後保持用於讀取相關對象版本的訪問;所述交易在第二階段之後儘可能執行最大量的未變操作;以及所述交易在執行了所述未變操作之後關閉對所述對象的訪問,從而所述方法在解除所述鎖定之後,在資料庫中提供了受影響對象的一致抽點列印。
2.如權利要求1所述的方法,其特徵在於在第二階段之後對一個對象的訪問在於將相應對象的當前版本標記為被該交易所用,以及關閉對這些對象的訪問在於刪除所述標記。
3.如權利要求2所述的方法,其中為一個對象的每個版本分配一個計數器,所述計數器在一個交易訪問所述版本,如設置一個鎖定時逐一增加,在一個交易不再需要訪問所述版本,如解除一個鎖定時逐一減少,其特徵在於所述標記在於所述計數器的增加,而所述計數器的減少則刪除了所述標記。
4.如權利要求2所述的方法,其中為每個交易分配了一個時間標記,所述時間標記表示該交易開始的時間,其中當沒有更新的交易對對象的該版本進行時間標記時,每個交易以其時間標記標記出受影響對象的相應版本,其中只要還有比分配給所述版本的時間標記更早或一樣早的交易尚未結束,就允許保留一個對象的每個版本,其特徵在於所述標記在於相應對象的所述版本上的所述時間標記,並且認為在關閉對所述對象的訪問時,所述交易將被終止。
5.如上述任一權利要求所述的方法,其特徵在於所述交易只包括未變操作;以及所述鎖定是一個共享鎖定,這意味著在所述共享鎖定被解除之前,其它交易能夠對所述對象進行訪問,雖然限制為只能對所述對象進行讀取。
6.如權利要求1至4中任一所述的方法,其特徵在於在所述交易開始之前已知所有的對象將被打開,所述對象在所述第一階段被打開。
7.如權利要求1至4中任一所述的方法,其特徵在於在交易開始之前已知有一個或多個起始對象,其中所述起始對象中的一個或多個涉及另外的一個或多個對象;在所述第一階段打開所述起始對象;在所述第一階段估計對其它對象的任一引用,並在所述第一階段打開涉及的其它對象;還在所述第一階段估計從所述其它對象到另一些仍然是其它對象產生的引用;並在所述第一階段打開仍然是其它對象等。
8.如權利要求7所述的方法,其特徵在於預定從來自較早打開的對象到另一些對象的引用產生的對象的允許等級數。
9.如權利要求1至4中任一所述的方法,其特徵在於在交易開始之前已知有一個或多個起始對象,其中所述起始對象中的一個或多個涉及另外的一個或多個對象,在所述第一階段打開所述起始對象,在所述第一階段根據所述起始對象中的一個預定對象來估計對另外一些對象的任一引用,並在所述第一階段打開另外一些對象;在所述第一階段估計從所述第一對象又到仍然是另外一對象的引用;並在所述第一階段打開仍然是其它對象等。
10.如權利要求9所述的方法,其特徵在於預定從來自較早打開的對象到另一些對象的引用產生的對象的允許等級數。
全文摘要
本發明涉及一種能夠使一個資料庫中的多個對象(10,20,30)被一致讀取的方法。該方法適用於在一個資料庫中通過在兩個階段上鎖定來管理交易,第一階段(A)包括一個訪問受交易影響的對象(10,20,30)的請求,並在獲得該訪問後鎖定該對象。第二階段包括提交該交易並解除第一階段中設置的所有鎖定,在一個交易中所執行的實際工作包括改變一個對象的操作和/或不改變一個對象的操作,其中通過將改變後的內容寫到該對象的一個版本來更新或改變一個對象的內容,並且對象在交易之前的版本被保留,直到不再有其它交易使用當前或現有版本為止,交易在第一階段(A)中執行所有的數據改變操作。依據本發明,交易在第二階段(B)之後保持對對象(10,20,30)的訪問,所述交易在第二階段(B)之後的第三階段(C)儘可能執行最大量的未變操作,然後交易關閉對所述對象的訪問,從而本發明的方法在解除所述鎖定之後,在資料庫中提供了受未變操作影響的對象(10,20,30)的一致抽點列印,即在第二階段(B)之後的第三階段(C)。
文檔編號G06F12/00GK1294714SQ9980426
公開日2001年5月9日 申請日期1999年1月21日 優先權日1998年1月22日
發明者D·A·比約爾尼爾斯特德特 申請人:艾利森電話股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀