專利名稱:寬松當前性約束的制作方法
技術領域:
本發(fā)明一般涉及計算機,尤其涉及事務處理系統(tǒng)和方法。
背景
在現(xiàn)今企業(yè)中,資源管理系統(tǒng)如數(shù)據(jù)庫系統(tǒng)或數(shù)據(jù)庫管理系統(tǒng)很普遍。數(shù)據(jù) 庫系統(tǒng)管理定義數(shù)據(jù)庫狀態(tài)的數(shù)據(jù)。通常,這些系統(tǒng)提供由許多用戶各自和同時對 信息的集中存取。更復雜的事情是這些用戶在地理上可能是分散的,例如跨國或跨 洲。作為例子,在旅游業(yè),航空訂票系統(tǒng)和酒店管理系統(tǒng)接收大量涉及購票或訂房 的請求。這些系統(tǒng)必須存儲大量關于座位或房間分配、當前預訂、費率等等的信息, 并且使得全球數(shù)百萬人一經(jīng)請求即可獲得這些信息。在另一個例子中,金融機構如 銀行使用數(shù)據(jù)庫系統(tǒng)來為其所有顧客維護賬戶和結算信息。此外,這些系統(tǒng)必須迅
速響應來自出納員、自動柜員機(ATM)、其他銀行以及顧客計算機的對這些信 息的請求。
數(shù)據(jù)庫系統(tǒng)不只是提供查詢或只讀功能。它們還必須支持若干能改變數(shù)據(jù)庫 狀態(tài)或內(nèi)容的基本事務。具體而言,數(shù)據(jù)可以被插入、選擇、更新、修改或刪除。 當多個用戶同時試圖與系統(tǒng)互動時,這很富有挑戰(zhàn)性。例如,多人可能同時試圖預 訂一個航班上的座位。用戶之間的沖突會導致數(shù)據(jù)庫包含錯誤信息,例如不正確的 座位分配和航班的超額訂出等等。事務的正確執(zhí)行能保持數(shù)據(jù)庫的完整性或正確 性。按照慣例,這被稱為事務的并發(fā)性控制或正確性準則。
并發(fā)性控制系統(tǒng)和方法確保稱為可串行性的特性得以維持。更具體地,并發(fā) 性控制確保一組事務的執(zhí)行等同于那些事務的串行執(zhí)行。因此, 一些事務可以并行 或并發(fā)執(zhí)行,只要最終效果就像是這些事務被一項接一項地串行執(zhí)行一樣,從而大 大提高性能。
事務鎖可以被用來提供并發(fā)性控制。更具體地,事務是包含一個或多個半序 操作(例如,讀取,寫入……)的多個工作單元。在事務可以發(fā)布引起數(shù)據(jù)庫中的 數(shù)據(jù)永久改變的提交請求之前,所有事務操作都必須成功地完成。否則,該事務必須被異常中止,而且所做的任何改變必須被回退或移除。事務使用鎖來控制對數(shù)據(jù) 的存取。事務可以在其與數(shù)據(jù)交互時鎖定數(shù)據(jù)或一段存儲器。該鎖阻止另一事務鎖 定該數(shù)據(jù),從而還在持有該鎖的事務正在使用數(shù)據(jù)時阻止該另一事務讀取或改變該 數(shù)據(jù)的值。當事務需要與數(shù)據(jù)交互時,它可以從例如服務器請求鎖。該請求可以被 準予、延遲或拒絕。如果它被準予,那么事務獲得鎖并可以開始對數(shù)據(jù)進行操作。 如果它被延遲,事務只是等候響應。如果它被拒絕,則事務通常將會異常中止。
時間戳也可以被用來提供對所讀取數(shù)據(jù)的當前性的控制。鎖定處理執(zhí)行時的 并發(fā)性控制,而時間戳可以被用來預先對事務進行排序。時間戳是表示時間的唯一 性固定數(shù)字。在執(zhí)行之前,可以給每一事務都分配一唯一性的時間戳,或將其與一 唯一性的時間戳相關聯(lián)。然后時間戳能決定執(zhí)行的串行順序。因此,如果給事務
Ti分配了時間戳TSi,其中TSi小于與事務Tj相關聯(lián)的時間戳TSj,那么系統(tǒng)必須 確保執(zhí)行調度等同于其中Ti在Tj之前被執(zhí)行的串行調度。為此,可將時間戳與數(shù) 據(jù)項相關聯(lián),例如寫入時間戳表示已成功對數(shù)據(jù)項進行寫入的事務的最大時間戳, 以及讀取時間戳表示已成功對數(shù)據(jù)項進行讀取的事務的最大值。然后,時間戳排序 協(xié)議可以被用來確??纱行?。
事務的另一基本特性是持久性。 一旦事務提交,就意味著其成功完成,于是, 對存儲狀態(tài)的更改應被保持以使得它們能經(jīng)受故障(例如,停電、系統(tǒng)崩潰……)。 數(shù)據(jù)庫系統(tǒng)裝備有持久數(shù)據(jù)存儲,例如在磁盤上。然而,在與存儲在磁盤上的數(shù)據(jù)
庫數(shù)據(jù)交互所需要的時間的意義上開銷很大。因此,高速緩存(例如,服務器、髙 速緩存)被用來存儲被較頻繁存取的數(shù)據(jù)拷貝。高速緩存的使用減少了數(shù)據(jù)庫存儲 介質需要被存取的次數(shù),從而可以極大地提高使數(shù)據(jù)可用的速度。例如,新聞組織 的web服務器可以緩存主頁和所有熱門文章以確??梢匝杆贆z索。然而,系統(tǒng)必 須確保高速緩存與數(shù)據(jù)庫保持一致,因其可能被用戶事務所改變。因此,數(shù)據(jù)庫系 統(tǒng)必須監(jiān)視高速緩存,并且一發(fā)生改變即觸發(fā)更新事務以在數(shù)據(jù)庫上實現(xiàn)改變。此 外,數(shù)據(jù)庫系統(tǒng)然后能刷新其他所維護的被緩存的拷貝。
概要
以下給出本發(fā)明的簡化概要,以提供對本發(fā)明一些方面的基本理解。此概要 不是本發(fā)明的詳盡縱覽。它并不是要標識本發(fā)明的關鍵性/決定性要素或界定本發(fā) 明的范圍。其唯一目的是以簡化的形式給出本發(fā)明的一些概念,作為后面給出的更 加詳細的描述的序言。簡言之,本發(fā)明涉及用于更新事務的寬松當前性系統(tǒng)和方法。本發(fā)明對其中 一些數(shù)據(jù)因性能或可縮放性原因被緩存的多層數(shù)據(jù)庫應用系統(tǒng)尤其有用。這樣的例 子包括但不限于針對因特網(wǎng)上的大量用戶的電子商務、拍賣或打包事務。在這類系 統(tǒng)中,準許只讀事務或查詢讀取高速緩存中的數(shù)據(jù)。然而,信息可能稍微有點過期, 但這對查詢來說還令人滿意。與之形成對比,按照慣例不允許更新事務從高速緩存 讀取,因為基于事務處理中嚴格的正確性概念即可串行化,它會導致不正確的執(zhí)行。 然而在許多情形中,這一嚴格的正確性概念的強壯程度超出了需要。即是說,更新 事務能容忍稍微陳舊的數(shù)據(jù),只要其滿足某些當前性或新鮮度約束,例如過期不超 過10秒。本發(fā)明提供一些特定的新鮮度約束,以及用于支持那些和其他當前性約 束的機制和方法。
根據(jù)本發(fā)明一個方面,提供一種數(shù)據(jù)庫更新系統(tǒng)。此數(shù)據(jù)庫更新系統(tǒng)包括接
收器組件、處理組件和約束驗證系統(tǒng)。接收器組件接收來自用戶、應用程序或其他
實體的更新事務并將其提供給處理組件。處理組件通過從高速緩存讀取陳舊數(shù)據(jù)并 將其寫入到例如持久數(shù)據(jù)存儲中來處理該更新事務。約束驗證組件與處理組件聯(lián)合
工作,以確保與事務相關聯(lián)的所有新鮮度約束均被滿足。因此,約束驗證組件可以 維護關于能被用來測試新鮮度約束的事務的信息。
根據(jù)本發(fā)明另一個方面,提供一種用于對執(zhí)行更新的事務檢查寬松當前性約 束的方法。更具體地,可以從高速緩存讀取符合當前性約束的數(shù)據(jù)。所讀取的數(shù)據(jù) 隨后可以被用來更新數(shù)據(jù)庫數(shù)據(jù)。在提交時,可以在將數(shù)據(jù)保存到持久存儲之前再 次檢查當前性約束。
根據(jù)本發(fā)明一個方面,可以規(guī)定并強加時間和數(shù)值邊界約束。時間邊界約束 能限定數(shù)據(jù)項版本變?yōu)闊o效的時刻與它被讀取的時刻之間的時間。例如,讀取一個 最多過期十秒的版本是可接受的。類似地,數(shù)值邊界約束能規(guī)定數(shù)值容差。例如, 數(shù)值邊界約束可以要求所讀取的數(shù)值在有效版本的特定值(例如,10%)之內(nèi)。
根據(jù)本發(fā)明另一個方面,可以對多個數(shù)據(jù)項規(guī)定并強加漂移約束。更具體地, 本發(fā)明提供時間漂移和合計值漂移約束。漂移約束規(guī)定數(shù)據(jù)項間的相互一致性。時 間漂移約束可以要求,對于每兩個數(shù)據(jù)項,其版本要在彼此的規(guī)定時段內(nèi)被讀取。 合計值漂移約束可以要求,在所讀取的一組數(shù)據(jù)上計算所得的平均值是在當前時刻 之前的規(guī)定時刻的最近值的規(guī)定容差之內(nèi)。
根據(jù)本發(fā)明的又一個方面,引入有效截止(valid-till)時間戳以便于規(guī)定和強
加某些類型的新鮮度約束。有效截止時間戳提供所存儲數(shù)據(jù)和其拷貝的有效區(qū)間的上界。換句話說,它是可以與數(shù)據(jù)項的下一版本相關聯(lián)的最小時間戳。為實現(xiàn)上述及相關目的,結合下列說明和附圖,在此描述本發(fā)明的某些示例 性方面。這些方面指示可以實踐本發(fā)明的各種方法,所有這些均旨在為本發(fā)明所涵 蓋。結合附圖一起考慮下面的發(fā)明具體說明,本發(fā)明的其他優(yōu)點和新穎特征將變得 顯而易見。
圖1是依照本發(fā)明一個方面的一種事務處理系統(tǒng)的方框圖。 圖2是依照本發(fā)明一個方面的一種復制數(shù)據(jù)庫系統(tǒng)的方框圖。 圖3是依照本發(fā)明一個方面的主管理器的方框圖。圖4是依照本發(fā)明一個方面的一種并發(fā)性控制系統(tǒng)的方框圖。 圖5是依照本發(fā)明一個方面的一種并發(fā)性控制系統(tǒng)的方框圖。 圖6是重疊和不相交區(qū)間的圖解。圖7是依照本發(fā)明一個方面的一種新鮮度約束生成系統(tǒng)的方框圖。圖8是依照本發(fā)明一個方面的一種接口系統(tǒng)的方框圖。圖9是依照本發(fā)明的一個方面的一種更新方法的流程圖。圖10是依照本發(fā)明一個方面的一種測試時間邊界當前性約束的方法的流程圖。圖11是依照本發(fā)明一個方面的一種測試時間邊界當前性約束的最優(yōu)化方法 的流程圖。圖12是依照本發(fā)明一個方面的一種測試數(shù)值邊界新鮮度約束的方法的流程圖。圖13是依照本發(fā)明一個方面的一種測試有限漂移當前性約束的方法的流程圖。圖14是依照本發(fā)明一個方面的一種測試有限漂移當前性約束的最優(yōu)化方法 的流程圖。圖15是依照本發(fā)明一個方面的一種測試合計值漂移約束的方法的流程圖。圖16是依照本發(fā)明一個方面的一種當前性約束規(guī)定方法的流程圖。圖17是依照本發(fā)明一個方面的一種用于支持當前性約束的刪除操作的流程圖。圖18是例示依照本發(fā)明一個方面的一種合適的操作環(huán)境的示意性方框圖。圖19是本發(fā)明可與之交互的范例計算環(huán)境的示意性方框圖。具體說明現(xiàn)在參考附圖描述本發(fā)明,其中始終用相同的附圖標記標示相同或相應的要 素。然而應該理解,本發(fā)明的附圖和具體說明并不示圖將本發(fā)明限定于所公開的特 定形式。確切而言,目的在于覆蓋落在本發(fā)明的精神和范圍之內(nèi)的所有修改、等效 和替換方案。如在本申請中所使用的,術語"組件"和"系統(tǒng)"等意指與計算機相關實體, 無論是硬件、硬件與軟件的組合、軟件、還是執(zhí)行中的軟件。例如,組件可以是但 不限于,在處理器上運行的進程、處理器、對象、實例、可執(zhí)行碼、執(zhí)行的線程、 程序和/或計算機。作為例示,運行在計算機上的應用程序和該計算機都可以是組 件。 一個或多個組件可以駐留在一個進程和/或執(zhí)行的線程中,并且,組件可以本 地化在一臺計算機內(nèi)和/或分布在兩臺或更多的計算機之間。措詞"示例性"在此被用來表示作為一個例子、實例或例示。此處被描述為 "示例性"的任何方面或設計并不一定要被解釋為優(yōu)于或勝過其他方面或設計。依照此后所述的本發(fā)明一個或多個方面,基于人工智能的系統(tǒng)(例如,顯式 和/或隱式訓練的分類器)可以與執(zhí)行推理和/或概率確定和/或基于統(tǒng)計的確定結合 使用。如在此所用的,術語"推理"(名詞或動詞)通常指從通過事件和/或數(shù)據(jù) 捕獲的一組觀察來推導或推理系統(tǒng)、環(huán)境和/或用戶的狀態(tài)的過程。推理可以被用 來識別特定上下文或活動,或者可創(chuàng)建例如狀態(tài)上的概率分布。推理可以是概率性 的,即是說,所關心的狀態(tài)上的概率分布的計算是基于對數(shù)據(jù)和時間的考量。推理 也可指用于從一組事件和/或數(shù)據(jù)構成高層事件的技術。這類推理產(chǎn)生的結果是從 一組觀察到的事件和/或存儲的事件數(shù)據(jù)構造出新的事件或動作,無論這些事件是 否在時間上密切相關,也無論這些事件和數(shù)據(jù)是否來自一個或多個事件和數(shù)據(jù)源。 各種分類方案和/或系統(tǒng)(例如,支持矢量機、神經(jīng)網(wǎng)絡、專家系統(tǒng)、貝葉斯信任 網(wǎng)絡、模糊邏輯、數(shù)據(jù)融合引擎……)都可以和結合本發(fā)明在執(zhí)行自動和/或推理 動作時一起使用。此外,通過使用標準編程和/或工程技術可將本發(fā)明實現(xiàn)為方法、裝置或產(chǎn)品, 來生產(chǎn)出用于控制計算機實現(xiàn)所公開的發(fā)明的軟件、固件、硬件或其任意組合。此 處所用的術語"產(chǎn)品"旨在涵蓋可以從任何計算機可讀設備、載波或介質訪問的計 算機程序。例如,計算機可讀介質可以包括但不限于磁存儲設備(例如,硬盤、軟盤、磁帶……)、光盤(例如,緊湊盤(CD)、數(shù)字通用盤(DVD)……)、智能卡、和閃速存儲器設備(例如,卡、棒、鑰匙驅動器……)。此外,應該理解, 載波可以用于攜帶計算機可讀電子數(shù)據(jù),例如在傳送和接收電子郵件或訪問網(wǎng)絡如因特網(wǎng)或局域網(wǎng)(LAN)時使用的電子數(shù)據(jù)。當然,那些本領域內(nèi)的技術人員將 認識到,可以對這一配置進行許多改動而不會背離本發(fā)明的范圍或精神。首先轉到圖1,圖中示出了依照本發(fā)明一個方面的事務處理系統(tǒng)100。系統(tǒng) 100包括接收器組件110、處理組件120和約束驗證組件130。接收器組件110接 收一個或多個事務。事務是一個工作單元,包括作為一個單元一起被執(zhí)行的一組相 關操作或指令。為了確保數(shù)據(jù)完整性,要么事務中的所有操作都執(zhí)行,要么所有操 作都不執(zhí)行。作為例子,事務可以對應于在一個或多個銀行賬戶上的多個操作。該 事務可以包括記入一個賬戶的借方并記入另一個賬戶的貸方。記入一個賬戶的借方 以及記入另一個賬戶的貸方的動作兩者應該都被完成,否則應該都不被執(zhí)行,這至 少是因為不希望記入了一個賬戶的借方而沒有記入另一個賬戶的貸方。否則,資金 就會丟失。接收器組件110能接收/檢索來自設法從數(shù)據(jù)庫檢索信息、更新數(shù)據(jù)庫 中的信息、把新信息加入數(shù)據(jù)庫、從數(shù)據(jù)庫刪除信息或者與其交互的一個或多個客 戶端應用程序的事務,這些事務包括但不限于,電子表單、電子郵件、表格管理器、 web瀏覽器和數(shù)據(jù)庫接口軟件等,。這些應用程序可以受人工操作員控制,可以自 動運行,或者受另一個應用程序或實體控制。根據(jù)本發(fā)明的一個方面,接收器組件 110所接收到的事務可以是更新事務。通常,更新事務可以用新數(shù)值來更新數(shù)據(jù)源。 例如,更新事務可以直接更新數(shù)據(jù)源,或者可以先更新數(shù)據(jù)庫數(shù)值的高速緩存之后 再將所緩存的更新應用到數(shù)據(jù)源。處理組件120被通信地耦合到接收器組件110, 它能夠接收和/或檢索來自接收器組件110的事務。 一旦接收到事務,處理組件就 可以處理該事務。在更新事務中,這可以對應于從高速緩存讀取數(shù)據(jù),然后將數(shù)據(jù) 寫入數(shù)據(jù)庫。約束驗證組件130可以對事務操作驗證和/或強加約束。在處理事務 及其操作時,處理組件120可以與約束驗證組件130交互。根據(jù)本發(fā)明的一個方面, 約束可以包括與個體事務相關聯(lián)的新鮮度約束。新鮮度約束涉及用于處理陳舊或過 期數(shù)據(jù)并確保事務可串行性的寬松當前性要求??梢栽谧x取數(shù)據(jù)數(shù)值時、在處理期 間以及在提交時驗證這類約束。在電子商務站點中廣泛使用拷貝。例如,考慮一個拍賣站點。在瀏覽一個類 別中的拍賣布告時,很明顯該數(shù)據(jù)(例如,項目價格、綁定數(shù)目……)是稍微過期 的。然而,大多用戶都了解并接受這一點,只要當他們在個體項目上點擊時能看到完整的當前數(shù)據(jù)即可。作為另一個例子,下列查詢返回具有指定標題的書的概要SELECT LID, I.COST, I.SUB正CT, I.ISBN, LINSTOCK, A.FNAME, A丄NAME FROM ITEM I, AUTHOR AWHERELAID = A.AID AND I.TITLE = "Database Management Systems"不同用戶對這一查詢可能有不同的新鮮度要求。例如,用戶R打算購買所有這些書籍,并調用事務K以獲得最新查詢結果。用戶"正在瀏覽并運行以允許LINSTOCK列不同步為代價提供快速響應時間的事務72。第三個用戶W正在通過定期運行查詢K并記錄結果來研究書的價格和庫存拷貝數(shù)目之間的關系。在第三 種情形中,結果的陳舊是可接受的,只要它反映了一致的數(shù)據(jù)庫快照(即是說,在 某一時間點保持一致的數(shù)據(jù)庫狀態(tài))即可。事實上,這一保證的較弱版本——只要 求針對給定項檢索到的所有行都反映同一快照,而不同的項目可能來自不同的快 照——可能已經(jīng)足夠。上述例子例示了本發(fā)明的一個方面解決的一種情景。這種情景通常是由于有 應用或中間層緩存被層疊在系統(tǒng)如數(shù)據(jù)庫系統(tǒng)上而發(fā)生。然而,準許更新事務讀取 過期數(shù)值是存在問題的。針對事務的常規(guī)正確性準則是單一拷貝可串行性,即是說 一次執(zhí)行應該等同于在單一拷貝數(shù)據(jù)庫上的一次串行執(zhí)行。上述例子中"和w 的事務違反這一準則。例如,設想事務K訂購一個項目,從而改變該項目的LINSTOCK,而另一事務K隨后更新了該項目的價格。如果現(xiàn)在由用戶"2發(fā)布的 事務7U賣取INSTOCK的較舊緩存數(shù)值以及COST的當前數(shù)值,則它會看到在單 一拷貝數(shù)據(jù)庫上的串行執(zhí)行中決不會出現(xiàn)的數(shù)據(jù)庫狀態(tài)。本發(fā)明公開了用于允許更新事務讀取過期拷貝的事務模型的并發(fā)性控制系統(tǒng) 和方法。特別地,每一操作可攜帶一新鮮度約束,該新鮮度約束規(guī)定拷貝必須有多 新才能被讀取。此外,本發(fā)明擴展了對事務和可串行性的常規(guī)理解,以解決由新鮮 度約束證明過期的讀取。在此提供用于可以更新數(shù)據(jù)而從服從不同新鮮度約束的緩存拷貝讀取的事務 正確性模型。不能使用常規(guī)的可串行性理論,因為在該理論中所陳述的所有形式的 正確性要求每一事務就像在串行單一拷貝執(zhí)行中那樣讀取數(shù)值,如果使用稍微陳舊 的復本這就不再成立。因此,需要能夠捕捉事務讀取陳舊數(shù)值時意欲何為的直覺的 一種更寬容的正確性特性。像在常規(guī)的可串行性理論中那樣,物理系統(tǒng)實現(xiàn)的正確性可以通過斷言在該 物理系統(tǒng)中每一事務的行為與在事務串行執(zhí)行的更簡單的理想系統(tǒng)中該事務的行為不可區(qū)分來定義。因此,為證明物理系統(tǒng)的正確性,至少需要做兩件事。第一, 需要定義一個反映用戶計算模型的理想系統(tǒng)。需要把這個理想系統(tǒng)的串行執(zhí)行定義 為是正確的。第二,所實現(xiàn)系統(tǒng)的執(zhí)行需要等同于該理想系統(tǒng)的某種串行執(zhí)行。數(shù)據(jù)庫可以被建模為數(shù)據(jù)項的集合。由于新鮮度約束是用戶計算模型的一部 分,因此用戶清楚事務讀取數(shù)據(jù)項的過期數(shù)值。這類過期項可以被稱為數(shù)據(jù)項的版 本。因此,在用戶模型中,數(shù)據(jù)項是一系列的版本,而計算是多版本執(zhí)行。即是說, 用戶應該理解,每當事務更新一個數(shù)據(jù)項時,就至少在概念上創(chuàng)建了該數(shù)據(jù)項的一 個新版本。此外,當事務讀取一個數(shù)據(jù)項時,它可以讀取該項的舊版本而并非最近 的版本。每次讀取操作的新鮮度約束規(guī)定哪些版本可以令人滿意。因此,理想系統(tǒng)可以是單一拷貝的多版本數(shù)據(jù)庫。單一拷貝意味著每一數(shù)據(jù) 項存在多版本的主拷貝而沒有緩存的復本。理想系統(tǒng)的正確執(zhí)行可以被定義為其中 每一讀取操作均滿足其新鮮度約束的串行多版本執(zhí)行。如果物理執(zhí)行等同于理想系 統(tǒng)的正確執(zhí)行,那么它就是正確的。這樣的正確物理執(zhí)行可以被稱為寬松當前性 (relaxed-currency, RC)的可串行化。圖2描述依照本發(fā)明一個方面的示例性復制數(shù)據(jù)庫系統(tǒng)200。系統(tǒng)200包括 主管理器210、高速緩存A管理器220和高速緩存B管理器230,如術語組件在本 文中所定義的那樣,所有這些都可以是組件。此外,系統(tǒng)200可以包括主數(shù)據(jù)庫 212、高速緩存A 222和高速緩存B 232。為了清晰起見,每個數(shù)據(jù)項都有唯一性 身份。事務可以是一組半序的活動,其中包括數(shù)據(jù)項目的讀取和寫入,以及最終的 提交或異常中止。為簡單起見,在這一節(jié)中不給出項的插入和刪除,因為它們會導 致許多注記上的復雜性。這些操作在后面各節(jié)中描述。被事務r讀取的這組項被 記為reacfee《",被T寫入的這組項被記為vm'toe"X)。每個數(shù)據(jù)項都有一組拷貝,即一個主本和零個或多個復本。主數(shù)據(jù)庫212包 括所有數(shù)據(jù)項的主本的集合。高速緩存J 222和£ 232包括一個或多個數(shù)據(jù)項的復 本的集合。每個物理拷貝有一個版本含有其最新數(shù)值。主數(shù)據(jù)庫212能被關聯(lián)到并 且通信地耦合到主管理器210。主管理器210能控制對主數(shù)據(jù)庫212的讀取和寫入 的執(zhí)行。類似地,高速緩存^ 222和高速緩存5 232能分別被關聯(lián)到并且通信地耦 合到高速緩存」管理器220和高速緩存5管理器230。高速緩存管理器^ 220和B 230能控制對它們各自的高速緩存的讀取和寫入的執(zhí)行。用戶事務(或此處也簡稱為"事務")由用戶發(fā)布。副本事務(或此處也簡 稱為"拷貝事務(c叩ier)")由主管理器210發(fā)布。每一事務可以向主管理器210或向特定高速緩存管理器220或230發(fā)布操作或指令。例如,更新事務可以從高速 緩存讀取,并通過主管理器210主數(shù)據(jù)庫212發(fā)送寫入操作,在那里操作被處理并 保存。例如,^可以經(jīng)由事務r被更新到主數(shù)據(jù)庫212,由此變成一個新版本;^。 在事務r提交后,主管理器210能為每對[x力]調用一個拷貝事務,其中x是被r 更新的數(shù)據(jù)項而5是具有x的復本的高速緩存??截愂聞兆x取主;^的數(shù)值并將該 數(shù)值寫到高速緩存S中對應的復本^中。注意,拷貝事務可以在引起該拷貝事務 被調用的事務之外運行。從主管理器210到給定高速緩存的拷貝事務可以被排序 (例如,按提交次序用管線傳輸)或者分組(例如, 一個拷貝事務包含多個[x力] 對的讀取和相應的寫入)。至少在主數(shù)據(jù)庫212包括基本數(shù)據(jù)的物化視圖,以及那些物化視圖的復本被 存儲在高速緩存如222和232中時,可以應用此處提供的技術。在這種情形中,維 持關于基本數(shù)據(jù)的物化視圖的一致性是每一事務的職責。該職責可以由用戶代碼或 系統(tǒng)代碼來完成。主管理器和高速緩存管理器可以像對待基本數(shù)據(jù)上的更新那樣對 待對物化視圖的更新。來自事務的每一讀取請求都可被要求包含一新鮮度約束。然后,服務于這一 讀取的高速緩存管理器220或230或者主管理器210應該返回滿足該讀取請求的新 鮮度約束的請求項的數(shù)值。新鮮度約束可以基于項關于其正確數(shù)值的時間漂移或數(shù) 值漂移來定義,或者基于多個項數(shù)值的相互一致性來定義,等等??梢岳脮r間戳 和快照來精確定義約束。轉到圖3,圖中示出了依照本發(fā)明一個方面的主管理器組件210的一部分。 主管理器元件210可以包括接收器組件310、時間戳創(chuàng)建組件320和轉換組件330 等等。接收器組件310能接收一項或多項準備提交的事務。基于所接收到的事務, 主管理器元件210能創(chuàng)建對應于事務T的唯一性事務時間戳"(X),其中該事務時 間戳feO)比先前利用時間戳創(chuàng)建組件310分配的所有時間戳都大。時間戳可以是 例如以秒的幾分之一精確表示當前時間的自然數(shù)的子集。主管理器210和所有高速 緩存管理器也能使用轉換組件330從每一時間戳來計算用戶可理解的掛鐘時間,反 之亦然。因此,系統(tǒng)能將使用掛鐘時間表達的新鮮度約束轉換成使用時間戳表達的 新鮮度約束。在實踐中,實時時鐘有足夠細的粒度和精確來實現(xiàn)此功能。由于時間 戳能由主管理器210單獨生成,因此可以忽略時鐘歪斜。包括主本和復本的每個拷貝都有相關聯(lián)的最后修改時間戳。最后修改時間戳 是最后提交的寫入這一拷貝的事務的時間戳。由所提交的事務寫入的拷貝的數(shù)值可以被稱為是提交版本。數(shù)據(jù)項X的拷貝X^"的每個提交版本A在半開區(qū)間[f, O上是有效的,其中t/"Wmo^/ e^3g,且f'是^的另一個提交版本的下一更大的最后修改時間戳,或 者在^沒有具更大的最后修改時間戳的版本的情況下,則是w。區(qū)間[t ^可以被 稱為x,的有效區(qū)間??煺帐怯商囟ǖ囊唤M事務產(chǎn)生的數(shù)據(jù)庫狀態(tài)。通常,該組將會是在執(zhí)行前的 提交的事務。快照能與時間戳^相關聯(lián),并且把每一數(shù)據(jù)項x映射到其有效區(qū)間包 含r的x的版本。作為用戶模型的理想系統(tǒng),除了每一數(shù)據(jù)項只有一個拷貝(因此沒有拷貝事 務)并且其所有提交版本(來自所有過去的寫入)對用戶事務都是可見的之外,正 如物理復制數(shù)據(jù)庫模型或系統(tǒng)200 (圖2)那樣。因此,新鮮度約束的語義可以參 見數(shù)據(jù)項的版本,因為每個數(shù)據(jù)項只有一個拷貝。在此所提供的新鮮度約束可以分 為三類時間邊界和數(shù)值邊界約束、漂移約束以及多語句約束。時間邊界約束能限定在版本變得無效的時刻和它被讀取的時刻(例如,讀取 時刻)之間的時間量。例如, 一個實體能指定可以接受讀取最多過期10秒的x的 版本6o朋《x:M入如果6o,《x.力j,那么必須給予此讀取x的一個有效版本,因 為該版本不能過期。為了注記簡單,省略了時間單位。時間單位可以是時間的任何 單位,但是在此將按秒討論。數(shù)值邊界約束能規(guī)定為x讀取的數(shù)值是在例如有效版本數(shù)值的特定百分比內(nèi)。 類似于時間邊界約束,可以指定數(shù)值邊界約束。例如,^z^《x:70^;約束;c的數(shù)值 在x的有效版本的百分之十范圍內(nèi)。漂移約束能提供對多個數(shù)據(jù)項的約束。當事務r讀取一個以上的數(shù)據(jù)項時,可以在^"^e《"的子集S上規(guī)定約束。 一種漂移約束的是快照一致性。借助于快 照一致性,可要求S中的諸數(shù)據(jù)項皆從記為例如^w;^/zo《"的同一快照讀取。另一 種漂移約束是有限時間漂移。這一約束可以被記為&辨A",其聲明對S中的每兩 個項;c和》所讀取的x和;;的版本在彼此的6秒內(nèi)。即是說,如果該事務讀取x 的版本x,.和y的版本乃.,那么時間戳^和^要滿足使得x,的有效區(qū)間包含^力的 有效區(qū)間包含^,并且有^-g《b。應該注意,快照一致是6=0的特殊情況。又一 種漂移約束是有限合計值漂移。這一約束可以要求在r的讀取組的子集S上計算 所得的合計值在一最近數(shù)值的某一百分比之內(nèi)。這可以用注記法^辨P, ^GG, 6%, W來表示,其中JGG是合計運算,w是時間窗。這意味著^GG(^必須是在的^%之內(nèi),其中y表示在當前時刻之前少于w秒的某個瞬間,S中的項目提交版本的(諸)數(shù)值。應該注意到并理解,時間邊界、數(shù)值邊界和漂移約束可以被組合起來。例如,事務可以設置6ow^/fx:/C9和訓op^o^x,W)。即是說,x的陳舊度最多可達十秒, 并且必須從和y—樣的快照讀取。此外,這些約束可以利用粒度和歪斜單位這兩種 正交準則進一步分類。粒度是指個體數(shù)據(jù)項、項組、項組上的合計、快照的子集和 完整快照上的約束??梢允褂美脮r間戳、后續(xù)提交的事務的數(shù)目、或數(shù)值來指定 歪斜單位。另一種新鮮度約束是多語句約束。具體而言,可以指定以當前語句的執(zhí)行之 外的時間點為參照的會話級約束。例如,事務的讀取必須看到由這一事務或這一會 話中居前的語句所做的改變。強加寬松當前性可串行性要求確保諸事務是可串行化的,并要求它們滿足其 新鮮度約束。強加RC可串行性是非平凡的("o -Wv&/),因為這些要求并不獨 立。事實上,新鮮度約束受到與事務次序如事務時間戳有關因素的影響。因此,兩 個等同的串行執(zhí)行中不同的事務次序會可能影響到是否滿足某些新鮮度約束。RC 可串行性的目標是確保每一執(zhí)行有至少一個滿足新鮮度約束的等效串行執(zhí)行。轉到圖4,圖中示出了依照本發(fā)明一個方面的并發(fā)性控制系統(tǒng)400。系統(tǒng)400 提供對應于稍后討論的本發(fā)明諸方面的基本系統(tǒng)。系統(tǒng)400不單獨強加新鮮度約 束。其提供一種支持基線同步或普通并發(fā)性控制的機制。系統(tǒng)400包含事務接收器 組件410、同步組件420、主管理器210和(多個)高速緩存管理器430。接收器 組件410接收多個事務(例如,用戶和系統(tǒng)事務)以及事務操作。接收器組件410 能接收/檢索這類事務及操作,并將其轉發(fā)到同步組件420。同步組件420控制事務 的并發(fā)執(zhí)行。尤其是,同步組件420控制并限制事務和事務操作的執(zhí)行次序。同步 組件可以實現(xiàn)鎖定方案,在該方案中根據(jù)數(shù)據(jù)項是否正在被存取來對數(shù)據(jù)存取進行 鎖定和解鎖。例如,同步組件420可以包括一個同步表以跟蹤什么數(shù)據(jù)被鎖定和被 解鎖。此外,同步有助于把時間戳分配給諸操作。同步組件通常可以參加與主管理 器210和/或(諸)高速緩存管理器430的握手協(xié)議。例如,同步組件420可以將 操作傳遞給適當?shù)墓芾砥鹘M件,等待確認,然后傳遞后續(xù)的操作。同步組件420 可以借此與主管理器210和一個或多個高速緩存管理器440交互,以分別從數(shù)據(jù)庫 和存儲器中讀取并向其寫入數(shù)據(jù)。并發(fā)性控制系統(tǒng)400可以確保若干基本事務操作的同步等。具體而言,控制系統(tǒng)400可以處理事務以及系統(tǒng)事務的拷貝事務的讀取、寫入和提交。系統(tǒng)400,具體而言是同步組件420,能以某種方式執(zhí)行這些操作以確保并發(fā)性控制。例如,考慮下列可以被系統(tǒng)400用來執(zhí)行特定操作的偽代碼 Write(x)//由用戶事務發(fā)布在x的主管理器處寫鎖定x,//保持該鎖定直至提交寫x;Commit(J)〃由用戶事務發(fā)布《新事務時間戳;// "^)大于所有在前時間戳對于wnYew《7)中的所有項x 釋放所有鎖定;Read(x)〃由用戶事務發(fā)布選擇要從中讀取x的管理器R; // R可以是x的主管理器或一高速緩存在R處讀鎖定;c;讀x;釋放讀鎖定;Copy(x,尸)〃 拷貝事務在x的主管理器處讀鎖定x,釋放讀鎖定;在高速緩存管理器P處寫鎖定xp;尸丄 AT〃假設寫入是按最后修改的次序被應用的 釋放寫鎖定寫入操作寫鎖定數(shù)據(jù)主拷貝并隨后寫入數(shù)值。寫入對主拷貝設置長期排他鎖 定,這些鎖定只有在事務提交且其更新在該主管理器處被應用之后才被釋放。因此,對每個解鎖了的主項x氣/a^-mod折^Oc,是最后提交的更新x的事務的時間戳。 讀取操作讀鎖定要讀取的數(shù)據(jù),讀取該數(shù)據(jù),然后釋放鎖定。讀取設置短期共享鎖定。這確保每一讀取操作都能看到一個被提交的數(shù)值。這也確保數(shù)據(jù)和最后修改的數(shù)值在讀取發(fā)生時是相互一致的,因為在事務更新拷貝的數(shù)據(jù)數(shù)值與更新其最后修改時間戳之間可能存在間隙。提交操作生成比所有先前的時間戳都大的新事務時間戳,并將該時間戳應用到wn'toe^)中的所有的項x。因此,對于wr/toe《0中的所有項x,給/aW-mo^/ W(x, 分配一個時間戳。此后,所有鎖定都被釋放??截愂聞沼上到y(tǒng)生成。它們設置短期共享鎖定,以便在將項的數(shù)值傳遞到目 標高速緩存之前讀取該項的主拷貝。來自拷貝事務的更新被以與提交次序一樣的時 間戳次序用管線傳輸?shù)矫總€高速緩存。由于更新被按時間戳次序傳遞到每個高速緩 存,因此高速緩存中同一數(shù)據(jù)項的接連讀取將看到時間前移。當然,如果事務從不 同高速緩存讀取相同的項,則這可能不成立。通過簡單地將高速緩存J的 /aW-mo&,《々定義為^的任意拷貝的/"W-wo^/ W(x勺的最大值就可以避免這一 問題。每一事務J;.都記憶跨其所讀取的所有高速緩存的/a仏mo^/ e^4)的最大值 m,,并將其附加到所有讀取。在處理/的讀取之前,例如,高速緩存S可以檢査 toz-moc/折e^S)》m,.。如果不滿足,則它可以等到更多更新到達并且滿足該檢查為 止,否則它可以拒絕該讀取。轉到圖5,圖中示出了依照本發(fā)明一個方面的并發(fā)性控制系統(tǒng)500。類似于圖 4的系統(tǒng)400,系統(tǒng)500包括接收器組件410、同步組件420以及主管理器210和 (多個)高速緩存管理器430。接收器組件410能接收和/或檢索一個或多個事務以 供處理。 一經(jīng)接收,接收器組件就可以將事務轉發(fā)給同步組件420。然后,同步組 件420能協(xié)調事務和相關聯(lián)操作的處理以確保可串行性。具體而言,同步組件420 能有選擇地把事務操作(例如,讀取、寫入、復制……)發(fā)送到主管理器210、(諸) 高速緩存管理器430以供處理。除了由同步組件420執(zhí)行的串行化功能之外,該組 件還可以包括約束測試組件510,或者被通信地耦合到約束測試組件510。約束測 試組件510能接收新鮮度約束或者測試并評估這一約束。操作執(zhí)行以滿足一個或多 個新鮮度約束為前提。如果在評估之時不能滿足與事務或其操作相關聯(lián)的新鮮度約 束,那么同步組件420能行使至少兩個選項的其中之一。首先,同步組件420可以 簡單地延遲并稍后嘗試評估該約束。補充地或替換地,該同步組件可以簡單地引發(fā) 事務異常中止。在更新事務中,同步組件420可以使用約束試驗組件510評估對讀 取的新鮮度約束。稍后,約束組件510可以被用來評估關于寫入操作的約束。此外, 在提交時約束可以被再次評估。在任何時候如果新鮮度約束得不到滿足,那么更新 事務可被異常中止。按照慣例,每一拷貝^都具有相關聯(lián)的時間戳/"W-mo^/ ^/(x?;蝾愃莆铩R?照本發(fā)明一個方面,可以維護另一時間戳ra/WW《x。,并將其與x^的每一拷貝相 關聯(lián),以使得可以規(guī)定和評估新鮮度約束。時間戳^//J-礎(3力是可以與^的下一版本相關聯(lián)的最小時間戳。不管其如何被維護,拷貝?中當前保持的數(shù)值應該有 一個有效區(qū)間,該有效區(qū)間包括從/a^-mo^/7e《/)到va/W-W/(/)的閉區(qū)間?;貞浧饃的版本x,的有效區(qū)間是半開區(qū)間[f, 0,其中Fto加o^/ e4x,),且f' 是與x的另一個提交版本相關聯(lián)的下一個更大的最后修改時間戳,或者在x沒有其他版本有更大的最后修改時間戳的情況下是oo。對于主拷貝,,可以取^/^W/(;^)為迄今所發(fā)布的最大時間戳,即r。這是有效的,因為x的版本的下一個更大時間 戳〃當然會比r大。對于復本?,可以取va/W-"〃(x。為/aW-mo^/ W(x勺。然而,如 果更新被按時間戳次序傳遞到每個高速緩存,那么可以取va/W^7/(x勺為 foW-mo^/ ec^)。在這情形中,對一個高速緩存中的所有項,有效截止(va/W-"http://) 有相同的數(shù)值,并在高速緩存粒度下被維護。當執(zhí)行一個或一群讀取時,約束測試組件510能利用讀取操作的新鮮度條件、 最后修改(/aW-mo^/ ed)和有效截止(vfl/W-"http://)的數(shù)值、以及也許其他信息來推 導出對讀取者事務的時間戳的約束。對于每個事務r,這些時間戳約束被記憶或存 儲在存儲器中。當r做好提交的準備時,分配其時間戳并在隨后檢查該時間戳以確保其滿足其所有時間戳約束。如果任一時間戳約束錯誤,那么r異常中止?;?者,可以將r退回到在系統(tǒng)推導出失敗的約束的讀取之前的一個保存點,或者如 果被異常中止的話它可以被重新開始。下面提供利用事務時間戳、最后修改時間戳和/或有效截止時間戳等來規(guī)定特 定新鮮度約束的方法。為了簡單和清晰而非限制起見,所描述的每個新鮮度約束都 涉及讀取操作。可以定義時間邊界約束6owm/(x力)并將其以a(T,《v汁6)的形式添加到事務的 約束中,其中W是與正在被讀取的數(shù)值相關聯(lián)的1;"/^-"http://^)的數(shù)值,G(。是與事務r,相關聯(lián)的時間戳,6是單位時間?;貞浧?amp;麗4x/6)表達由7U賣取的數(shù)值最多可以過期6秒。在最簡單的實現(xiàn)中,w^W-礎(x勺是讀取被執(zhí)行的瞬間。因為,從數(shù) 據(jù)源」讀取Z的數(shù)值至少直到W都是有效的,于是滿足to,《x;6)。另一個新鮮度約束是時間漂移邊界約束^訴(s》)。回憶起s表示事務r,的讀 取集合的一個子集,而且對于s中的每兩個x和》所讀取的x和:K的版本在彼此的6秒之內(nèi)。令m"x(/a,mo^^/(5))表示與S中任意拷貝相關聯(lián)的最大最后修改時 間戳,令m/"(v^W-礎(幼表示S中被r讀取的拷貝的最小有效截止時間戳。于是 漂移邊界約束可以被規(guī)定為max(/a"-wo^;/7e^S))〈m/"Oa/W-"〃0S))+6。為強加這一 漂移約束,必須有在被事務7U賣取的每個版本的有效區(qū)間的6秒之內(nèi)的一個時間戳。為理解所規(guī)定的約束如何實現(xiàn)這一點,考慮任意兩個數(shù)據(jù)項;ces和j;eS。令被7U賣取的版本的有效區(qū)間是[^W/0和[W〕。不失一般性,假定C《V。如圖6 所示,或者有(i乂/《《"且區(qū)間重疊,或者有(iiy/'々/且區(qū)間不相交。在情形(i)中, 滿足^/《(x, W, 6)。在情形(2)中,需要V《"《6或者V《""+6,以滿足A諷(x, 力,6)。不過這是檢査的必然結果,這是由于^'《moc(/aW-mo^/ e《5))《 m〖"(va/W-"〃0S))+6,并且m/"(va/W-/〃/0S))《G"。因為我們?nèi)我膺x擇x和j;,所以 。對S中的所有x和;;都是成立的。上述測試涵蓋了針對時間邊界和有限時間漂移的新鮮度約束。應該認識到, 快照一致性是有限時間漂移在(6=0)的特例,因此也被涵蓋。如果項的數(shù)值變化的速率存在已知邊界,那么就可以處理數(shù)值邊界條件。例 如,車輛的位置不會變化得比車輛速度所允許的更快。給定這樣的速率邊界,可以 從數(shù)值漂移的邊界推導出時間戳漂移的邊界,并強加所推導出的時間漂移邊界。給 定了數(shù)值改變速率的邊界,可以同樣地處理有限合計值漂移邊界。上文討論了多語句約束。會話級約束可以表達事務看到在同一會話中的先前 諸事務所做的所有更新。這可以通過讓系統(tǒng)記憶會話中任何提交事務的最大時間戳 來實現(xiàn)。當其執(zhí)行^的讀取時,它檢查va/W-礎fx?!穅^/on更富有挑戰(zhàn)性的多語句約束是事務r,的讀取必須看到在它之前各次寫入的 結果。為強加此約束,可以維護包括由r,執(zhí)行的所有寫入的列表丄,。每一來自r, 的讀取都被對照A檢查。如果要讀取的項先前被r,寫入過,那么該讀取必須在主 管理器處執(zhí)行以使得讀取能看到之前的寫入。有此處所描述的并發(fā)性控制可以有多種優(yōu)化或不同實現(xiàn)。 一種優(yōu)化是,每當 有約束被創(chuàng)建時,如果系統(tǒng)知道這一約束不能被滿足,那么可以立刻拒絕該操作(即是說,應該返回一個異常)。例如,假設對6o,《x:。的檢査取W為在讀取發(fā)生時刻的M/w-w/(/)的數(shù)值。高速緩存管理器可以知道,向最近所提交事務發(fā)布的時 間戳已經(jīng)大于w+6,因為它看到帶有比w+6大的時間戳的更新。在這情形中,在 最終試圖提交時約束將得不到滿足,因此應該拒絕該讀取。然而,通過使用開銷更 大的實現(xiàn),可以得到w的更大正確數(shù)值,這就減少了在w可能隨著時間增大的四 種情景中不必要的異常中止的次數(shù)如果主數(shù)據(jù)庫是多版本數(shù)據(jù)庫,那么它知道每一數(shù)據(jù)項的每一版本的有效截止(va/W-W/)的確切數(shù)值,該數(shù)值不小于v 。因此約束v汁6可以被[x、/w》]代替, 其中/m是所讀取數(shù)值的/a^-mc^訴e《x,。使用[/,/ m,6],主管理器可以在提交時計算v什6,其中W是由/m標識的x^的版本的有效截止(v。/W-"7/)。如果該事務隨其更新包括/aW-mo^/ e^x,,并且如果主管理器發(fā)現(xiàn) /aW-wod訴ec/(x"是相同的,那么在檢查約束時它可以將其"7/(x,的局部值用 作v"可以使得高速緩存參與兩步提交(如果該事務更新了高速緩存,則它可以無 論如何也要這樣做)。步驟1的處理可以再次讀取/。W-mo^/^4 )和v""^7/(x勺。 如果/flW-moc/折e《x,從事務讀?。康臅r刻以來沒有被改變,但是va/W-似/(/)已經(jīng) 增大了 (這是很有可能的),那么在約束檢查中w/^^7/(一)的新數(shù)值可以在步驟1 的應答中返回,并可以由主管理器使用。高速緩存可以記憶被每一活動事務所讀取的每一復本的身份。當復本戶被拷 貝事務更新時,對于讀取它的所有活動事務,va/W-W/( )的數(shù)值被記錄并凍結。這 比以上方法更準確,但是增加了簿記成本。再次,步驟1的處理獲得有效截止 (ra/W-Z///)的最新數(shù)值。在最后修改(/aW-脂^/ W)被用于漂移約束的范圍內(nèi),能在粗粒度下維護這 些時間戳,從而減少了存儲這些數(shù)值所需要的高速緩存空間。缺點是跨^的顆粒 中的所有/使用的是最大/a^-脂^7e4/)而不是準確/a^-mo^X/)。因此, m瓜(/謂,/fl仏mo J折et/(x勺)可能比其所需要的值更大,從而增加了 max(/ow, /aW-mo^y^4x,)〉m/"(/z/g/z, va/W-"〃(?)+6)的機會,導致?的讀取被拒絕。即是說, 它會增加異常中止次數(shù),但不會引起錯誤的結果。轉到圖7,描述了依照本發(fā)明一個方面的新鮮度約束生成系統(tǒng)700。在本說明 書中,已經(jīng)描述各種示例性新鮮度約束或測試,這些約束或測試限制過期數(shù)據(jù)結合 事務如更新事務的使用。當然,本發(fā)明不限于此處所給出的那些新鮮度約束或測試, 因為本領域中的技術人員在閱讀本說明書時可以明顯看出其他新鮮度約束或測試。 用戶可以為每一事務手動選擇和規(guī)定這些約束。然而,這對用戶尤其是不太熟練的 用戶來說過于麻煩。因此,提供系統(tǒng)700以自動地生成對事務的新鮮度約束。具體 而言,上下文組件710能接收和/或檢索事務和與其使用有關數(shù)據(jù)。以該數(shù)據(jù)為基 礎,上下文組件710能確定或推斷(正如該術語在此所定義的那樣)涉及接收到的 事務的上下文。因此,應該認識到,上下文組件710能使用包括但不限于神經(jīng)網(wǎng)絡、 專家系統(tǒng)、貝葉斯信任網(wǎng)絡、模糊邏輯的基于人工智能系統(tǒng)和方法,來從經(jīng)由事件 和/或數(shù)據(jù)所捕獲的一組觀察來推導或推斷系統(tǒng)、環(huán)境和/或用戶的狀態(tài)。補充地或 替換地,上下文組件能從用戶接收關于該上下文的或特別地提供上下文的輸入。約束生成組件720能從上下文組件710接收上下文或其表示值。約束生成組件能從該上下文為事務生成和/或選擇適當約束。在一個簡單實現(xiàn)中,能以對應于特定上下 文的表的形式來提供約束。于是,約束生成組件能基于所接收的上下文選擇一個或 多個約束。在一個更復雜的實現(xiàn)中,約束生成組件不僅能為事務選擇一個或多個新 鮮度約束,還可以考慮到上下文來定制約束。更進一步,基于人工智能的系統(tǒng)可以 用來基于上下文選擇一個或多個新鮮度約束。最后, 一旦一個或多個新鮮度約束被生成組件720生成或選擇,它們就能被轉發(fā)到應用程序組件730。應用程序組件730 是用于實現(xiàn)特定新鮮度約束或將特定新鮮度約束與事務相關聯(lián)的機構。例如,這可 以通過修改操作以使得其執(zhí)行以滿足一個或多個新鮮度約束或測試為前提來實現(xiàn)。簡要地轉到圖8,圖中示出了依照本發(fā)明一個方面的接口系統(tǒng)800。接口系統(tǒng) 800可包括兩個組件應用程序接口組件810和事務處理接口組件820。應用程序 接口組件810能接收具有與之相關聯(lián)的一個或多個新鮮度或當前性約束的一個或 多個事務,如更新事務。應用程序接口組件810能從用戶或用戶應用程序或者從另 一個應用程序或實體接收這類數(shù)據(jù)。于是,事務和相關聯(lián)的新鮮度約束能作為例如 一個或多個數(shù)據(jù)包被傳遞到事務處理(transactionprocessing, TP)接口組件820。 TP接口組件820能接收事務和新鮮度約束并處理所提供的事務,以確保(諸)新 鮮度約束被測試。然后,TP接口組件820能將關于執(zhí)行事務的信息(例如,提交、 異常中止、數(shù)據(jù)……)返回給應用程序組件810。根據(jù)本發(fā)明一個方面,系統(tǒng)800 可以是便于與支持在此所公開和描述的新鮮度約束的事務處理系統(tǒng)進行交互的應 用程序接口 (API)??紤]到上文所描述的示例性系統(tǒng),參考圖9到17的流程圖可以更好地理解可 依照本發(fā)明實現(xiàn)的方法。盡管出于簡化解釋的目的,所述方法被顯示和描述為一系 列的塊,但應該理解和明白,本發(fā)明不受這些塊的次序所限制,因為依照本發(fā)明, 一些塊可能以與在此所顯示和描述所不同的順序發(fā)生和/或與其他塊并發(fā)地發(fā)生。 而且,實現(xiàn)依照本發(fā)明的方法并非需要全部例示的塊。此外,應該進一步理解,以下及本說明書中各處所公開的方法可以被存儲在 產(chǎn)品中,以方便將這類方法傳輸和轉移到計算機。此處所用的術語產(chǎn)品旨在涵蓋可 以從任何計算機可讀設備、載波或介質存取的計算機程序。轉到圖9,圖中示出了依照本發(fā)明一個方面的更新數(shù)據(jù)庫的方法900。在910, 從高速緩存讀取陳舊數(shù)據(jù)。陳舊數(shù)據(jù)是那些不是最當前或最新數(shù)據(jù)的數(shù)據(jù)。高速緩 存可以包括諸拷貝的任何集合,其中諸拷貝可以包含一個或多個數(shù)據(jù)庫表、多維數(shù)據(jù)集或物化視圖的全部或部分。在920,該方法確認所讀取的數(shù)據(jù)滿足與事務的讀 取操作有關的當前性或新鮮度約束。例如,可仔細查看數(shù)據(jù)以確定讀取是否是在該數(shù)據(jù)變得無效之后的規(guī)定時段內(nèi)發(fā)生的。在922,如果沒有滿足當前性約束,那么 事務被異常中止,并且該方法結束。然而如果滿足該約束,那么在930,可以用所 讀取的數(shù)值更新或寫入數(shù)據(jù)庫。在事務提交時,在940,該方法再次測試并確認滿 足(諸)當前性約束。如果不滿足,那么在942事務異常中止,并且對數(shù)據(jù)庫所做 的任何改變都被撤銷或回退。如果仍然滿足這些約束,則該方法可以前進到950, 在此改變可以通過例如將其寫入到磁盤來被存留到持久存儲器中。圖10描述依照本發(fā)明一個方面的測試時間邊界當前性約束的方法1000。在 1010,通過例如事務時間戳來確定與事務相關聯(lián)的時間。在1020,確定與被讀取 或寫入的數(shù)據(jù)項相關聯(lián)的有效截止(va/W-ft7/)時間。在1030,識別與事務相關聯(lián) 的、代表版本變得無效的時刻與其被讀取或寫入的時刻之間的時間量的恒定時段。 例如, 一個人或實體可以規(guī)定讀取最多過期十秒的數(shù)據(jù)版本是可接受的。在1040, 確定事務時間(fe(7;))是否小于或等于有效截止(ra/W-"http://)時間(vO加恒定時間數(shù)值 (6)。如果在1040該約束不滿足,那么在1050可異常中止該事務。否則,滿足約 束,與事務相關聯(lián)的操作可以繼續(xù)進行。圖11例示依照本發(fā)明一個方面的測試時間邊界的最優(yōu)化的方法1100。方法 1100是時間邊界當前性約束針對事務的讀取操作按順序發(fā)布的通常情況的最優(yōu) 化。在lllO,高計數(shù)器或變量被初始化為無窮大或某個非常大的數(shù)字。在1120, 一數(shù)據(jù)項從例如高速緩存被讀取。在1130,確定所讀取數(shù)據(jù)項的有效截止 (^/ ///)或期滿時間。在1140,用高計數(shù)器的數(shù)值和數(shù)據(jù)項的有效截止(^//&///) 時間加恒定時間中的較小者來更新高計數(shù)器。該固定時間可以是表示在版本變得無 效的時刻和其被讀取的時刻之間的時間量的可編程數(shù)值。在1150,做出事務時間 戳是否小于高計數(shù)器的數(shù)值的確定。如果不是,那么在1160異常中止該事務。如 果是,那么該方法繼續(xù)進行到1170。在1170,檢查是否所有事務讀取操作都已經(jīng) 發(fā)生。如果還沒有,那么在1120該方法繼續(xù)讀取另一數(shù)據(jù)項。如果所有讀取都已 經(jīng)發(fā)生,那么在1180提交該事務。轉到圖12,描述了依照本發(fā)明一個方面的測試數(shù)值邊界新鮮度約束的方法 1200。數(shù)值邊界約束允許規(guī)定讀取操作的數(shù)值是在數(shù)據(jù)項的有效版本的一定百分比 或容差范圍內(nèi)。在1210,數(shù)據(jù)項數(shù)值從例如高速緩存被讀取。在1220,檢索數(shù)值 邊界。例如,該邊界可以對應于百分比或容差的其他度量。在1230,檢索數(shù)據(jù)項的最新有效版本的數(shù)值。在1240,該方法測試所讀取的數(shù)據(jù)項是否是在數(shù)值邊界 所規(guī)定的容差范圍內(nèi)。例如,可以做出該數(shù)值是否在最新有效版本的10%之內(nèi)的判定。如果不是,那么在1250拒絕該讀取。如果是在邊界內(nèi),那么滿足該約束,該方法將會成功終止。圖13是依照本發(fā)明一個方面的測試有限時間漂移的方法1300的流程圖。漂 移約束與多個數(shù)據(jù)項有關。當事務r與一個以上的數(shù)據(jù)項交互時,可以對那些數(shù) 據(jù)項規(guī)定約束。 一有限漂移約束聲明,對于每兩個數(shù)據(jù)項目x ^7》所讀取的x和 j的版本例如是在彼此的規(guī)定時間之內(nèi)。在1310,檢索與每個數(shù)據(jù)項有關的最后修 改時間。這一時間可以采取最后修改(last-modified)時間戳的形式。在1320,從 那些最后修改時間中識別最大的最后修改時間。在1330,為每個數(shù)據(jù)項目確定有 效截止(valid-till)時間。該有效截止(valid-till)時間指示可以與數(shù)據(jù)項的下一版 本相關聯(lián)的最小時間。它為每一數(shù)據(jù)項指定被存儲數(shù)值的有效區(qū)間的上界。這一時 間可以采取有效截止(valid-till)時間戳的形式。在1340,在諸數(shù)據(jù)項中確定最小 的有效截止(valid-till)時間。在1350,識別與約束關聯(lián)的恒定時間,例如十秒。 在1360,做出最大的最后修改時間是否小于最小的有效截止時間加恒定時間的確 定。如果不是,那么在1370異常中止該事務,因為沒有滿足這些約束。如果是, 那么滿足這些約束,該方法成功終止。圖14描述依照本發(fā)明一個方面的測試有限漂移約束的最優(yōu)化方法1400。方 法1400是針對事務的讀取操作按順序發(fā)布的通常情形對漂移約束的最優(yōu)化。在 1410,高和低計數(shù)器或變量被初始化,例如,分別被初始化為無窮大或負無窮大。 實質上,高計數(shù)器應該具有最高可能時間數(shù)值,低計數(shù)器應該具有最低可能時間數(shù) 值。在1412,確定被讀取的數(shù)據(jù)項目的有效截止時間或期滿時間。這可以通過檢 索有效截止時間戳來完成。在1414,通過例如檢索與數(shù)據(jù)項相關聯(lián)的最后修改時 間戳來確定要被讀取的數(shù)據(jù)項最后被修改的時間。在1416,確定低計數(shù)器或變量 與最后修改數(shù)值中的較高者。在1418,確定高計數(shù)器或變量與有效截止數(shù)值加規(guī) 定常數(shù)中的較低者。在1420,執(zhí)行測試以確定低計數(shù)器與最后修改數(shù)值中的較高 者或最大者是否大于高計數(shù)器與有效截止數(shù)值加常數(shù)中的最小者或較低者。如果不 是,那么在1422拒絕該讀取操作。然后,這一拒絕可以導致發(fā)布該操作的事務異 常中止。如果是,那么滿足該約束,在1424讀取該數(shù)值。在1426,高計數(shù)器的數(shù) 值可以被更新為高計數(shù)器的當前值與有效截止加常數(shù)中的較小者。在1428,低計 數(shù)器可以被更新為低計數(shù)器的當前值與最后修改時間中的較高者。盡管沒有示出,但是如果所有數(shù)據(jù)項都已經(jīng)被讀取,那么該方法簡單地終止。如果還沒有讀取所有 數(shù)值,那么程序能繼續(xù)進行到1412,在那里確定待讀取數(shù)據(jù)項的有效截止。然后 該方法繼續(xù)進行, 一直到所有數(shù)據(jù)項都被讀取為止。圖15例示依照本發(fā)明一個方面的測試合計值漂移約束的方法1500。合計值漂移約束允許要求數(shù)據(jù)項的平均值是在有效合計值如有效平均值的規(guī)定容差之內(nèi)。在1510,讀取多個數(shù)據(jù)項的數(shù)值。在1520,從所讀取數(shù)據(jù)數(shù)值計算平均值。在1530, 檢索作為有效合計值最近的或當前的平均值。在1540,檢索數(shù)值邊界。例如,該 邊界可以規(guī)定例如百分之十的容差。在1550,做出該平均值是否在邊界例如在有 效平均值的百分之十范圍之內(nèi)的確定。如果該數(shù)值不在邊界內(nèi),那么在1580異常 中止該事務。如果該數(shù)值是在邊界內(nèi),那么在1560檢索時間邊界。然后,在1570 進行檢查以確保該有效平均值滿足時間邊界。這一步驟檢査以便了解構成該有效平 均值的諸數(shù)據(jù)項的有效提交版本是否小于所規(guī)定的時間,例如當前時間之前的十二 秒。如果不滿足時間邊界,那么由于不滿足合計值漂移約束,在1580異常中止該 事務。如果滿足該時間邊界,那么滿足該約束,該方法成功終止。圖16例示依照本發(fā)明一個方面的規(guī)定當前性約束的方法1600。在1610,接 收或檢索事務。在1620,確定該事務的上下文。該事務在其中操作的上下文可以 指示當前性約束的個數(shù)、類型和范圍。該上下文可以由用戶確定,或者通過利用一 種或多種人工智能系統(tǒng)或方法推斷該事務的上下文來自動地確定。在1530,為事 務生成一個或多個當前性或新鮮度約束。這些約束可以在事務鏈組內(nèi)執(zhí)行,以確保 數(shù)據(jù)是像所規(guī)定的那樣新鮮。可以基于該事務的上下文來生成這些約束。例如,如 果該事務是電子商務拍賣網(wǎng)站的一部分,則可以選擇帶有IO秒常數(shù)的時間邊界約 束,以使得可接受的讀取操作讀取最多過期IO秒的數(shù)據(jù)版本。除了所描述的讀取和寫入操作之外,該系統(tǒng)還可以支持插入和刪除操作。然 而,由于插入和刪除不向調用者返回數(shù)據(jù),因此它們不需要攜帶新鮮度約束。因此, 可以視情況而定像設置鎖定的另一個更新那樣運行它們。這可以包括設置索引范圍 鎖定或用于避免幻像的其他鎖定?;谥^詞的查詢,如SQL Select,不僅在主管理器中也在高速緩存中使用索 引和其他輔助結構來決定要該存取什么以及避免幻像(例如,使用索引范圍鎖定)。 諸拷貝需要在這些結構上包括最后修改時間戳,因為在創(chuàng)建對應于時間漂移約束的 時間戳約束,需要使用這些時間戳。此外,刪除需要保持某些特性來支持當前性約 束。圖17描述依照本發(fā)明一個方面的用于支持當前性約束的刪除方法1700。在1710,刪除數(shù)據(jù)項或對象并留下墓碑(tombstone,例如空對象)。在1720,更新 最后修改時間戳。在1730,更新有效截止時間戳。為了理解為什么這是必要的,考慮下列例子??紤]發(fā)布讀取所有滿足謂詞p的對象的查詢的事務r,并假設被刪 除的對象滿足戶。在創(chuàng)建對r的時間戳的約束時,應該考慮所刪除對象的時間戳。在此所公開的系統(tǒng)和方法可以有許多變體,并且這些變體被認為是在本發(fā)明 的范圍之內(nèi)。例如,諸系統(tǒng)和方法可以支持自反讀取,讀取時間可以被改變,并且 可以使用托馬斯寫入規(guī)則(Thomas'Write Rule)。如果事務讀取它先前寫入過的項,就可以說該讀取是自反的。簡單起見,自 反讀取被排除在上述討論之外。然而,在此可以納入自反讀取。例如, 一種技術是 用于在主拷貝處發(fā)生自反讀取。該技術要求系統(tǒng)識別自反讀取。 一種方法是給有潛 在可能執(zhí)行自反讀取的事務加上標簽,并完全地在主拷貝處運行該事務。另一種方 法是讓主拷貝告訴高速緩存該事務寫入哪些項目。當高速緩存接收到讀取時,可以 檢查該事務先前是否寫入了它。為了限定額外開銷,項可以是粗粒的,就像表一樣。 它甚至可以是整個的數(shù)據(jù)庫,這意味著事務在其第一次寫入之后的的所有讀取都在 主拷貝處執(zhí)行。這以強迫一些讀取不必要地在主拷貝處執(zhí)行為代價簡化了簿記。應該理解,在讀取數(shù)據(jù)時,與讀取關聯(lián)的時間可以是讀取操作的事務提交的 時間,或者是在此之前的時間,如讀取執(zhí)行時。如果該讀取時間是讀取執(zhí)行的時間, 那么在其開始執(zhí)行時可以給每次讀取分配一個時間戳,并且,可以評估有關該時間 戳的約束。因此,可以在讀取的執(zhí)行期間評估約束而不是延遲到提交時間。這也意 味著高速緩存管理器而不只是主管理器也分配時間戳。因此,為了避免定時異常, 在它們之間需要有某種時鐘同步??梢允褂猛旭R斯寫入規(guī)則(Thomas'Write Rule, TWR)來避免需要將更新從主管理器用管線傳輸?shù)礁咚倬彺?。這可以用于多主復本中。在TWR中,僅當a(ro》fc(/)時,寫入w,[ ]才會被應用到x\在本文的情形中,w,[x勺可以由拷貝事務 發(fā)布,因此r,就是引發(fā)拷貝事務執(zhí)行的用戶事務R的時間戳。TWR的一個重要特性是,如果給定一組向^中的寫入操作,則x^的最終數(shù) 值就是由帶有最大時間戳的拷貝事務寫入的數(shù)值,這與應用寫入的次序無關。因此, TWR能用來避免要求按時間戳次序應用寫入。如果拷貝事務不再按時間戳次序將 更新應用到每個高速緩存,那么對高速緩存的最后更新的時間戳不能夠被用作有效 截止的數(shù)值。然而,以上描述中用于確定有效截止的替換技術仍然適用。如果存在多對象快照約束,則可以把所有對象都放進一個組,對于該組,更 新按從主到復本的次序流動。這就確保了所有復本都將總是具有相同的有效截止數(shù) 值,從而確保只要所有對象都是在單個高速緩存處被讀取,而更新不是正發(fā)生在該 高速緩存的那些對象的拷貝上(例如,通過在高速緩存保持讀鎖定,直到該快照中 的所有讀取都已經(jīng)完成),那么快照約束就是平凡為真的。為了給本發(fā)明各個方面提供上下文,圖18和圖19以及下面的討論旨在提供 可以在其中實現(xiàn)本發(fā)明各個方面的合適計算環(huán)境的簡要、概括的描述。盡管前面已 經(jīng)在運行在一臺計算機和/或多臺計算機上的計算機程序的計算機可執(zhí)行指令的一 般上下文中描述本發(fā)明,那些本領域內(nèi)的技術人員將認識到,本發(fā)明也可以與其他 程序模塊結合實現(xiàn)。 一般地,程序模塊包括執(zhí)行特定任務和/或實現(xiàn)特定的抽象數(shù) 據(jù)類型的例程、程序、組件、數(shù)據(jù)結構等等。而且,本領域內(nèi)的技術人員將會理解 可以利用其他的計算機系統(tǒng)配置來實踐本發(fā)明,這些計算機系統(tǒng)配置包括單處理器 或多處理器計算機系統(tǒng)、迷你型計算設備、大型計算機以及個人計算機、手持計算 設備、基于微處理器的或可編程的消費電子設備等等。本發(fā)明的示例性方面也可以 在分布式計算環(huán)境中實施,在分布式計算環(huán)境中,任務由通過通信網(wǎng)絡鏈接的遠程 處理設備執(zhí)行。然而,即便并非所有方面,本發(fā)明也至少有一些方面可以在獨立計 算機上實施。在分布式計算環(huán)境中,程序模塊可位于本地或遠程的存儲器設備兩者 中。參照圖18,用于實現(xiàn)本發(fā)明各方面的示例性環(huán)境1800包括計算機1812。計 算機1812包括處理單元1814、系統(tǒng)存儲器1816和系統(tǒng)總線1818。系統(tǒng)總線1818 將包括但不限于系統(tǒng)存儲器1816的各系統(tǒng)組件耦合到處理單元1814。處理單元 1814可以是各種可用處理器中的任何一種。雙重微處理器和其他的多處理器架構 也能被用作處理單元1814。系統(tǒng)總線1818可以是多種類型總線結構中的任何一種,包括存儲器總線或存 儲器控制器、外圍總線或外部總線和/或使用各種可用總線架構中的任何一種的局 部總線,這些架構包括但不限于,11位總線、工業(yè)標準架構(Industrial Standard Architecture, ISA)、微通道架構(Micro-Channel Architecture, MSA)、擴展ISA (Extended ISA, EISA)、智能驅動電路(Intelligent Drive Electronics, IDE)、視 頻電子標準協(xié)會局部總線(VESA Local Bus, VLB)、外圍組件互連(Peripheral Component Interconnect, PCI)、通用串行總線(Universal Serial Bus, USB)、高 級圖形端口 (Advanced Graphics Port, AGP)、個人計算機存儲卡國際協(xié)會總線(Personal Computer Memory Card International Association, PCMCIA)以及小型計 算機系統(tǒng)接口 (Small Computer Systems Interface, SCSI)。系統(tǒng)存儲器1816包括易失性存儲器1820和非易失性存儲器1822。基本輸入 /輸出系統(tǒng)(BIOS)存儲在非易失性存儲器1822中,它包含在比如啟動過程中在 計算機1812內(nèi)的各元件之間傳輸信息的基本例程。作為例子而非限制,非易失性 存儲器1822可以包含只讀存儲器(ROM)、可編程只讀存儲器(PROM)、電可 編程的只讀存儲器(EPROM)、電可擦除只讀存儲器(EEPROM)或閃速存儲器。 易失性存儲器1820包括隨機存取存儲器(RAM),其擔當外部高速緩存存儲器。 作為例子而非限制,隨機存取存儲器(RAM)有多種形式可用,例如同步隨機存 取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、同步動態(tài)隨機存取存儲器 (SDRAM)、雙重數(shù)據(jù)率同步動態(tài)隨機存取存儲器(DDR SDRAM)、增強型同 步動態(tài)隨機存取存儲器(ESDRAM)、同步鏈路動態(tài)隨機存取存儲器(SLDRAM) 和直接存儲器總線隨機存取存儲器(DRRAM)。計算機1812還包括其他可移動/不可移動、易失性/非易失性的計算機存儲介 質。圖18例示了例如盤存儲1824。盤存儲1824包括但不限于,例如磁盤驅動器、 軟磁盤驅動器、磁帶驅動器、Jaz驅動器、Zip驅動器、LS-100驅動器、閃存卡或 記憶棒。另外,盤存儲1824可以單獨地包含存儲介質或和其他存儲介質組合,其 它存儲介質包括但不限于,例如光盤只讀設備(CD-ROM)、CD可記錄驅動器(CD-R Drive) 、 CD可重寫驅動器(CD-RW Drive)或數(shù)字通用盤只讀驅動器(DVD-ROM) 等光盤驅動器。為了便于把盤存儲器設備1824連接到系統(tǒng)總線1818,通常使用可 移動的或不可移動的接口,如接口 1826。應當明白,圖18描述充當在用戶與在合適的操作環(huán)境1810中所描述的基本 計算機資源之間的中間媒介的軟件。這類軟件包括操作系統(tǒng)1828。能被存儲在盤 存儲1824上的操作系統(tǒng)1828運行以控制和分配計算機系統(tǒng)1812的資源。系統(tǒng)應 用程序1830通過存儲在系統(tǒng)存儲器1816中或在盤存儲1824上的程序模塊1832 和程序數(shù)據(jù)1834來利用由操作系統(tǒng)1828進行的資源管理。應該明白,本發(fā)明可以 用各種操作系統(tǒng)或與諸操作系統(tǒng)的組合來實施。用戶通過(多種)輸入設備1836把命令或信息輸入計算機1812。輸入設備 1836包括但不限于,定點設備如鼠標、跟蹤球、指示筆、觸摸墊、鍵盤、話筒、 操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀、電視調諧卡、數(shù)碼相機、數(shù)碼攝 像機、網(wǎng)絡攝像頭,等等。這些和其他的輸入設備經(jīng)由(多個)接口端口 1838通過系統(tǒng)總線1818連接到處理單元1814。(多個)接口端口 1838包括,例如,串 行端口、并行端口、游戲端口和通用串行總線(USB)。(多個)輸出設備1840 與輸入設備1836使用一些相同類型的端口。因此,例如,通用串行總線(USB) 端口可以被用于提供到計算機1812的輸入,以及從計算機1812輸出信息到輸出設 備1840。提供輸出適配器1842以例示,有一些輸出設備1840如顯示器(例如, 平板和陰極射線管)、揚聲器和打印機等,需要特殊的適配器。作為例子而非限制, 輸出適配器1842包括在輸出設備1840和系統(tǒng)總線1818之間提供連接手段的顯卡 和聲卡。應當注意,其他設備和/或設備系統(tǒng)例如遠程計算機1844等提供輸入和輸 出能力兩者。計算機1812可以使用到一個或多個遠程計算機如遠程計算機1844的邏輯連 接在連網(wǎng)環(huán)境中工作。(多個)遠程計算機1844可以是個人計算機、服務器、路 由器、網(wǎng)絡PC、工作站、基于微處理器的設施、對等設備或者其他公用網(wǎng)絡節(jié)點 等等,而且一般包括以上結合計算機1812描述的要素當中的許多或全部。為簡單 起見,只隨遠程計算機1844例示存儲器存儲設備1846。(多個)遠程計算機1844 一般通過網(wǎng)絡接口 1848邏輯連接到計算機1812,然后經(jīng)由通信連接1850物理連 接起來。網(wǎng)絡接口 1848包含通信網(wǎng)絡如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)。局域 網(wǎng)(LAN)技術包括光纖分布式數(shù)據(jù)接口 (FDDI)、銅纜分布式數(shù)據(jù)接口 (CDDI)、 以太網(wǎng)/IEEE 802.3、令牌環(huán)/IEEE 802.5等等。廣域網(wǎng)技術包括但不限于,點對點 鏈路、如綜合業(yè)務數(shù)字網(wǎng)(ISDN)及其變體的電路交換網(wǎng)絡、分組交換網(wǎng)絡和數(shù) 字用戶專線(DSL)。通信連接1850是指用于將網(wǎng)絡接口 1848連接到總線1818的硬件/軟件。盡 管為了說明的清晰性,通信連接1850在計算機1812內(nèi)示出,但它也可以外置于計 算機1812。僅僅為了例示的目的,連接到網(wǎng)絡接口 1848所需的硬件/軟件包括內(nèi)置 和外置技術,例如,包括常規(guī)的電話級調制解調器、線纜調制解調器、電源線調制 解調器和DSL調制解調器、ISDN適配器和以太網(wǎng)卡在內(nèi)的調制解調器。圖19是本發(fā)明能與其交互的范例計算環(huán)境1900的示意性方框圖。系統(tǒng)1900 包括一個或多個客戶端1910。(諸)客戶端1910可以是硬件和/或軟件(例如,線 程、進程、計算設備)。系統(tǒng)1900還包括一個或多個服務器1930。(諸)服務器 1930也可以是硬件和/或軟件(例如,線程、進程、計算設備)。(諸)服務器1930 可以容納通過例如使用本發(fā)明來執(zhí)行轉換的線程。在客戶端1910與服務器1930 之間的一種可能的通信可以是以在兩個或多個計算機進程之間傳輸?shù)臄?shù)據(jù)包形式進行。系統(tǒng)1900包括可以用來促進(諸)客戶端1910和(諸)服務器1930之間 通信的通信框架1950。(諸)客戶端1910被起效地連接到一個或多個可以用來將 信息本地存儲到(諸)客戶端1910的客戶端數(shù)據(jù)存儲1960。同樣地,(諸)服務 器1930被起效地連接到一個或多個可以用來將信息本地存儲到(諸)服務器1930 的服務器數(shù)據(jù)存儲1940。上面所描述的內(nèi)容包括本發(fā)明的例子。當然,出于描繪本發(fā)明的目的而描述 各組件或方法的每一種可構想的組合是不可能的,但本領域內(nèi)的普通技術人員應該 認識到,本發(fā)明的許多進一步的組合和變換都是可能的。因此,本發(fā)明旨在包括所 有這些落在所附權利要求的精神和范圍內(nèi)的替換、修改和變體。此外,在此具體說 明或權利要求書中用到術語"包括"的范圍內(nèi),該術語意指以類似于術語"包含" 在權利要求中作為過渡詞時所解釋的方式表示可兼意義。
權利要求
1.一種數(shù)據(jù)庫更新系統(tǒng),包括接收器組件,用于接收數(shù)據(jù)庫更新事務;處理組件,用于讀取陳舊數(shù)據(jù)并處理所述事務;以及驗證組件,用于在處理過程中和/或在提交時驗證與所述事務相關聯(lián)的一個或多個新鮮度約束得到滿足。
2. 如權利要求1所述的系統(tǒng),其特征在于,所述處理組件從一高速緩存讀 取滿足與所述事務相關聯(lián)的一個或多個新鮮度約束的所述陳舊數(shù)據(jù)。
3. 如權利要求2所述的系統(tǒng),其特征在于,所述新鮮度約束的至少其中之 一是時間邊界,并用于限定在一版本變得無效的時刻與它被讀取的時刻之間的 時間量。
4. 如權利要求2所述的系統(tǒng),其特征在于,所述新鮮度約束的至少其中之 一是數(shù)值邊界,并指定讀取的數(shù)據(jù)數(shù)值可以偏離一有效版本的數(shù)值的百分比。
5. 如權利要求2所述的系統(tǒng),其特征在于,所述新鮮度約束的至少其中之 一要求在有一個以上數(shù)據(jù)項被讀取時,所述各數(shù)據(jù)項是從同一快照被讀取的, 并且所述各數(shù)據(jù)項是在彼此的規(guī)定時間內(nèi)被讀取的。
6. 如權利要求2所述的系統(tǒng),其特征在于,所述新鮮度約束的至少其中之 一要求在所述事務的一讀取組上計算所得的合計是在最近數(shù)值的規(guī)定百分比之 內(nèi)。
7. 如權利要求2所述的系統(tǒng),其特征在于,每一數(shù)據(jù)項或數(shù)據(jù)群都有與其 相關聯(lián)的元數(shù)據(jù),其中所述元數(shù)據(jù)標識所述數(shù)據(jù)項或群何時被最后修改以及其 截止何時之前有效,以便于定義和強加新鮮度約束。
8. 如權利要求7所述的系統(tǒng),其特征在于,所述驗證組件通過確定與所述 事務的執(zhí)行相關聯(lián)的時間戳是否小于或等于與由所述事務讀取的數(shù)據(jù)項相關聯(lián) 的有效截止時間加某個規(guī)定時段,來強加時間邊界新鮮度約束。
9. 如權利要求7所述的系統(tǒng),其特征在于,所述驗證組件通過確定由所述 事務讀取的最近修改的數(shù)據(jù)項的最后修改時間是否小于由所述事務讀取的數(shù)據(jù) 項有效截止的最小時間加一規(guī)定時段,來強加時間漂移邊界新鮮度約束。
10. —種用于確保結果是寬松當前性可串行化的寬松當前性約束的數(shù)據(jù)庫更新系統(tǒng),包括用于讀取與更新事務相關聯(lián)的過期數(shù)據(jù)并在讀取時驗證其滿足新鮮度約束 的裝置;以及在提交時驗證滿足新鮮度約束的裝置。
11. 一種事務型數(shù)據(jù)庫交互的方法,包括讀取陳舊的緩存數(shù)據(jù);驗證所讀取的數(shù)據(jù)滿足與事務相關聯(lián)的一個或多個當前性約束; 用所述來自高速緩存的數(shù)據(jù)更新一數(shù)據(jù)庫;以及 在提交時驗證所述一個或多個當前性約束得到滿足。
12. 如權利要求11所述的方法,其特征在于, 一種當前性約束是在數(shù)據(jù)在 可編程的時間內(nèi)被讀取時得到滿足。
13. 如權利要求11所述的方法,其特征在于, 一種當前性約束是在被讀取 的數(shù)據(jù)的數(shù)值是在一有效版本的數(shù)值的一百分比之內(nèi)時得到滿足。
14. 如權利要求11所述的方法,其特征在于, 一種當前性約束是在有一個 以上數(shù)據(jù)項被讀取且所述各數(shù)據(jù)項都是從同一快照被讀取時得到滿足。
15. 如權利要求11所述的方法,其特征在于, 一種當前性約束是在所讀取 的各數(shù)據(jù)項都落在彼此的一規(guī)定時間之內(nèi)時得到滿足。
16. 如權利要求11所述的方法,其特征在于, 一種當前性約束是當在被讀 取的一組數(shù)據(jù)項上計算所得的合計落在最近數(shù)值的一規(guī)定百分比之內(nèi)時得到滿 足。
17. 如權利要求11所述的方法,其特征在于,進一步包括將一最后修改時 間戳和一有效截止時間戳與數(shù)據(jù)的每一拷貝相關聯(lián)。
18. 如權利要求17所述的方法,其特征在于,驗證滿足一個或多個約束包 括確定與所述事務相關聯(lián)的時間戳是否小于或等于與正被讀取的數(shù)據(jù)相關聯(lián)的 有效截止時間戳加一規(guī)定時段。
19. 如權利要求17所述的方法,其特征在于,驗證滿足一個或多個約束包括確定要被所述事務讀取的一組數(shù)據(jù)項是否與同一快照相關聯(lián);以及 標識與所述組中數(shù)據(jù)項相關聯(lián)的最大的最后修改時間戳; 標識與所述組中的數(shù)據(jù)項相關聯(lián)的最小的有效截止時間戳;以及 確定所述最大的最后修改時間戳是否小于所述最小的有效截止時間戳加一規(guī)定時段。
20.如權利要求11所述的方法,其特征在于,進一步包括給所述事務分配 一與所述各約束一致的時間戳。
全文摘要
一個系統(tǒng)(圖1,100)具有一個或多個包含游戲機的游戲裝置和其它裝置。至少一個事務讀取裝置耦合到游戲裝置并讀取與和游戲裝置關聯(lián)的金錢設備關聯(lián)的信息(圖11、1120)。主控計算機可操作地耦合到事務讀取裝置。數(shù)據(jù)庫(圖2、212)耦合到所述主控計算機并被配置為可恢復地存儲和金錢設備關聯(lián)的信息。數(shù)據(jù)顯示裝置(圖18,1840)可操作地耦合到主控計算機,并且響應于來自用戶(圖18,1836)的輸入獲取和顯示金錢設備的列表。數(shù)據(jù)顯示裝置可以和無線遠程裝置(圖18,1844)相關聯(lián),接線到主控計算機或者和游戲裝置關聯(lián)。金錢設備的列表包括和每個金錢設備關聯(lián)的信息。金錢設備的列表可包括來自選擇的游戲裝置的信息。
文檔編號G06K5/00GK101238476SQ200680010090
公開日2008年8月6日 申請日期2006年3月9日 優(yōu)先權日2005年4月1日
發(fā)明者A·D·費克特, P·A·伯恩斯汀, R·蘭馬克里斯南 申請人:微軟公司