新四季網

用於在資料庫管理系統中為文件操作提供鎖定的技術的製作方法

2023-05-20 11:55:56

專利名稱:用於在資料庫管理系統中為文件操作提供鎖定的技術的製作方法
技術領域:
本發明涉及在資料庫管理系統中執行文件操作。
背景技術:
數據被存儲在諸如資料庫和文件伺服器的各種類型的存儲機
構中。每個存儲衝幾構都典型地具有其自己的訪問方法。例如,SQL 協議一般用於對資料庫4丸4亍操作,以及NFS協議一^:用於對文件系 統執行操作。SQL協議是用於訪問和處理存儲在資料庫中的數據的 ANSI標準。NFS協議是支持通過網絡對文件執行文件操作的分布 式文件系統協議。NFS是用於在UNIX主機之間共享文件的已知標 準。在NFS協議中,使用文件句柄對文件執行文件系統操作,該文 件句柄是識別特定文件的標識符。在RFC 3010中指定的當前版本 (版本4)的NFS支持版本3以上的附加功能,例如,增強安全性 和有狀態(stateful)才喿作的性能。
目前,資料庫管理系統不支持使用NFS協議訪問資料庫。因此, 當用戶想要訪問悽t據時,用戶必須確定哪種類型的存^f諸才幾構正在存 儲數據以確定訪問數據的適當方式,例如,用戶必須確定數據是否 被關聯地存儲在資料庫或文件系統中。在許多情況下,用戶確定數 據實際存4諸在哪個存々者才幾構中將成為用戶的負^^旦。
此外,期望由於多種原因將儘可能多種類的數據存儲在單個存 儲機構中。使保存的不同種類的存儲機構的數量最小化降低了需要 保存存儲機構所需的資源量。此外,將多種數據存儲在中央位置(例 如,資料庫)中促進了使用的簡易性和安全性,這是因為數據沒有 被存儲在多個分散的位置中。
因此,期望用於在^t據庫管理系統中扭J亍文件系統才喿作的方
法。在這部分中描述的方法是可4丸行的方法,但不必須是預先i殳定 或扭^f亍的方法。因此,除非另外指出,否則不應l叚i殳在本部分中描


通過附圖中的實例示出了本發明的實施例,而並不用於限制本 發明,其中,相似的參考標號表示相似的元件,其中
圖1是根據本發明實施例的能夠處理在有狀態協議中實現的請 求的系統的高級視圖的方框圖2是根據本發明實施例的資料庫伺服器的功能組件的方框
圖3是示出根據本發明實施例的處理文件操作的功能步驟的流 程圖4是示出根據本發明實施例的^f吏用資料庫鎖和文件系統4喿作 鎖的功能步驟的流程圖5是根據本發明實施例的存儲基於模式的資源的在先版本信 息的方框圖6A和6B是根據本發明實施例的存儲不基於模式的資源的 在先版本信息的方框圖7是示出根據本發明實施例的各種類型的文件系統操作鎖及 它們的兼容性的表格;以及
圖8是示出了在可實施本發明實施例的計算機系統的方框圖。
具體實施例方式
在以下描述中,為了說明的目的,闡述了許多具體細節以提供 對本發明實施例的透徹理解。然而,應當清楚,沒有這些具體細節 也可以實施本發明的實施例。在其他實例中,為了避免不必要地模 糊這裡描述的本發明的實施例,以框圖的形式示出了已知結構和裝置。
功能相無述
請求,例如NFS文件操作。在執行有狀態操作的過程中,資料庫服 務器可對資源使用各種基於文件的鎖。基於文件的鎖不同於資料庫 鎖,其中,當提交資料庫事務時,基於文件的鎖不被釋放,而是當
資源作為成功執行了 NFS CLOSE文件系統操作的對象時被釋放。 此外,基於文件的鎖可4又在部分資源(例如,文件字節的範圍)上 被授權。
在實施例中,在資料庫伺服器處接收用於執行由資料庫伺服器 管理的文件操作的請求。請求可以對存儲在資料庫中的部分文件扭^ 行文件操作。響應於接收該請求,資料庫伺服器授權僅覆蓋包含在 文件糹喿作中的一部分文件的基於文件的鎖。例如,悽t據庫力l務器可
授權覆蓋文件的字節段的基於文件的鎖,其中,字節段小於整個文 件。此後,資料庫伺服器可對文件執行文件操作。 一旦文件成為
NFS CLOSE文件系統才喿作的對象,就對文件釋》文基於文件的鎖。
架構和無述
圖1是根據本發明實施例的能夠處理執行文件系統操作請求的 系統100的方框圖。系統100包括客戶端110、 ^t據庫管理系統 (DBMS )120、和通信鏈路130。客戶端110的用戶可向DBMS 120 發布指定一個或多個文件系統操作性能的請求。為了說明的目的, 將給出請求符合NFS版本(例如,版本4)的實例。
客戶端110可通過能夠向DBMS 120發布請求的任何介質或才幾 構來實現。客戶端110可向DBMS 120發布有狀態請求。如本文中 使用的,"有狀態請求,,是用於執行有狀態操作的請求。典型地, 使用有狀態協議(例如,NFS)發布有狀態請求。客戶端110的示 例性實例包招"f旦不限於在可訪問通信鏈路130的裝置上4丸行的應用 禾呈序。雖然為了^f更於解釋在圖1中4叉示出了一個客戶端,4旦系統100 可包括「任意悽t量的客戶端110,其中,每一個均通過通信鏈路130 與DBMS 120進行通信。
客戶端110可通過能夠同時發布多個請求的介質或才幾構來實 現。例如,客戶端110可對應於在裝置上執4亍的應用程式,並且該 應用程式可以包括每個都可以對DBMS 120發送請求的多個進程。 因此,為了避免混淆,這裡將術語"請求者"用於指代向DBMS 120 發布請求的任何實體。因此,請求者可對應於客戶端110、在客戶 端110上執行的進程、或由客戶端110產生的進程。
DBMS 120是便於電子數據的存儲和檢索的軟體系統。DBMS 120包括資料庫伺服器122和資料庫124。使用允許資料庫伺服器
122處理對保持在資料庫124中的文件的任何有狀態請求(例如, 用於執行文件操作的請求)的框架(framework )實現資料庫伺服器 122。
資料庫伺服器122可在被模擬為多線程伺服器的多進程單線程 環境中實現。每個都能夠執行工作的進程池位於悽丈據庫月良務器122 處。當資料庫伺服器122接收請求時,資料庫伺服器122可分配進 程池中的^f壬一進程以處理^妾收到的i青求。在多進程單線程環境中實 現資料庫伺服器122使得資料庫伺服器122按比例支持大量的客戶 端110。
通信鏈路130可通過提供客戶端110和DBMS 120之間的數據
交換的任一介質或才幾構來實現。通信鏈路130的實例包括但不限於 諸如區域網(LAN)、廣域網(WAN)、乙太網、或網際網路的網絡, 或者一個或多個;也面、衛星或無線鏈路。
框架
圖2是根據本發明實施例的資料庫伺服器122的功能部件的方 框圖。如上所述,使用允許資料庫伺服器122處理對保持在資料庫 124中的文件的有狀態請求的框架200來實現資料庫伺服器122。 此外,相同的框架200可允許資料庫月良務器122處理對保持在悽t據 庫124中的數據的無狀態請求,例如,以HTTP或FTP協議實現的 請求。此外,如下所述,框架200可被配置為包括附加組件以支持 新的無狀態協i義或有狀態協議,或者以將新的功能添加到由衝匡架 200支持的現有協議。
下面討論在資料庫伺服器122的框架200中的每個組件,並且 將在標題為'M吏用框架處理文件才喿作"的部分中介紹-使用框架200 處理示例性有狀態請求的解釋。
框架200可由圖2中未示出的附加組件來實現,附加組件提供 由有狀態或無狀態請求所要求的附加功能性。例如,擴展器234是 指可以插入框架200的組件,其允許框架200支持新的無狀態或有 狀態協議或將新的功能性添加到由框架200支持的現有協議。為了 將擴展組件234插入衝匡架200中,協i義解譯器210 #1配置為通過適 當信息在適當時間調用擴展組件234。
協議解譯器
協議解譯器210接收通過通信鏈路130發送到DBMS 120的數 據包。可使用能夠在通信鏈路130上接收來自客戶端110的數據包 的任何軟體或硬體組件來實現協議解i奪器210,並處理如下所述的 悽史據包。協議解譯器210—旦4秦收到IW居包,則識別與該數據包相 關的數據包類型,並將數據包發送到被配置為讀取該數據包類型的 數據包的組件。例如,如果協議解譯器210通過檢查數據包的報頭 來確定數據包含有NFS請求,然後+辦議解譯器210向NFS數據包 讀取器224發送數據包。在通過NFS數據包讀取器224讀取包括 NFS請求的數據包之後,NFS數據包讀取器224將在數據包內指定 的關於單個文件系統操作的信息送回到協議解譯器210,用於進一 步處理。
協議解譯器210包括查找機構212。可使用能夠存儲DBMS 120 的請求者的狀態信息的任何軟體或硬體組件來實現查找機構212。
查找機構可將狀態信息存儲在易失性存儲器中,並可使用便於檢索 狀態信息的任何機構(例如,B樹和哈希表)來實現。在以下標題 為"保存狀態信息"的部分中詳細表現查找機構212的示例性實施例。
協議解i奪器210 ^皮配置為處理通過由協i義解譯器210 4妄收的凝: 據包請求的操作。協議解譯器210可被配置為執行由接收的數據包
請求的操作,或在以下進行進一步的詳細解釋,協議解譯器210可 與框架200的一個或多個組件進行通信以執行通過由協議解譯器 210接收的數據包請求的操作。
輸出器
可使用能夠執行輸出操作的任何軟體或硬體組件實現輸出器 (exporter ) 220。輸出器允許請求者查看目錄樹的一部分(例如, 屬於請求者的目錄樹),來代替屬於伺服器的目錄樹。
在實施例中,在框架200成功地執行輸出操作之後,框架200 向輸出操作的請求者發送(a)識別哪個目錄文件夾被輸出給請求 者的信息,以及(b)識別請求者是否已經讀取和/或寫入訪問所輸 出目錄文件夾的信息。當請求者通過輸出操作接收對目錄文件夾的 訪問時,i青求者可查看i青求者已經訪問的目錄文件夾的全部內容, 包括任何子目錄文件夾。
在實施例中,輸出器220可保存關於(a)哪個請求者輸出了 目錄文件夾,以及(b)與任一輸出目錄文件夾相關的訪問許可的 信息。目錄文件夾可被輸出至特定客戶端110 (例如,將目錄文件 夾輸出至特定IP位址或域名)或者輸出至一個或多個客戶端,例如, 通過將目錄文件夾輸出給IP掩碼可將目錄文件夾輸出給一組相關 機構。
資源鎖
可使用能夠鎖定資源的任何軟體或硬體組件來實現資源鎖 222。在實施例中,資源鎖222淨皮配置為對存J諸在悽t據庫124中的 文件執行字節段鎖定。
當要求對資源執行鎖定時,資源鎖222執行鎖定。在執行對授 鬥又基於文件的鎖的i青求的過程中,資源鎖222可更新通過查找;機構 212保存的信息。在下面將進一步詳細描述基於文件的鎖。
例如,作為一個實施例,協議解譯器210可指示資源鎖222 4丸 行請求對文件4受片又基於文件的鎖的文件系統才喿作。資源鎖222可以 訪問B樹以最初確定基於文件的鎖是否可被授權,以及如果所請求 的基於文^f牛的鎖是可祐^受^又,則資源鎖222可以更新一個或多個B 樹以反映已對文件授權了基於文件的鎖。下面進一步詳細描述資源 鎖222可i方問或更新的特定B樹。
數據包讀取器
框架200包括多個數據包讀取器。每個數據包讀取器都被設計 為從符合特定協議的數據包中讀取信息。例如,框架200包括NFS 數據包讀耳又器224、 FTP數據包讀取器226、和HTTP數據包讀耳又 器228。
可使用能夠讀取和分析符合NFS協i義的lt據包的任一軟體或 硬體組件來實現NFS lt據包讀取器224。這種悽史據包可i青求一個梯: 作或多個操作。請求兩個或多個文件系統操作的數據包被稱作"復 合請求"。NFS悽t據包讀取器224 ^皮配置為讀取在數據包中指定的 第一才喿作,並將識別該:操作的a:據返回到協i義解譯器210。 一旦處 理了在先操作,協議解譯器210此後就可以使NFS數據包讀取器 224 /人悽史據包中讀取另 一才喿作。
可使用能夠讀取和分析包括FTP請求的數據包的任一軟體或 石更件組件來實現FTP悽《據包讀取器226。 FTP悽t據包讀取器226淨皮 配置為讀取和分析包括在FTP數據包內的FTP操作信息,此後將 FTP 4喿作信息傳輸至協議解譯器210,用於處理。
可使用能夠讀取和分析包括HTTP請求的數據包的任一軟體或 硬體組件來實現HTTP數據包讀取器228。 HTTP H據包讀取器226 -故配置為讀取和分析包括在HTTP lt據包內的HTTP才喿作信息,此 後將HTTP 4喿作信息傳輸至協議解譯器210,用於處理。
雖然圖2示出了用於三種不同類型的數據包類型(即,NFS、 FTP、和HTTP數據包)的數據包讀取器,但其它實施例可以包括 用於其它類型的數據包的其它數據包讀取器。以這種方式,框架可 包括能夠讀取任一無狀態或有狀態協i義的組件。
特衝又-驗i正器
可使用能夠驗證特定請求者是否具有足以執行特定文件系統 才喿作的許可等級的任一軟體或硬體組分來實現特權-瞼證器230。每 次協議解i,器210執行文件系統操作時,協議解譯器210可指示特 4又-驗i正器230來確定特定i青求者是否具有足以執行特定文件系統操: 作的許可等級。下面將參照圖3的步驟318的進一步詳細描述討論 特定用戶是否具有足以執行特定文件系統操作的許可等級的確定。
授權器
可使用能夠確定發布由協議解譯器210接收的特定請求的請求 者實際上是否與在特定請求中識別的請求者相同的任一軟體或硬 件組件實現授權器232。以這種方式,在執行請求中指定的任何操 作之前,可通過授權器232驗證請求者的身份。每次協議解譯器210 接收請求時,協議解i奪器210都可指示授權器232確定發布由協議 解譯器210接收的特定請求的請求者實際上是否與在特定請求中識 別的請求者相同。下面參照步驟316進一步詳細描述特定請求是否 由淨爭定客戶端110發布的確定。
保存狀態信息
在NFS協議中,對已"打開"但還沒有"關閉"的文件執行文 件系統操作。在請求者可對文件執行其它文件系統才喿作之前,請求 者請求執行OPEN文件系統操作以打開文件。在請求者已對文件執 行了所有期望的文件系統操作之後,請求者請求執行CLOSE文件 系統才喿作以關閉文件。
由資料庫伺服器執行的文件系統操作可跨越一個或多個數據
文件執行每一個均改變文件狀態的 一個或多個資料庫事務。
由於NFS是有狀態協議,所以框架200必須保存處理有狀態請 求時的狀態信息。狀態信息是描述在任何會話中通過資源的請求者 在先執行的任何動作的信息。根據一個實施例,保存對於請求者已 打開的每個文件的狀態信息。例如,如果請求者打開文件A和文件 B,則請求者可4吏對於文件A的第一組狀態信息和對於文件B的第 二組狀態信息相關聯。
在請求者(a)打開或關閉文件,或者(b)獲得關於打開文件 的新鎖的任何時間分配或更新狀態信息。因此,無i倉何時只要請求 者(a)打開或關閉文件,或者(b)獲得關於打開文件的新鎖,狀 態信息就被更新以反映對文件執行的有狀態操作。
因為文件被打開,所以與請求者相關的狀態信息反映了由請求 者對文件執行的所有有狀態操作。例如,當請求者第一次打開文件 時,可分配狀態信息A。此後,如果相同的請求者獲得關於文件的 鎖,則狀態信息A變為無效,並分配新的狀態信息B。注意,狀態 信息B反映鎖和由請求者打開文件的事實。此後,如果相同的請求 者獲得關於文件的第二鎖,則狀態信息B變為無效,並分配新的狀
態信息c。注意,狀態信息c反映鎖和由請求者打開文件的事實。 當請求者關閉文件時,不再需要保存對於那個請求者、那個文件的 狀態信息。
持續請求者與文件關係的狀態的跟蹤
狀態識別數據可附加在客戶端110和資料庫伺服器122之間交 換的通信以提供在通信中參考的文件的當前狀態。當請求者打開文 件時,由框架200創建狀態識別數據。狀態識別數據相對於請求者 已打開的特定文件來識別與特定"^青求者相關的狀態信息。
為了持續跟蹤打開文件的狀態,將新創建的狀態識別數據返回 給請求者。例如,假設請求者XYZ發布打開文件ABC的請求。框 架200生成描述與新打開的文件ABC相關的狀態信息的狀態識別 數據,並將狀態識別數據返回給請求者XYZ。
當請求者將請求傳送至資料庫122以執行對打開文件的文件系 統操作時,請求包括預先傳輸給請求者的任何狀態識別數據,例如, 狀態識別H據可響應於打開文件預先傳輸給請求者。以這種方式, 請求識別與文件相關的狀態信息。例如,如果請求者XYZ發送鎖 定文件ABC的請求,則請求將包括響應於資料庫伺服器122對文 件ABC執行OPEN文件系統操作而預先發送給請求者XYZ的狀態 識別信息。框架200可使用包括在請求中的狀態識別信息以使用查 找才幾構212 4t索對應的狀態1言息。
因此,如上所述,框架200響應於執行某一有狀態文件系統操 作生成狀態識別悽t據,並將生成的狀態識別lt據傳送鄉合文件系統搮: 作的請求者。此後,請求者可通過包括在請求中的狀態識別數據對
相同文件執行附加的有狀態文件系統操作,這允許框架200使用狀 態識別數據檢索文件的狀態信息。
當對打開文件執行文件系統操作時,更新與文件相關的狀態信 息,以反映文件新的操作狀態。創建新的狀態識別數據以提供更新
的狀態信息。此後,框架200將新的狀態識別數據傳送給請求者。 以這種方式,僅在請求者和框架200之間交換一組狀態識別數據。 在框架成功執行有狀態文件系統操作之後,從框架200傳送的狀態 識別悽t據識別與作為有狀態文件系統才喿作對象的資源相關的最近 習犬態4言息。
如下一部分中說明的,框架200可將狀態信息存儲在查找^L構 212中,以及可以使用狀態識別數據檢索存儲在查找機構212中的 狀態信息。
保存狀態信息
才艮據一個實施例,使用查找才幾構212來保存狀態信息。在一個 實施例中,〗吏用多個B樹實現查找才幾構212。多個B樹存^f諸用於處 理有狀態文件系統,燥作請求的狀態信息。例如,多個B樹可存々者i青 求者數據、文件數據、和鎖數據。請求者數據是用於識別被註冊以 發布文件系統,操作的請求者的悽t據。文件悽t據是用於識別由哪個請 求者打開了哪個文件的數據。鎖數據是用於識別對於哪個文件的哪 個鎖已被授權給哪個請求者的數據。
在一個實施例中,多個B樹包4舌"client B-tree,, 、 "client—exists B-tree"、 "requestor B-tree"、 "open—files B-tree" 、 "opens B國tree"、 "locks—requestor B-tree"、禾口 "granted locks B國tree"。這些B樹中 的每一個都可以存儲狀態信息,並將在下面進行進一步地描述。
本發明的其它實施例可使用不同組的B樹實現查找機構212。 侈'B口,上述多個B樹(侈'B口, client—exists B-tree )存々者也存+者在其 它B杉t中的4言息,因此上述所有B樹乂十於查找才幾構212的某一實J見
來i兌不是必須的。然而,可以有利i也在多於一個B衝對中存4諸相同或 相似的信息,這是因為可使用第 一環境中的第 一密鑰更有效地訪問 信息,以及可4吏用第二環境中的第二密鑰更有效地訪問信息。
在本發明的其它實施例中,可使用多個哈希表代替多個B樹實 現查找機構212。實現查找機構212的多個哈希表存儲類似於下文 中描述的信息。也可以通過本發明的其它實施例採用其它才幾構來實 現查找4幾構212。
CUENT B-TREE
client B-tree是用於4呆存關於客戶端4言息的B樹。在client B-tree 內索引項中將反映出向框架200登記的每個客戶端110。如下面進 一步詳細說明的,客戶端110通過發布請求向框架200登記以建立 客戶端標識符。client B-tree的密鑰是通過悽t據庫月良務器預先分配給 客戶端的客戶端標識符。客戶端標識符,唯一地識別向衝匡架200登記 的特定客戶端110。 client B-tree的每個節點都存儲關於特定客戶端 的信息,包括客戶端標識符和客戶端提供的標識符,例如,客戶端 的網全備地址。
CLIENT—EXIST B國TREE
類4以於client B-tree, client—exists B畫tree j呆存關於客戶端的4言 息。雖然client B-tree和client—exists B-tree者M呆存關於客戶端的4言 息,但client—exists B-tree的密鑰是客戶端提供的標識符。例如,客 戶端才是供的標識符可以是客戶端的網絡地址。
client_exists B-tree可用於基於客戶端提供的標識符來確定特 定客戶端110是否已向衝匡架200登i己。client_exists B-tree的每個索
引項也都存儲關於特定客戶端的信息,包括客戶端標識和客戶端提 供的標識符。
REQUESTOR B-TREE
requestor B-tree是^f呆存關於"i青,,者的^f言息、的B樹。requestor B-tree的密鑰反映與請求者相關的客戶端標識符和唯一識別請求者 的請求者標識符。requestor B-tree可用於確定與特定客戶端110相 關的所有請求者,這是在處理OPEN文件系統操作期間或在覆蓋已 成為不可操作的客戶端時所需要的。
requestor B-tree的每個索引項都存〗諸關於i青求者的信息。例如, 對應於特定i青求者的r叫uestor B-tree的索引項可存儲關於以下各項 信息哪個客戶端與請求者有關、何時接收到來自請求者的最後通 信、請求者打開了哪個文件、以及什麼狀態信息與請求者相關。
OPEN—FILES B-TREE
open—files B-tree是4呆存關於已打開的文件的4言息。open—files B-tree的密鑰是文件的文件句柄。open—files B-tree可用於確定可否 對特定文刊^U亍文件系統才喿作。open_files B-tree的每個索引項都可 以存儲關於打開文件的信息。例如,這種信息可包括對於打開文上 的基於文件的鎖的數量、對於打開文件的基於文件的鎖的類型、什 麼狀態識別數據識別與打開文件相關的狀態信息、用於打開文件的 對象標識符。
OPENS B-TREE
opens B-tree是^f呆存關於已打開文件的4言息的B初十。opens B-tree 的密鑰是狀態識別數據。通過遍歷opens B-tree,可以定位關於與狀
態4言息相關的打開文件的信息,該狀態〗言息通過用作opens B-tree 的密鑰的狀態識別^t據來識別。
例如,假設客戶端已經打開特定文件。對於客戶端保存的狀態 信息將表示客戶端已打開了特定文件。狀態信息將被分配給一組狀 態識別數據。狀態識別數據可用於遍歷opens B-tree以找到表示特 定文件打開的索引項。
opens B-tree的每個索引項都存卡者關於打開文件的4言息,例如, 識別與打開文件相關的狀態信息的狀態識別數據、打開了打開文件 的請求者、文件是否被打開以用於讀或寫、打開文件是否被修改、 以及讀或寫是否被除打開了打開文件的請求者之外的任何其他請 求者拒絕。
為了打開文件,生成狀態識別^:據以識別打開文件。狀態識別 數據(a)被傳送至請求打開文件的請求者,以及(b)用於將條目 添力口到opens B-tree以反映文4牛已淨皮打開。
LOCKS_REQUESTOR B-TREE
locks—requestor B-tree是保存關於鎖_清求者的信息的B樹。對 locks—requestor B-tree的密石馬是習犬態i只別悽t才居。Locks B-tree的每個 索引項都包括關於鎖的請求者的信息,例如,客戶端標識符、請求 者標識符、以及鎖所有者標識符。鎖所有者標識符唯一地識別被授 權鎖定的特定請求者。客戶端標識符和請求者標識符由框架200分 配,並且鎖所有者標識符由請求者才是供。
GRANTED LOCKS B畫TREE是^f呆存關於授j又鎖的4言息的B樹。 granted—locks B-tree的密確月是文"f牛句牙丙。granted Jocks B-tree可用於 迅速確定哪個基於文件的鎖(如果有的話)已被特定文件4受4又。
當協議解譯器210指示資源鎖222執行請求特定鎖授權的文件 系統才乘作,資源鎖222可訪問查找才幾構212的一個或多個B樹。作 為實例,假設協議解譯器210接收了對文件的特定鎖授權的請求, 此後,協i義解i奪器210指示資源鎖222處理文件系統操作。資源鎖 222可初始確定是否已經通過訪問granted—locks B-tree又於文件4受鬥又 了4氐觸鎖。資源鎖222可使用由文件系統才喿作識別的文件的文件句 才丙來遍歷granted—locks B-tree。 i口果granted—locks B-tree中的條目 存在文件句柄,則條目的檢查將通知資源鎖222是否已對文件授權 了4氐觸鎖。
如果資源鎖222確定還沒有對文件授^U氏觸鎖,則資源鎖222 可以(a)生成新的狀態識別數據以識別資源的新狀態,以及(b) 將條目加入granted—locks B-tree以反映所請求鎖的授權。資源鎖222 可4吏用新生成的用於資源的新狀態識別lt據將新條目加入 granted—locks B-tree,此後,從由在先狀態識別悽史才居參考的locks B 樹中刪除在先條目。Locks B樹中的新條目包括對在資源上執行的 所有在先有狀態涉及的參考,因此沒有必要存儲由在先狀態識別數 據涉及的項。
4吏用才醫架處理文件:操作
圖3是示出根據本發明實施例的用於處理文件系統操作的步驟 的流程圖。通過衝丸行圖3的步驟,可通過DBMS 120才丸行諸如有狀 態NFS 4喿作的有狀態4乘作。
一般來說,框架保存關於框架執行的操作的信息。 一旦執行了 有狀態操作,框架就返回對應於操作狀態的請求者狀態識別數據。 在對於有狀態操作的後續請求中,請求者將狀態識別數據發送回框
架。然後,框架將狀態識別^t據用作密鑰以識別應用於該後續"i青求 的操作的狀態信息。
獲得框架生成的客戶端標識符
參照圖3,首先,在步驟310中,在資料庫伺服器處接收用於 建立請求者的客戶端標識符的第一請求。可通過協議解譯器210執 4亍步驟310,其中,協i義解i爭器210通過通信鏈路130 4妾收由客戶 端110發送的包括第一請求的悽t據包。
協議解譯器210可接收各種數據包類型的數據包。雖然協議解 譯器210被配置為識別所接收數據包的數據包類型,但協議解譯器 210無需配置為讀取每種tt據包類型。例如,協i義解譯器210可通 過檢查包含在數據包報頭內的信息來確定所接收數據包的數據包 類型。 一旦協議解譯器210確定所接收數據包的數據包類型,協議 解譯器210就將該數據包發送到用於讀取該數據包類型的數據包的 組件。
為了說明的目的,應當假設在步驟310中接收的數據包是包括 對請求者建立客戶端標識符的請求的NFS數據包。建立客戶端標識 符是NFS操作。在這些條件下,協議解譯器將數據包發送到NFS 數據包讀取器224以讀取該數據包。NFS數據包讀取器224讀取並 解析^t據包,並將識別所^清求文件系統操作(即,建立客戶端標識 符)的數據發送回協議解譯器210。
在4妄收識別文件系統操作的悽t據之後,協議解譯器210處理文 件系統操作。在本實例中,協議解譯器210處理請求以建立客戶端
標識符。例如,作為處理-清求的一部分,協-漢解i奪器210可查閱查 找才幾構212以確定(a)是否已對i青求者建立客戶端標識符,以及 (b)如果還沒有對i青求者建立客戶端標識符,則確定哪個客戶端 標識f尋應該與i青求者相關。
在實施例中,資料庫伺服器可基於客戶端提供的標識符(例如, 客戶端的網絡地址)遍歷client—exists B-tree,以確定是否已為特定 i青求者建立客戶端標識符。如果還沒有為i青求者建立客戶端標識 符,則資料庫伺服器可為客戶端生成客戶端標識符。在為客戶端生 成客戶端標識符之後,資料庫伺服器可將索引項加入client B-tree 和client_exists B-tree,以存4諸關於分配給請求者的新客戶端標識符 的4言息。
在4丸4亍步驟310之後,處理進入步驟312。在步驟312中,在 上述步驟310中建立的客戶端標識符;陂傳送至i青求者。可通過協議 解譯器210執行步驟312,協議解譯器210通過通信鏈路130將包 括客戶端標識符的通信傳送至請求者。在實施例中,請求者可通過 將附加通信與資料庫伺服器122交互來驗證由資料庫伺服器122接 收的客戶端標識符,A人而一驗i正客戶端標識符。在"^M亍步驟312之後, 處理前進到步-驟314。
接收複合請求
在步驟314中,接收用於執行文件系統操作的第二請求。可通 過協i義解i,器210 4丸4於步驟314,該協i義解譯器210通過通信鏈路 130接收包括由客戶端110發送的第二請求的數據包。第二請求包 4舌客戶端才示"i只符。
為了示出複合請求的處理,假設在步驟314中接收的第二請求 是包括兩個或多個文件系統操作的複合請求。由框架200順序地處 理在複合請求中指定的文件系統操作。
為了示出有狀態文件系統操作請求的處理,進一 步假設在第二 請求中指定的第 一文件系統操作是對已由請求者預先打開的文件 的基於文件的鎖的請求。在框架200打開文件後,框架200 (a)生 成識別與打開的文件相關的狀態信息的狀態識別數據,以及(b) 將狀態識別數據傳送至請求者。因此,如果在步驟314中接收的請 求是用於對打開文件執行文件系統操作的請求,則在步驟314中接 收的請求包括預先發送給請求者的狀態識別數據。在該實例中,狀 態識別數據將允許框架200參考與文件相關的狀態信息,該文件是 請求基於文件的鎖的對象。
在協議解i奪器210確定步驟314的請求包括文件系統4喿作i青求 之後,協議解譯器212可將包括步驟314的請求的數據包發送到 NFS數據包讀取器224,以讀取數據包。此後,NFS數據包讀取器 224向協議解譯器210傳送關於在數據包中指定的第一未處理文件 系統操作(下文中稱作"當前,,文件系統操作)的信息。如下面進 一步詳細描述的,在處理了當前文件系統操作之後,框架200應該 處理在數據包中指定的其它未處理文件系統#:作。
為會話分配請求
一旦協i義解i奪器21(M妄收到關於在來自NFS ft據包讀取器224 的複合請求中指定的當前文件系統操作的信息時,協議解譯器210 將當前文件系統才喿作分配給資料庫會話。可從資料庫會話池中選出 的分配資料庫會話是資料庫伺服器將處理包括在複合請求中的文 件系統操作的會話。因為狀態信息獨立於會話保存(如上所述,狀 態信息被保持在查找才幾構212中),所以可從悽丈據庫會話池中選4奪
任一會話,以服務當前文件系統操作。在執行步驟314之後,處理 前進到步-驟316。
鑑別客戶端
在步驟316中,進行步驟314中接收的請求是否是由包括在請 求內的客戶端標識符識別的客戶端發布的確定。在實施例中,每次 接收到請求,就鑑別請求以確認請求者的身份。步驟316可通過與 授權器232通信的協議解譯器210執行,以使授權器232鑑別請求。 授權器232可使用包括在鑑別進程中的請求內的客戶端標識符。在 授權器232鑑別了步驟314中接收的請求之後,授權器232將鑑別 進程的結果傳輸至協議解譯器210。授權器232可使用標準鑑別庫 和協議(包括Kerberos、 LIPKEY、和SPKM-3 )來鑑別請求者。
如果授權器232未鑑別在步驟314中接收的請求,則協議解譯 器210將通信發送到發送第二請求(在步驟314中接收的)的請求 者,以通知請求者未鑑別第二請求。 一旦鑑別了第二請求,則處理 前進到步艱《318。
確定所請求的操作是否被允許
在步驟318中,進行請求者是否具有足以執行當前文件系統操 作的許可等級的確定。步驟318可以通過與特權-瞼證器230通信的 協議解譯器210執行,以使特權驗證器230 -瞼證請求者是否具有足 以執行當前文件系統操作的許可等級。
在實施例中,特權驗證器230使用對每個請求者的訪問控制列 表確定請求者是否具有足以執行特定文件系統操作的許可等級。特 權驗證器230保存每個請求者的訪問控制列表。每個訪問控制列表
均包括訪問控制條目(ACE)的列表。每個ACE識別請求者是否 被授權或被拒絕授予特定特權。
作為實例,假設請求者1234發布了請求以執行請求特權A和 特權B的文件系統操作。特權驗證器230保存對請求者1234的ACE 列表。特權驗證器230順序處理在訪問控制列表中指定的ACE。如 果對請求者1234的訪問控制列表包括表示請求者1234被授權許 可A的第一 ACE、表示請求者1234被授權許可B的第二 ACE、和 表示請求者1234 ^皮拒絕^:予許可A的第三ACE,然後特4又-驗證器 230確定i青求者1234具有足以執^亍-清求的文件系統才乘作的許可等 級,這是因為特權驗證器230將順序處理在訪問控制列表中的ACE 直到可以作出決定。因ot匕, 一旦特4又-瞼i正器230讀取了對:清求者1234 的訪問控制列表中的第二 ACE,特權驗證器230就可以進行關於請 求者1234是否具有足以才丸4亍請求的文件系統操作的許可等級的確 定,並且特^又-瞼i正器230將不會讀取訪問控制列表的剩餘部分。在 執行步驟318之後,處理前進到步驟320。
定位適當的狀態信息
在步驟320中,如果執行當前文件系統操作需要狀態信息,則 基於包含在第二請求內的狀態識別數據來檢索適當的狀態信息。狀 態識別^:據可^皮預先分配並與請求者通信,例如,i青求者可預先打 開文件或者可以預先授權文件上的鎖。如果請求是複合請求,則在 步驟320中檢索的狀態信息可與當前文件系統操作相結合。可通過 使用查找機構212檢索狀態信息的協議解譯器210執行步驟320。 在步驟320中檢索的狀態信息包括執行當前文件系統操作所需的任 何狀態信息。在處理步驟320之後,處理前進到步驟322。
執4亍_清求的文件系統:操作
在步驟322中,基於適當狀態信息在選取的資料庫會話內處理 當前文件系統操作。在一個實施例中,可通過協議解譯器210自身 執行步驟322。在另一實施例中,協議解譯器210可與框架200的 其它組件通信,以^吏其它組件^^亍當前文件系統才喿作。在處理了當 前文件系統4喿作之後,處理前進到步驟324。
更新狀態信息
在步驟322中,在會話中執行文件系統操作。會話使用的狀態 由於文件系統才喿作的扭J亍而改變。在本實施例中,表示會話狀態的 狀態信息被稱作"更新的狀態信息"。更新的狀態信息反映了由當 前文件系統才喿作的處理所產生的狀態改變。例如,更新的狀態信息 反映了作為文件系統操作對象的文件是否已被打開,以及是否已對 文件授權了任何鎖。然後,在根據文件執行了當前文件系統操作之 後,更新的狀態信息反映了文件的當前狀態。
在步驟324中,更新存儲在查找機構212中的信,以反映與當 前文件系統操作相關的更新的狀態信息。在實施例中,更新包4舌查 找機構212的一個或多個B樹,以表示會話的新狀態。可通過(a) 生成新的狀態識別lt據以識別更新的狀態信息,以及(b)更新或 添加條目到查找機構212的適當B樹以反映更新的狀態信息來更新 包4舌查找^幾構212的B樹。
例如,假設在步驟322中,在步驟322中處理的當前文件系統 操作是用於對特定文件的前100個字節執行基於文件的鎖的操作。 資源鎖222可首先確定是否已通過訪問granted locks B-tree對文件 授權4氐觸鎖。資源鎖222可4吏用在當前文件系統才喿作中識別的文件 的文寸牛句柄遍歷granted locks B-tree。長口果granted locks B-tree中的 條目存在文件句柄,則條目的檢查將通知資源鎖222是否已對文件 上4更^U氏觸鎖。
如果資源鎖222確定還沒有對文件授^U氐觸鎖,則資源鎖222 (a)生成新的狀態識別數據以識別資源的新狀態,以及(b)將條 目添力o到granted locks B-tree以反映所請求鎖的授權。具體地,資 源鎖222可〗吏用新生成的資源的新狀態識別悽t據將新條目添加到 granted_locks B-tree,此後,刪除由先前狀態識別悽t據涉及的locks B-tree中的先前項。除對資源授^又的任一先前鎖之外,granted locks B-tree中的新條目包括對文件的前100位元組授權的基於文件的鎖的 參考,因此不必存儲由在先狀態識別悽史據涉及的條目。
在執行步驟324之後,處理前進到步驟326。
重複複合請求中指定的操作
每個請求都可以是指定將執行的一個或多個文件作業系統的 複合請求。在步驟326中,如果步驟314中接收的請求是複合請求, 並且存在複合請求中指定的其它未處理的文件系統才喿作,則處理進 入步驟318,其中,在步驟314的第二i青求中指定的下一未處理的 文件系統才喿作成為"當前文件系統操作"。以這種方式,由框架200 順序地處理在複合請求中指定的每個文件系統操作。
在處理了步驟314的第二請求中指定的所有文件系統#:作之
後,處理前進到步驟328。
為請求者提供結果和修訂狀態標識符
在步驟328中,執行在步驟314的請求中指定的所有文件系統 操作的結果被傳送至通信中的請求者。通信可包括識別狀態信息的 任何狀態識別數據,該狀態信息被分配到成功執行文件系統操作的 對象的特定資源。步驟328的實施可通過協議解譯器210執行,協 議解譯器210向請求者發送處理複合請求的每個文件系統操作的結
果,以及響應於執行有狀態文件系統操作生成的任何狀態識別數 據。例如,如果請求者請求對請求者預先打開的文件的特定字節段
授權讀—寫鎖,則協議解譯器210可通過向請求者發送通信來執行步 驟328,該通信包括識別資源的新狀態(即,對特定文件的特定字 節段授權讀-寫鎖的確認)的新狀態識別數據。注意,響應於有狀態 文件系統4喿作的成功處理,而不是響應於無狀態文件系統:操作的成 功處理,新的狀態識別信息糹皮傳送給請求者。
在NFS協i義中,可在單個通信中將處理在複合請求中指定的多 個文件系統操作的結果傳送給請求者,因此,可通過包括用於在復 合請求中指定的每個成功執行的有狀態文件系統操作的狀態識另 信息的通信在單個通信中發送在步驟328中傳送給請求者的狀態識 別數據。
如果框架200不能處理複合請求中的特定文件系統操作,則將 單個通信傳送給請求者。通信包括描述(a)在處理複合請求中指 定的文件系統,喿作的、包括任何新狀態識別信息的結果的信息,以 及(b)表示不能執行文件系統操作的信息的信息。
使用框架處理無狀態事務
框架200也可以處理無狀態_清求,例如,無狀態文件系統4喿作 或符合無狀態協議的請求。當協議解譯器210接收包括無狀態請求 的悽t據包時,協i義解譯器210可將ft據包傳送到用於讀取和解析悽t 據包的組件。例如,協議解譯器210將包括FTP請求的數據包發送 至FTP數據包讀取器226,以及協議解譯器210將包括HTTP請求 的數據包發送至HTTP數據包讀取器228。
在讀取和解析無狀態請求之後,FTP數據包讀取器226和HTTP 數據包讀取器228將識別無狀態請求的信息傳送到協議解譯器210。
協i義解i奪器210又可以4丸4亍無狀態請求或與衝醫架210的另一組件進 行通信以執行無狀態請求,例如,資源鎖222可請求鎖定資源。因 為請求是無狀態的,所以一旦請求被成功執行,就無需將狀態信息 分配給請求。
文件系統操作和資料庫事務之間的關係
當客戶端希望寫文件時,客戶端可請求執4亍OPEN文件系統操 作、然後執行多個寫文件系統操作、然後執行CLOSE文件系統操 作。為了該部分的目的,單個文件系統操作涉及多個NFS操作,從 OPEN文<牛系統#:作開始到相應的CLOSE文4牛系鄉克才喿作。為了^L 行單個文件系統操作,可請求資料庫伺服器122執行一個或多個數 據庫事務。在^丸行文件系統:操作之前提交一個或多個資料庫事務中 的每一個。因此,在知道文件系統操作的執行是否成功之前提交通 過特定資料庫事務對資料庫124進行的改變。
因此,如在以下多個部分中的進一步詳細說明的,想要查看資 源的請求者可以期待查看(a)當前反映任一提交的資料庫事務的 資源的版本,或(b)僅反映完成的文件系統操作的資源的版本, 而不反映對應於尚未完成的文件系統才喿作的《壬^]^是交的悽t據庫事 務。
打開提交後的改變
請求者可單獨對相同的資源發布OPEN和CLOSE命令。因此, 即使CLOSE命令可以相對於一個請求者關閉文件,但仍可以相對 於所有請求者關閉文件。術語"最後關閉"是指導致文件對於所有 請求者關閉的CLOSE文件系統操作。因此,當前由一個或多個請 求者打開的任何資源還沒有對資源執行最後關閉。
可在打開文件的時刻和最後關閉的時刻之間#丸4亍每 一 個都改
變文件狀態的多個lt據庫事務。對文件^U亍的改變可對文件^vf亍最 後關閉之前提交。(1)已經在資料庫中提交,但(2)包括還沒有 執行最後關閉的文件的改變在這裡被稱作"打開提交後的改變"。
不一致客戶端
當還沒有對資源^U亍最後關閉並且請求者發送請求以獲得資 源時,請求者將接收的資源狀態取決於與請求者相關的客戶端類 型。"不一致客戶端"是期望查看資源"當前狀態"的客戶端。在 本文中,資源的當前狀態包括對資源作做的任何打開提交後的改 變,但並不包括對資源所做的任何未提交改變。
例如,如果因為資源首先被打開使得兩個提交事務的資料庫改 變了資源狀態,並且還沒有對資源4丸行最後關閉,則對資源發布請 求的不一致客戶端期望查看反映由兩個tt據庫事務進行的改變的 資源狀態。使用NFS、 FTP、或HTTP協議訪問DBMS 120的客戶 端是不一致客戶端的實例。與不一致客戶端相關的請求者將是不一 致請求者,即,請求者期望查看資源的當前狀態。
一致客戶端
一致客戶端是不允許查看任何打開提交後的改變的客戶端。相 反, 一致客戶端僅(a)如果資源已被打開但還沒有被關閉,則在 資源被打開之前,或者(b)在已對資源執行了最後關閉之後查看 提交的對資源進行的改變。例如,假設已經打開了資源,但還沒有 對資源執行最後關閉。請求訪問資源的一致客戶端期望查看僅在執 行OPEN 4喿作之前的資源狀態。
因此,如果因為資源^皮打開^f吏得兩個衝是交的悽t據庫事務改變了 資源狀態,並且還沒有執4亍最後關閉,則發布請求資源的一致客戶 端期望查看不反映由兩個事務完成的改變的資源狀態。為了簡化說 明,必須由一致客戶端看到的資源狀態應被稱作資源的"關閉提交"版本。
使用SQL協議訪問DBMS 120的客戶端是一致客戶端的實例。 與一致客戶端相關的任何請求者將是一致請求者,即,請求者期望 查看處於關閉提交狀態的資源狀態。
為了進一步舉例說明,以下文件系統才喿作和時間點按以下順序 發生-.
(1 )時間tl
(2 )請求者1打開文件fl
(3 )請求者1提交對文件fl的改變
(4)時間t2
(5 )請求者2打開文件fl
(6 )請求者2提交對文件fl的改變
(7) 時間t3
(8) 請求者1關閉文件fl (9 )時間t4
(10) 二清求者2關閉文件fl
(11 )時間t5
在時間t3,文件fl的一致X反本是在tl處的文件,以及文件的 不一致版本是時間t3處的文件。在時間t4,文件fl的一致版本是 時間tl處的文件,以及文件的不一致版本是時間t4處的文件。在 時間t5,文件fl的一致版本是時間t5處的文件,以及文件的不一 致版本是時間t5處的版本。因為一致客戶端期望查看資源的在先狀 態,所以該狀態必須被保存直到對資源執行了最後關閉。
重構關閉提交後的版本
為了以框架200支持一致請求者和不一致請求者,框架200使 用不同類型的鎖,即,悽t據庫鎖和基於文件的鎖。悽t據庫鎖是響應 於執行資料庫操作得到的鎖,並且資料庫鎖在成功完成(提交)數 據庫操作時被釋放。基於文件的鎖是響應於執行OPEN文件系統操 作得到的鎖,並且基於文件的鎖在執^亍CLOSE文件系統才喿作時淨皮 釋放。
圖4是示出了根據本發明實施例的使用資料庫鎖和基於文件的 鎖的功能步驟的流程圖。在步驟410中,請求者請求包括特定資源 的操作。可經由通信鏈路130通過客戶端110向資料庫伺服器122 發送請求來執行步驟410。在執行步驟410之後,處理前進到步驟 412。
在步驟412中,進4亍請求者的請求類型的確定。可通過悽t據庫 伺服器122執行步驟412。基於請求者類型,資料庫伺服器122確 定哪個版本的特定資源發送給請求者。如果請求者是不一致請求 者,則資料庫伺服器122發送當前版本的特定資源。然而,如果請 求者是一致請求者,則資料庫伺服器122發送較老版本的特定資源, 即,關閉l是交後的版本的資源。
可基於請求符合的協議類型完成請求者類型的確定。如果請求
符合SQL協議,則請求者是一致請求者。然而,如果請求符合NFS、 FTP、或HTTP協議,則請求者是不一致請求者。在執行步驟412 之後,處理前進到步-驟414。
在步驟414中,為了執行請求的操作,獲得對於特定資源的第 一鎖。第一鎖是第一種類型的鎖,例如,基於文件的鎖。在執行步 艱艮414之後,處理前進到步驟416。
在步驟416中,為了執行由請求操作要求的每個資料庫操作, 獲得第二鎖。第二鎖是第二種類型的鎖,例如,資料庫鎖。
在實施例中,在執行改變特定資源狀態的任何資料庫操作之 前,將資源的臨時拷貝存儲在資料庫124中。當對特定資源授權了 基於文件的鎖時,對特定資源的改變反映在資源的臨時拷貝中而不 在真實的資源本身中。因為資源的原始版本保持未被修改,所以可 通過服務一致請求者的資料庫伺服器122使用原始版本。資料庫服 務器122可以使用服務不一致請求者的資源的臨時拷貝,這是因為 臨時拷貝反映了已經由提交的資料庫操作對資源所做的所有改變。 在4丸4亍步駛《416之後,處理前進到步驟418。
在步驟418中,響應於相應資料庫操作的成功完成,釋放數據 庫鎖。當由資料庫系統執行操作時,資料庫系統提交用於執行操作 的事務,並釋放對在操作期間修改的所有資源上保存的資料庫鎖。 在執行了由請求的操作要求的所有資料庫操作之後,處理前進到步 驟420。
在步驟420中,響應於文件系統才喿作的成功完成,釋》文基於文 件的鎖。具體地,當對資源執行最後關閉時,釋放資源上的基於文 件的鎖,並且資源的臨時拷貝可^皮建立為資源的當前版本。例如,
通過拷貝對於原始拷貝的臨時拷貝,然後刪除臨時拷貝,臨時拷貝 可被建立為當前版本。
在執行文件系統操作之後,資源的不一致版本和資源的關閉提 交後的版本是相同的。因此,可使用資源的原始版本服務一致請求 者和不一致^"求者,直到資源再次;波打開。
通過4丸行圖4的步驟,基於文件的鎖和資料庫鎖可用於l吏:數據 庫伺服器122能夠服務一致請求者和不一致請求者。當保存資源上 的基於文件的鎖時,4呆持在執行OPEN文件系統:燥作之前的資源狀 態,由此允許資料庫伺服器122服務一致請求者。
管理並發的i方問
當多個請求者執行包括相同資源的操作時,使用基於文件的鎖 同樣是有利的。例如,多個請求者中的每一個都可以發布請求以對 相同的文件扭J亍文件系統:操作。多於一個請求者可以打開文件,並
且多於 一個請求者可以改變資源的狀態。
作為實例,假設第一請求者打開了文件並對文件做出改變。當
第二請求者向數椐庫伺服器122發送相同文件版本的請求時,數據 庫伺服器122確定第二請求者的請求者類型。如果第二請求者是一 致i青求者,則資料庫"艮務器122提供未反映打開了文件之後由第一 請求者對文件所做的任何改變的文件的版本。如果第二請求者是不 一致請求者,則資料庫伺服器122提供反映打開了文件之後由第一 i青求者對文件所估文改變的文件的W反本。
在以下標題為"執行事務語義"的部分中描述關於在資源作為 基於文件的鎖的對象時資料庫伺服器如何可^f呆存資源狀態的進一 步信息。
執行事務語義
存在保存關於資源作為OPEN文件系統操作的對象時的資源 的在先版本的信息是有利的許多原因。首先,如上所述,保存資源 作為OPEN文件系統操作的對象而不是最後關閉的對象時的資源的 在先版本,使資料庫伺服器122服務來自 一致請求者的資源請求。 其次,保持資源的在先版本使資料庫伺服器將資源恢復到在先版 本。例如,當(a)請求者創建不正確版本的資源,(b)請求者創 建與模式不兼容的版本的基於模式的資源,或(c)由多個請求者
對資源執行的改變彼此不兼容時,有必要在各種環境中將資源恢復 到在先版本。
明顯地,需要從資源中去除以將資源恢復到在先狀態的改變可 以包括々是交的改變。因此,由悽t悟庫系統用來去除由未提交的事務 進行的改變的傳統取消機構不足以執行必要的恢復。
本發明的實施例有利地使資源恢復到在先狀態,即使已經執行 了從在先狀態改變資源狀態的提交的資料庫事務。根據本發明的實 施例,通過提交的資料庫事務對資源完成一個或多個改變。在提交 的資料庫事務改變資源的狀態之後,接收到將資源恢復到由提交的 ^t據庫事務作出的改變之前的狀態的^貪求。例如,客戶端110可對
資料庫伺服器122發布請求以將特定文件恢復到特定時間點之前的 狀態,例如,文件的關閉提交後的版本。
響應於接收請求,資源被恢復到特定時間點(例如,當文件被 打開的時間點)之前的狀態。在恢復資源的過程中,資源的當前狀 態停止以反映由提交的資料庫事務對文件作出的改變。用於將資源 恢復到在先狀態的技術將在下一部分中進一步詳細討論。
資源恢復4支術各種技術可用於將資源恢復到特定時間點之前的狀態。例如, 使用的特定技術可依賴於資源是基於模式的資源還是不基於模式 的資源。基於模式的資源是符合定義模式的資源。例如,符合給定 模式的購貨訂單文檔是基於模式的資源的實例。不基於模式的資源 是不是基於模式的資源的任何資源。
以解構形式存儲資源
可以構造形式通過存儲整個資源(例如,將XML文檔存^f諸在 資料庫表的lob列中) 一起來存儲基於模式的資源。可選地,可有 利地通過分別存儲包括基於才莫式的資源的元素來以解構形式存儲 基於模式的資源。例如,描述XML文檔的各個XML標籤的數據 及其相關數據可被存儲在資料庫表的列中。因為分別存儲基於模式 的資源的元素,所以基於一莫式的資源的元素可以需要在讀取基於才莫 式的資源之前^皮重構。
圖5示出了示出用於以解構形式存儲基於模式的資源的機構的 資源表。圖5的表包括參考列504。描述基於模式的資源的數據可 被存儲在資源表中或由資源表參考。例如,資源表的參考列504包 括識別另一表的指針506,即,XML類型表510,其中,存儲關於 基於模式的資源的數據。XML類型表510自身可以參考存儲基於 才莫式的資源的其它^:據元素的一個或多個其它表。例如,通過對嵌 套表520的引用512示出了 XML類型表510。
XML類型表510和任何嵌套表502存儲關於基於模式的資源 元素的數據。當請求者想要讀取基於才莫式的資源的前100位元組時, 資源必須被重構以服務該請求,這是因為XML類型表510並不存 儲用於描述基於模式的資源的每個數據元素出現在哪個字節的信 息。因此,當從基於模式的資源中讀取數據時,基於模式的資源必 須被重構並被存儲在XML的lob歹'J 502中。如果請求者想要讀取
基於才莫式的資源的前100位元組,則這種請求可容易地通過讀取存4諸 在XML的lob列502中的解構資源的前100位元組由悽t據庫月l務器 122執行。
如下面進一步詳細"i兌明的,可在存々者在XML的lob列502中 的資源的解構拷貝上扭J亍後續4乘作,同時留下完整地存儲在XML 類型表510和任何嵌套表520中的資源的解構元。
恢復基於模式的資源
根據一個實施例,基於"在先版本信息"恢復基於模式的資源。 圖5是根據本發明實施例的存儲用於基於模式的資源的在先版本信 息的系統的方框圖。在先版本信息可保存在XML類型表510和任 何嵌套表520中,同時可對存儲在XM的lob列502中的資源的重 構拷貝執行對基於模式的資源的改變,直到對基於模式的資源執行 最後關閉。
在本發明的實施例中,當對資源授權基於文件的鎖時,立即在 執行可改變資源狀態的資料庫操作之前,創建基於模式的資源的構 造拷貝。例如,基於才莫式的資源的構造拷貝可被創建並存儲在XML 的lob列502中。
此後,資源的構造拷貝(存儲在XML的lob列502中的資源 拷貝)被作為資源的當前版本,並對資源的構造拷貝(存儲在XML 的lob列502中的資源拷貝)作出資料庫操作所需的改變。實際上, XML的lob列502中的資源拷貝成為資源髒版(dirty version )的高 速緩存。注意,基於模式的資源的解構版本仍被保持在XML類型 表510中。
為了將基於模式的資源恢復為資源的解構版本,刪除存儲在
XML的lob列502中的資源拷貝。此後,將存儲在XML類型表510 和任何嵌套表520中的資源的解構版本作為資源的當前版本,來代 替存儲在XML類型表510中的構造拷貝。
當地資源執行CLOSE文件系統操作時,對存儲在XML類型 表510中的資源的解構拷貝作出的改變可通過改變存儲在XML類 型表510和任何嵌套表520中的資源的解構版本而變得持久,以反 映存儲在XML的lob列502中的資源的構造拷貝。
使用瞬像時間以恢復不基於模式的資源
圖6A和6B是根據本發明實施例的存儲不基於模式的資源的 在先版本信息的方框圖。圖6A和6B用於討論用於存儲不基於才莫式 的資源的在先版本信息的三種不同方法。
根據第一種方法,如圖6A示出,資源表600將不基於模式的 資源存4諸在LOB列602中。在該方法中,當對資源扭^亍OPEN文 件系統操作時,瞬像時間被存儲在資源表600的列604中。瞬像時 間表示緊接著對資源執行OPEN文件系統操作時之前的邏輯時間。
在授權一個或多個資料庫事務改變資源之後,資料庫事務可以 不是"未完成",但因為瞬像時間,資源可淨皮恢復為使用與資源相 關的取消信息的瞬像時間的狀態。未完成信息是指由DBMS 120保 存的、可用於"重算,,或取消已執行但未授權的資料庫事務。
瞬像時間和取消信息用於將一組改變應用於資源以改變資源 的狀態,以反映瞬^象時間時的資源狀態。 一旦恢復了資源以反映在 瞬像時間時的資源狀態,就從資源表600的歹'J 604中去除瞬像時間。
在實施例中,"倒殺又查詢,,可用於^l誇一ia改變應用於資源以改 變資源的狀態,乂人而在瞬卩象時間時反映資源的狀態。用於才丸4亍倒4又
查詢的l支術在2003年4月30日才是交的標題為"Flashback Database" 的美國專利申請序列第10/427,511號中進行了描述,其全部內容結 合於此作為參考。
將高速緩存列用於恢復不基於模式的資源
如圖6B所示,根據第二種方法,資源表650將不基於模式的 資源存儲在LOB列652中。在該方法中,當對資源執行OPEN文 件系統才喿作時,將資源的拷貝存儲在資源表650的歹'J 654中。列654 被用作"高速緩存列"。具體地,存儲在列654中的資源拷貝被作 為資源的當前版本。當資料庫事務影響對資源的改變時,對存儲在 列654中的資源拷貝而不是存儲在列652中的原始資源作出改變。
如果對資源執行CLOSE文件系統操作,則存儲在654中的資 源拷貝可被存儲在列652中,因此原始資源將反映對通過提交的數 據庫操作對資源作出的任何改變。直到執行了 CLOSE文件系統操 作,存儲在列652中的資源的當前值反映恰好在執行OPEN文件系 統操作之前的資源狀態。因此,如果需要將資源恢復到恰好在執行 OPEN文件系統操作之前的資源狀態,則需要發生對資源表650的 改變僅將去除存儲在列654中的資源拷貝。在對資源執行最後關閉 之前,不一致請求者可查看列654中的資源拷貝,以及一致請求者 可查看存儲在列652中的資源。
混合方法
由於存儲空間的限制,比某一時間更早的取消信息典型地被較 新的取消信息重寫。因此,使用瞬像時間執行恢復(即,第一種方
法)並不總是可行的。然而,當取消信息可用時,基於瞬像時間的 恢復可優於高速緩存列恢復(即,第二種恢復)。
因此,在第三種(混合)方法中,除非資料庫伺服器122確定 資源的取消信息在資源需要被恢復時不可用,否則就執行上述基於 瞬像的方法。如果資料庫伺服器122確定資源的取消信息在資源需 要被恢復時不可用,則上述的高速緩存列方法隨後^皮才丸行。
如果被資料庫伺服器122保存的取消信息的時間總量小於可配 置的時間總量,則資料庫伺服器122可以確定資源的取消信息在資 源需要^皮恢復時不可用。
一致性檢查
才艮據一個實施例,在文件關閉時檢查l奮改文件的一致性,並且 不再存在待決的OPEN文件系統操作。例如,可檢查基於模式的資 源,以保證基於模式的資源符合模式的規則。如果基於模式的資源 不符合相應的模式,則資源可被恢復到在其被打開時的資源狀態。
如上所述,如果資源是授權的基於文件的鎖的對象並且請求者 發布請求以將資源恢復到較早狀態,或者如果資源的一致性檢查失 敗,則如上所述,資源可被恢復到較早的狀態。下面將描述基於文 件的鎖的進 一 步細節和優,泉。
基於文件的鎖
基於文件的鎖能夠使資料庫伺服器122對保存在資料庫124中 的文件扭j亍文件系統l喿作。資源鎖222可管理對存〗諸在悽t據庫124 中的資源的文件系統鎖。基於文件的鎖的性態在三個重要方面不同 於用於無狀態妨、i義(例如,HTTP)的其它鎖。
首先,可對一部分資源而不是僅在全部資源上授權基於文件的 鎖。具體地,可在資源上的字節段內授權基於文件的鎖。因此,單 個文件可以是多個基於文件的鎖的對象,其中,每個基於文件的鎖 覆蓋文件的不同字節段。
第二,基於文件的鎖是以租用為基礎的,這意P木著一旦對請求 者授權特定的基於文件的鎖,則在特定文件鎖定期滿之後,在第一 周期授權特定鎖。然而,由請求者接收的任何通信更新第二周期的 特定鎖。因此,在文件系統鎖定期滿之前,只要請求者與悽t據庫月良
務器122進行通信,請求者就可不斷地更新基於文件的鎖。
一旦特定文件系統鎖定期滿,就更新查找才幾構212以反映不再 授權特定文件鎖。可周期性地檢查保存在查找機構212內的數據以 ^f呆i正通過"i青求者i青求的每個鎖仍然有效。
當特定請求者請求與先前授權的另 一鎖相牴觸時,可4企查先前 授權的鎖以保證先前授權的鎖仍然有效。如果先前授權的鎖不再有 效,則更新存儲在查找機構212中的信息以反映該鎖無效(例如, 可刪除關於鎖的信息)。同樣,當特定客戶端期滿時,釋放已對特 定客戶端授權的所有鎖。在實施例中,因為客戶端最後與框架200 通信,所以客戶端可在經歷了時間的可配置量之後期滿。因此,如 果先前授權的鎖與請求授權的鎖相牴觸,則可檢查與先前授權的鎖 相關的客戶端以-驗i正該客戶端仍然有效。如果客戶端無效,則釋方文 先前授權的鎖,並且可4丸^S青求械J受外又的鎖。在本發明的實施例中, 可通過4企查客戶端B樹^丸行特定客戶端是否已經期滿的確定。
對於無狀態協議鎖的基於文件的鎖的第三個區別是沒有僅提 供讀取訪問的基於文件的鎖。相反,就基於文件的鎖授權了讀取訪 問來說,基於文件的鎖還授權讀-寫訪問。在本發明的實施例中,基於文件的鎖包括覆蓋全部資源的第一
組和覆蓋部分資源(例如,資源的字節段)的第二組。圖7是示出 根據本發明實施例的各種基於文件的鎖及其兼容性的表。圖7中示 出的各種基於文件的鎖中的每一個都將在下面進行簡要地描述。
字節-讀-寫基於文件的鎖是對於部分資源的鎖。字節-讀-寫基於 文件的鎖可用於授權對資源上的字節段的讀和寫訪問。
字節-寫基於文件的鎖是對於部分資源的鎖。字節-寫基於文件 的鎖可用於4受衝又對資源上字節#殳的寫訪問。
拒絕-讀基於文件的鎖是對於全部資源的鎖。拒絕-讀基於文件 的鎖可用於拒絕除4受權的拒絕-讀鎖之外的任何請求者對資源的讀 訪問。
拒絕-寫基於文件的鎖是對於全部資源的鎖。拒絕-寫基於文件 的鎖可用於拒絕除授權的拒絕-寫鎖之外的任何請求者對資源的寫 訪問。
基於文件的鎖與共享鎖或排4也鎖(例如WebDAV鎖)不兼容。 圖7描述了各種基於文件的鎖的兼容性。當特定的基於文件的鎖與 先前授權的另一鎖不兼容時,基於文件的鎖將不被授權。因此,如 果字節_讀_寫鎖和字節_寫鎖的範圍不相4氐觸,則可對已具有在其上
授權的字節-寫鎖的資源授權字節-讀-寫鎖。然而,不能在已具有在 其上授權的字節-寫鎖的資源上授權拒絕-讀鎖。
實際應用簇中的基於文件的鎖
例如,可使用Oracle公司的RAC 10g選項,在實際應用蔟 (RAC )中實現資料庫122。在RAC環境中,當對資源授權基於文
件的鎖時,數據必須被存儲在描述哪個資料庫伺服器對資源授權基
於文件的鎖的悽t據庫124中。
例如,存儲在資料庫中的資源可與(a)表示已對資源授權基 於文件的鎖的標誌以及(b)識別對資源授權基於文件的鎖的數據 庫伺服器的信息相關。查找機構212將關於授權的基於文件的鎖的 數據保持在存儲器中。如果關於授權的基於文件的鎖的信息對於 RAC實例中的其它節點可見,則存儲在存儲器中的信息必須永久地 被存儲或以保存數據一致性的方式傳送到RAC的其它節點。如果 存儲在查找機構212中的信息對於除RAC存在的資料庫伺服器之 外的RAC的其它資料庫伺服器不可見,則由第一資料庫伺服器授 權的任何基於文件的鎖可與第二資料庫伺服器的基於文件的鎖相 牴觸。
122處理對於由資料庫124保存的文件的有狀態請求,例如,請求 的NFS操作。因此,由於資料庫122可使用上述的文件系統操作鎖, 所以客戶端IIO可以阻止數據一致性的方式使用NFS協議訪問存儲 在資料庫124中的文件。
實現機構
可在根據本發明實施例的計算機系統上實現客戶端110、數據 庫伺服器122、和資料庫124。圖8是示出了可在其上實現本發明 實施例的計算才幾系統800的框圖。計算機系統800包括總線802或 用於傳輸信息的其它通信才幾構,以及用於處理信息的與總線802連 接的處理器804。計算機系統800還包括主存儲器806 (例如,隨 機存取存儲器(RAM)或其它動態存儲裝置),連接至總線802, 用於存儲信息和由處理器804執行的指令。主存儲器806還可用於 在由處理器804執行指令期間存儲臨時變量或其它中間信息。計算
機系統800還包括連接至總線802的只讀存儲器(ROM) 808或其 它靜態存儲裝置,用於存儲靜態信息或用於存儲器804的指令。設 置諸如磁碟或光碟的存儲裝置810,並將其連接至用於存儲信息和 指令的總線802。
計算才幾系統800可經由總線802連4妄至用於向計算才幾用戶顯示 信息的顯示器812,例如,陰極射線管(CRT)。包括字母數字和其 它鍵的輸入裝置814連接至總線802,用於將信息和命令選擇傳輸 到處理器804。另一種類型的用戶輸入裝置是諸如滑鼠、跟蹤球、 或光標方向鍵的光標控制器816,用於將方向信息和命令選擇傳輸 到處理器804,並用於控制光標在顯示器812上的移動。該輸入裝 置通常具有在第一軸(例如,x)和第二軸(例如,y)的兩個軸上 的兩個自由度,這使裝置指定平面內的位置。
本發明涉及^f吏用實施本文所述4支術的計算才幾系統800。才艮據本 發明的一個實施例,響應於執行包含在主存儲器806中的一個或多 個指令的一個或多個序列的處理器804,通過計算機系統800執行 這些技術。這些指令可從諸如存儲裝置810的另一機器可讀介質讀 入主存儲器806。執行包含在主存儲器806中的指令序列使得處理 器804執行本文中描述的處理步驟。在可選實施例中,可以用硬連 線電路代替軟體指令或與軟體指令相結合以實施本發明。因此,本 發明的實施例不限於硬體電路和軟體的任何具體組合。
本文使用的術語"機器可讀介質"指的是參與提供使機器以具 體方式操作的數據的任何介質。在4吏用計算才幾系統800實施的一個 實施例中,例如,各種機器可讀介質參與將指令4是供給處理器804 用於執行。這種介質可採用多種形式,包括但不限於非易失性介質、 易失性介質、和傳輸介質。例如,非易失性介質包括諸如存儲裝置 810的光碟或^茲盤。易失性介質包括諸如主存^f諸器806的動態存<諸 器。傳輸介質包括同軸線纜、銅線和光纖,包括構成總線802的導
線。傳輸介質還可採用聲波或光波的形式,_渚如在無線電波和紅外 數據通信中生成的那些波。
例如,機器可讀介質的通常形式包括軟盤、柔性盤、硬碟、》茲
帶、或其它磁性介質、CD-ROM、 DVD、或任何其它光介質、穿孔 卡、紙帶、4壬何其它具有孔式才羊的物理介質、RAM 、 PROM 、 EPROM 、 FLASH-EPROM、任何其它存儲晶片或盒式;茲帶、下文中描述的載 波,或計算才幾可讀取的4壬〗可其它介質。
各種形式的機器可讀介質可參與將一個或多個指令的一個或 多個序列傳送到處理器804用於衝丸行。例如,指令可最初承載在遠 程計算機的磁碟上。該遠程計算機可將指令加載進其動態存儲器並 使用數據機通過電話線發送這些指令。計算才幾系統800的本地 數據機可接收電話線上的數據並使用紅外發射器將數據轉換 為紅外信號。紅外探測器可接收紅外信號中攜帶的數據,並且適當 的電路可將數據放到總線802上。總線802將數據傳送到主存儲器 806,處理器804從主存儲器806中取得並執行指令。由主存儲器 806接收的指令可在處理器804執行之前或之後可選地存儲在存儲 裝置810上。
計算機系統800還包括連接到總線802的通信接口 818。連接 到與本地網822相連的網絡鏈路820的通信接口 818提供雙路數據 通信。例如,通信接口 818可以是綜合服務數字網絡(ISDN)卡或 數據機,用於提供到相應類型的電話線的數據通信連接。作為 另一個實例,通信4妄口 818可以是區域網(LAN)卡,用於提供到 兼容LAN的數據通信連接。還可實施無線鏈4妄。在任何這樣的實 施中,通信接口 818發送和接收承載表示各種類型信息的數字數據 流的電信號、電磁信號或光信號。
網絡鏈路820 —般通過一個或多個網絡向其它數據裝置提供數 據通信。例如,網絡鏈^各820可通過本地網822提供到主才幾824或 者由網際網路服務商(ISP) 826操作的數據設備的連接。ISP 826又 通過現在通常稱作"網際網路"828的全球分組悽t據通信網絡提供數 據通信服務。本地網絡822和網際網路828都使用攜帶數字數據流的 電信號、電磁信號或光信號。通過各種網絡的信號和在網路鏈路820 上並通過通信接口 818的信號(其將數字數據傳送到計算機系統800 和從計算機系統800傳送數字數據的信號)是傳輸信息的載波的示 例性形式。
計算機系統800可通過網絡、網絡鏈3各820、和通信4妻口 818 發送消息和接收數據(包括程序代碼)。在網際網路實例中,伺服器 830可通過網際網路828、 ISP826、本地網822、和通信才妾口 818傳車餘 用於應用禾呈序的i青求代碼。
當代碼被接收到時,所接收的代碼可被處理器804執行、和/ 或存儲在存儲裝置810或其它非易失性存儲裝置中用於以後執行。 這樣,計算才幾系統800可獲得載波形式的應用程式代碼。
在上述i兌明書中,參照許多因不同實施而不同的具體細節描述 了本發明的實施例。因此,本發明以及申請人所期望的本發明的唯 一和專有的標誌,是以公布的權利要求的特定形式從該申請所公布 的一組權利要求,包括任何後續的修改。對於包含在這樣的權利要 求中的術語,在此清楚闡述的任何定義都將限定權利要求中所使用 的這種術語的含意。因此,在權利要求中沒有明確地提到的限定特 徵、元件、特性、特徵、優點或屬性不應當以任何方式限制這種權 利要求的範圍。因此,說明書和附圖應當看作說明性的而不是限制 性的。
權利要求
1.一種機器執行的方法,包括在資料庫伺服器處接收請求,以對由所述資料庫伺服器管理的文件的一部分執行文件操作;響應於所述接收所述請求,授權僅覆蓋包含在所述文件操作中的所述文件的所述部分的鎖;以及對所述文件的所述部分執行所述文件操作。
2. 根據權利要求1所述的方法,其中,所述操作涉及在所述文件 的字節段內的信息,以及對應於字節的所述範圍授權的所述鎖。
3. 根據權利要求1所述的方法,其中,對請求者授權所述鎖,以 及其中,所述鎖拒絕除所述《青求者之外的4壬4可實體對所述文件 進行讀訪問。
4. 根據權利要求1所述的方法,其中,對請求者授權所述鎖,以 及其中,所述鎖拒絕除所述請求者之外的任何實體對所述文件進4亍寫i方問。
5. 根據權利要求1所述的方法,其中,所述部分小於所述文件。
6. 根據權利要求5所述的方法,其中,所述鎖授權對所述文件上 的字節,殳進4亍讀和寫訪問。
7. 根據權利要求1所述的方法,其中,所述鎖是第一鎖,其中, 所述部分是第一部分,以及其中,所述方法還包括以下步駛《/人請求者處^妾收用於請求對所述文件的第二部分的第二 鎖的第二i青求;以及通知所述請求者所述第二請求將不#皮寺丸^f亍,因為所述#t 據庫伺服器已經授權對所述文件的所述第 一鎖。
8. —種4幾器扭j亍的方法,包4舌在資料庫伺服器處接收來自實體的請求,以執行請求授 權特定鎖的操作;所述資料庫伺服器對所述實體授權特定時間周期的所述 特定鎖;不從所述實體^妄收請求以釋方文所述特定鎖,如果沒有從 所述實體接收預定時間總量的通信,則自動釋放所述特定鎖。
9. 根據權利要求8所述的方法,其中,所述特定鎖拒絕除所述實 體之外的任一請求者對資源進4亍讀訪問。
10. 根據權利要求8所述的方法,其中,所述特定鎖拒絕除所述實 體之外的任一請求者對資源進行寫訪問。
11. 根據權利要求1所述的方法,其中,所述特定鎖授權所述實體 對資源上的字節段進行讀和寫訪問。
12. 根據權利要求1所述的方法,其中,所述特定鎖授權所述實體 對資源上的字節4殳進行寫訪問。
13. 根據權利要求1所述的方法,其中,授權所述鎖的所述步驟包 4舌以下步驟將條目添加到B樹,其中,所述條目存^f諸識別所述文件 才乘作所涉及的所述文件的所述部分的信息。
14. 根據權利要求1所述的方法,其中,授權所述鎖的所述步驟包 4舌以下步艱《將條目添加到B樹,其中,所述條目存^f諸識別"i青求所述 文件操作的請求者的信息。
15. 根據權利要求1所述的方法,其中,授權所述鎖的所述步驟包 :括以下步艱《訪問B樹,以確定第二鎖是否已對所述文件的所述部分 上授權,所述第二鎖將阻止執行所述文件操作。
16. —種承載一個或多個指令序列的計算才幾可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器執行權利要求1中所述的方法。
17. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列^皮一個或多個處理器執4亍時,4吏所述一 個或多個處理器執行權利要求2中所述的方法。
18. —種7 義載一個或多個指令序列的計算才幾可讀介質,其中,當所 述一個或多個指令序列^皮一個或多個處理器執行時,4吏所述一 個或多個處理器執行權利要求3中所述的方法。
19. 一種岸義載一個或多個指令序列的計算衝幾可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器執4亍權利要求4中所述的方法。
20. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器執行權利要求5中所述的方法。
21. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器4丸4亍在4又利要求6中所述的方法。
22. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器執行在權利要求7中所述的方法。
23. —種7 義載一個或多個指令序列的計算4幾可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執4亍時,使所述一 個或多個處理器^U亍在^又利要求8中所述的方法。
24. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列^皮一個或多個處理器扭J亍時,使所述一 個或多個處理器執行在權利要求9中所述的方法。
25. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列^皮一個或多個處理器^U亍時,使所述一 個或多個處理器^M亍在^^利要求10中所述的方法。
26. —種承載一個或多個指令序列的計算才幾可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器扭J亍在4又利要求11中所述的方法。
27. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器執行在權利要求12中所述的方法。
28. —種7 義載一個或多個指令序列的計算才幾可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器^M亍時,4吏所述一 個或多個處理器執行在權利要求13中所述的方法。
29. —種承載一個或多個指令序列的計算機可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器執行在權利要求14中所述的方法。
30. —種承載一個或多個指令序列的計算4幾可讀介質,其中,當所 述一個或多個指令序列被一個或多個處理器執行時,使所述一 個或多個處理器執行在權利要求15中所述的方法。
全文摘要
提供了一種用於在資料庫伺服器上執行文件系統操作鎖的方法和裝置。在資料庫伺服器處接收對由資料庫伺服器管理的一部分文件執行文件操作的請求。響應於接收該請求,資料庫伺服器授權僅覆蓋包含在文件操作中的部分文件的鎖。例如,資料庫伺服器可授權覆蓋文件上字節段的鎖,其中,字節段小於整個文件。此後,資料庫伺服器對文件執行文件操作。文件操作可以是NFS操作。
文檔編號G06F17/30GK101111840SQ200580047631
公開日2008年1月23日 申請日期2005年4月28日 優先權日2004年12月16日
發明者埃裡克·塞德拉, 尼普恩·阿加瓦爾, 拉維·默西, 比普爾·辛哈, 沙姆·潘納拉, 瓦蘇德哈·克裡希納斯瓦米, 納米特·賈殷, 薩姆·伊迪庫拉 申請人:甲骨文國際公司

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀