專利名稱:用于存儲(chǔ)平臺(tái)中的鎖定和隔離的系統(tǒng)和方法
用于存儲(chǔ)平臺(tái)中的鎖定和隔離的系統(tǒng)和方法本申請(qǐng)是申請(qǐng)日為2004年7月29日、國(guó)際申請(qǐng)?zhí)枮镻CT/US2004/024435、中國(guó) 國(guó)家申請(qǐng)?zhí)枮?00480001696.4、發(fā)明名稱為"用于存儲(chǔ)平臺(tái)中的鎖定和隔離的系統(tǒng)和 方法"的專利申請(qǐng)的分案申請(qǐng)。發(fā)明領(lǐng)域本發(fā)明涉及數(shù)據(jù)檢索和操作領(lǐng)域,尤其涉及存儲(chǔ)平臺(tái)中的鎖定和隔離。 發(fā)明背景近來計(jì)算領(lǐng)域中的一種發(fā)展是計(jì)算機(jī)操作系統(tǒng)可以用于構(gòu)建在關(guān)系型引擎上的存 儲(chǔ)平臺(tái)。這種存儲(chǔ)平臺(tái)可以是,例如,來自華盛頓州雷蒙德市的微軟公司的MICRSOFT WINDOWS FILE SYSTEM ( "WinFS" ) 。 WinFS構(gòu)建在在來自上面提到的微軟公 司的SQL SERVER 之上。WinFS平臺(tái)的數(shù)據(jù)模型以項(xiàng)目、項(xiàng)目擴(kuò)展和關(guān)系定義數(shù)據(jù)存儲(chǔ)單元。項(xiàng)目是存儲(chǔ) 信息的基本單元。該數(shù)據(jù)模型提供了一種用于聲明項(xiàng)目和項(xiàng)目擴(kuò)展,以及用于建立項(xiàng) 目之間的關(guān)系的機(jī)制。項(xiàng)目是可以使用諸如復(fù)制、刪除、移動(dòng)、打開等的操作來存儲(chǔ) 和檢索的單元。項(xiàng)目旨在表示數(shù)據(jù)的真實(shí)世界和易于理解的單元,諸如聯(lián)系人、人、 服務(wù)、位置、文檔(各種類型的)等。項(xiàng)目擴(kuò)展是擴(kuò)展現(xiàn)有項(xiàng)目的定義的一種方法, 而關(guān)系定義了項(xiàng)目之間的聯(lián)系。在WinFS中,定義了不同的項(xiàng)目類型用于存儲(chǔ)信息。例如,為聯(lián)系人、人、服務(wù)、 位置、文檔等定義了項(xiàng)目類型。每個(gè)項(xiàng)目類型由定義給定項(xiàng)目的屬性和特性的模式 (schema)描述。例如,"Location (位置)"項(xiàng)目可以被定義為具有諸如EAddresses (電子地址)、MetropolitanRegion(大城市地區(qū))、Neighborhood(街區(qū))和Postal Addresses (郵政地址)等屬性。 一旦為給定的項(xiàng)目類型定義了模式,在數(shù)據(jù)存儲(chǔ)中創(chuàng)建對(duì)應(yīng)的 用戶定義類型(UDT)。存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中的項(xiàng)目類型的每個(gè)實(shí)例具有與它相關(guān)聯(lián)的 唯一標(biāo)識(shí)符(例如,Item ID (項(xiàng)目ID));在一個(gè)實(shí)施例中,每個(gè)項(xiàng)目標(biāo)識(shí)符是全局唯一標(biāo)識(shí)符(GUID)。如同SQL SERVER中的UDT的任何實(shí)例一樣,WinFS項(xiàng) 目的實(shí)例最終被以分離的UDT列存儲(chǔ)在數(shù)據(jù)存儲(chǔ)的表中。WinFS的構(gòu)件塊之一是它結(jié)合了來自SQL Server的文件流技術(shù)。文件流是關(guān)系型 數(shù)據(jù)表的一個(gè)列,其中該列的每個(gè)單元的數(shù)據(jù)被存儲(chǔ)在與存儲(chǔ)著該表的其它列的文件 相分離的文件中。WinFS的一個(gè)重要特性是WinFS項(xiàng)目的每個(gè)字段可以被指定為文件 流字段。文件流技術(shù)對(duì)于包括具有大量數(shù)據(jù)的字段的項(xiàng)目特別有利。例如,Person(人) 項(xiàng)目可以具有"照片"字段,它包括對(duì)應(yīng)的人的數(shù)字照片。該照片字段可以包括不適 合存儲(chǔ)在數(shù)據(jù)表中的大量數(shù)據(jù)。WinFS的另一個(gè)重要特性是它能夠允許對(duì)文件流字段進(jìn)行"帶外"訪問,因此它 們可以通過傳統(tǒng)的文件系統(tǒng)調(diào)用(打開、讀/寫、關(guān)閉等)來訪問,而不必使用數(shù)據(jù)庫(kù) 存儲(chǔ)的底層查詢語言。用于提交傳統(tǒng)文件系統(tǒng)調(diào)用的文件系統(tǒng)應(yīng)用程序接口 (API) 可以是,例如,來自上面提到的微軟公司的Win32 ,而數(shù)據(jù)庫(kù)存儲(chǔ)的底層?xùn)嗽冋Z言 可以是,例如,事務(wù)處理結(jié)構(gòu)化查詢語言(T-SQL)。因?yàn)閃inFS允許對(duì)文件流字段 進(jìn)行帶外訪問,所以包含這種文件流字段的項(xiàng)目可以通過兩種不同的通道操作T-SQL 和Win32。T-SQL和Win32的一個(gè)不同之處是T-SQL具有定義完善的事務(wù)和鎖定模型,而 Win32沒有。如本文中所使用的,術(shù)語"事務(wù)"指T-SQL中的事務(wù)處理模型是以語句 的概念建立的。 一個(gè)T-SQL語句表示對(duì)數(shù)據(jù)存儲(chǔ)的一種操作,諸如"SELECT"或 "UPDATE"語句。T-SQL語句可以被作為單語句事務(wù)或多語句事務(wù)的一部分被包括。 在單語句事務(wù)中,單個(gè)被執(zhí)行的T-SQL語句在數(shù)據(jù)存儲(chǔ)上創(chuàng)建一個(gè)事務(wù),該事務(wù)在語 句成功執(zhí)行時(shí)被提交。事務(wù)的生命期由語句限定。在多語句事務(wù)中, 一個(gè)應(yīng)用程序發(fā) 出"開始事務(wù)"和"提交事務(wù)"的T-SQL語句,以便明確地開始并對(duì)數(shù)據(jù)存儲(chǔ)提交(或 中止)事務(wù)。開始(begin)和提交(commit)括號(hào)內(nèi)的所有語句作為數(shù)據(jù)存儲(chǔ)上的同 一個(gè)多語句事務(wù)的一部分來執(zhí)行。T-SQL具有用于事務(wù)鎖定的定義完善的語義。 一般地,"SELECT"語句將獲得 行上的讀鎖,而"UPDATE"語句將獲得行上的寫鎖。寫鎖被保持直到事務(wù)被提交或 中止為止,而讀鎖可以被較早地釋放。如果事務(wù)具有行上的寫鎖,則其它事務(wù)被阻塞 獲得對(duì)該行的讀和/或?qū)懺L問。如果事務(wù)試圖獲得對(duì)另一個(gè)事務(wù)已經(jīng)獲得了寫鎖的行的 讀和/或?qū)懺L問,則會(huì)發(fā)生沖突??梢允褂脴?biāo)準(zhǔn)的沖突分解方法來分解該沖突。與使用語句的概念相反,Win32使用傳統(tǒng)的文件系統(tǒng)共享模式來定義操作(打開、讀/寫、關(guān)閉)之間的隔離。文件共享讀標(biāo)志使得能夠進(jìn)行讀共享,這意味著對(duì)一個(gè)文 件的打開可以與對(duì)同一文件的另一個(gè)打開共享讀。文件共享寫標(biāo)志使得能夠進(jìn)行寫共 享,這意味著對(duì)一個(gè)文件的打開可以與對(duì)同一文件的另一個(gè)打開共享寫。另外,文件 共享讀標(biāo)志和文件共享寫標(biāo)志兩者可以被設(shè)置為既允許讀共享也允許寫共享。此外,兩種文件共享標(biāo)志都不能被設(shè)置為拒絕共享。重要的是,傳統(tǒng)的Win32 API和其它傳 統(tǒng)文件系統(tǒng)API不能夠使操作能在事務(wù)的環(huán)境中執(zhí)行。因此,本領(lǐng)域需要一種用于存儲(chǔ)平臺(tái)中的鎖定和隔離的系統(tǒng)和方法,所述的系統(tǒng) 和方法統(tǒng)一了查詢語言事務(wù)和鎖定模型以及文件系統(tǒng)共享模型。事務(wù)模型的統(tǒng)一將在 諸如WinFS等存儲(chǔ)平臺(tái)中提供一種用于操作包含文件流字段的項(xiàng)目的總體事務(wù)模型。 還希望該總體框架使得文件系統(tǒng)操作能夠在事務(wù)環(huán)境中執(zhí)行。發(fā)明概述本發(fā)明針對(duì)用于存儲(chǔ)平臺(tái)中的鎖定和隔離的系統(tǒng)和方法。根據(jù)本發(fā)明,用于文件 系統(tǒng)操作的共享模型與用于查詢語言語句的事務(wù)和鎖定模型統(tǒng)一為一體,以便提供一 種用于存儲(chǔ)平臺(tái)中的文件流的鎖定和隔離的總體框架。此外,為文件系統(tǒng)操作提供了 對(duì)事務(wù)的支持,從而它們可以在事務(wù)環(huán)境中執(zhí)行。因此,單個(gè)事務(wù)可以包括單個(gè)文件 系統(tǒng)語句、單個(gè)查詢語言語句、多個(gè)文件系統(tǒng)語句、多個(gè)查詢語言語句以及文件系統(tǒng) 和查詢語言語句的組合。此外,提供了對(duì)非事務(wù)文件系統(tǒng)操作的支持,從而文件系統(tǒng) 操作不必在事務(wù)環(huán)境中執(zhí)行。根據(jù)本發(fā)明的一個(gè)方面,文件系統(tǒng)語句可以包括對(duì)打開項(xiàng)目的調(diào)用,讀或?qū)懖僮?以及對(duì)關(guān)閉項(xiàng)目的調(diào)用。文件系統(tǒng)語句可以獲得包括對(duì)應(yīng)于該項(xiàng)目的用戶定義類型 (UDT)的數(shù)據(jù)表的行上的隔離。事務(wù)處理的寫語句獲得該事務(wù)的生命期中行上的獨(dú) 占鎖。事務(wù)處理讀語句獲得行的讀已提交視圖。文件系統(tǒng)共享模式可以用于定義事務(wù) 之間以及一個(gè)事務(wù)內(nèi)的語句之間的隔離。此外,非事務(wù)處理的語句也可以基于共享模 式獲得隔離。根據(jù)本發(fā)明的另一個(gè)方面,在存儲(chǔ)平臺(tái)處可以接收多個(gè)査詢語言語句和/或文件系 統(tǒng)語句。所述語句可以與事務(wù)相關(guān)聯(lián)??梢源_定該事務(wù)的開始是否將產(chǎn)生沖突。如果 是的,則該沖突可以根據(jù)諸如阻塞等標(biāo)準(zhǔn)沖突分解技術(shù)來分解。如果沒有沖突,則通 過獲得用于事務(wù)內(nèi)的查詢語言語句和/或文件系統(tǒng)語句的適當(dāng)?shù)淖x和/或?qū)戞i,開始該事 務(wù)。通過下面參考附圖對(duì)說明性實(shí)施例的詳細(xì)描述,本發(fā)明的其它特性和優(yōu)點(diǎn)將變得 顯而易見。附圖的簡(jiǎn)要說明在參考附圖閱讀下面的詳細(xì)描述之后,將會(huì)更好地理解說明性實(shí)施例,附圖中
圖1是根據(jù)本發(fā)明包括用于項(xiàng)目實(shí)例的數(shù)據(jù)的示例性數(shù)據(jù)庫(kù)表; 圖2是根據(jù)本發(fā)明的示例性存儲(chǔ)平臺(tái)環(huán)境的框圖;圖3是根據(jù)本發(fā)明用于在事務(wù)環(huán)境中執(zhí)行文件系統(tǒng)語句的示例性方法的流程圖; 圖4是根據(jù)本發(fā)明用于非事務(wù)處理讀文件系統(tǒng)語句的鎖定和隔離的示例性方法的 流程圖;圖5是根據(jù)本發(fā)明用于非事務(wù)處理寫文件系統(tǒng)語句的鎖定和隔離的示例性方法的 流程圖;圖6是表示具有可在其中實(shí)現(xiàn)本發(fā)明的各種計(jì)算設(shè)備的示例性網(wǎng)絡(luò)環(huán)境的框圖;以及圖7是表示可在其中實(shí)現(xiàn)本發(fā)明的示例性計(jì)算設(shè)備的框圖。 說明性實(shí)施例的詳細(xì)描述為了滿足法定要求以細(xì)節(jié)描述了本發(fā)明的主題。然而,該描述本身并不旨在限制 本專利的范圍。相反,發(fā)明人構(gòu)想,結(jié)合其它當(dāng)前的或未來的技術(shù),所提出的主題也 可以用其它的方式實(shí)施,以便包括不同的步驟或與本文檔中所描述的相類似的元素。如上所述,本發(fā)明針對(duì)用于諸如上面提到的WinFS等存儲(chǔ)平臺(tái)中的鎖定和隔離的 系統(tǒng)和方法。本發(fā)明使得諸如上面提到的Win32等文件系統(tǒng)操作能夠在事務(wù)環(huán)境中執(zhí) 行。此外,本發(fā)明統(tǒng)一了用于文件系統(tǒng)操作的模型和用于諸如上面提到的T-SQL等查 詢語言的事務(wù)和鎖定模型,從而在存儲(chǔ)平臺(tái)中提供了一種用于操作包含文件流字段的 項(xiàng)目的總體模型?,F(xiàn)在參考圖1,存儲(chǔ)平臺(tái)項(xiàng)目的實(shí)例可被存儲(chǔ)在諸如示例表200的關(guān)系型數(shù)據(jù)庫(kù) 表內(nèi)。表200包括兩個(gè)列ID列202a和用戶定義類型(UDT)列202b。列202a中的 每個(gè)ID提供了用于對(duì)應(yīng)的UDT的唯一標(biāo)識(shí)符。列202b中的每個(gè)UDT對(duì)應(yīng)于項(xiàng)目類 型的一個(gè)實(shí)例。例如,列202b中的每個(gè)UDT可以對(duì)應(yīng)于與Person項(xiàng)目類型相關(guān)聯(lián)的 特定的人。UDT1-3的字段204a-c分別被指定為文件流字段,意味著該字段的數(shù)據(jù)被存儲(chǔ)在與表200相分離的文件中。文件流字段204a-c對(duì)于存儲(chǔ)諸如數(shù)字照片等包括大 量數(shù)據(jù)的字段是有利的。例如,Person項(xiàng)目可以具有對(duì)應(yīng)的"照片"字段,它是包括 人的數(shù)字照片的文件流字段。如下詳細(xì)所述,本發(fā)明能夠鎖定和隔離行,諸如表200 的行1-3的每個(gè)行。圖2示出了一種示例性存儲(chǔ)平臺(tái)環(huán)境。如上所述,客戶機(jī)應(yīng)用程序300可以直接 通過存儲(chǔ)平臺(tái)308,或經(jīng)由通過文件系統(tǒng)API302的"帶外"訪問來操作數(shù)據(jù)存儲(chǔ)310 中的項(xiàng)目。如果客戶機(jī)應(yīng)用程序300直接通過存儲(chǔ)平臺(tái)308操作項(xiàng)目,則這種操作可 以使用諸如T-SQL等查詢語言來執(zhí)行。在另一方面,如果客戶機(jī)應(yīng)用程序300經(jīng)由通 過文件系統(tǒng)API302的"帶外"訪問來操作項(xiàng)目,則這種操作可以使用諸如Win32等 文件系統(tǒng)API來執(zhí)行。"帶外"訪問僅對(duì)包括文件流字段的項(xiàng)目可用??蛻魴C(jī)應(yīng)用程序300可以通過使用存儲(chǔ)平臺(tái)方法直接訪問存儲(chǔ)平臺(tái)308來啟動(dòng)數(shù) 據(jù)存儲(chǔ)310上的查詢。繼續(xù)Person項(xiàng)目類型的例子,客戶機(jī)應(yīng)用程序300可以使用存 儲(chǔ)平臺(tái)308的"FindAll"方法來啟動(dòng)對(duì)Person類型中"Birthday"字段的值大于特定 日期(例如,1999年12月31日)的所有實(shí)例的查詢。然后存儲(chǔ)平臺(tái)308將"FindAll" 操作翻譯為T-SQL中的查詢或另一種查詢語言,并且將它提交給底層數(shù)據(jù)存儲(chǔ)310。 然后數(shù)據(jù)存儲(chǔ)310對(duì)Person UDT的對(duì)應(yīng)的實(shí)例執(zhí)行該査詢,并且返回Person UDT的 每個(gè)匹配實(shí)例的被存儲(chǔ)的值。然后存儲(chǔ)平臺(tái)308包裝Person UDT對(duì)象并且將它們作為 Person類型的項(xiàng)目返回給應(yīng)用程序。除了上面提出的能夠?qū)?xiàng)目進(jìn)行直接訪問之外,存儲(chǔ)平臺(tái)308允許通過文件系統(tǒng) API 302對(duì)項(xiàng)目?jī)?nèi)的文件流字段進(jìn)行"帶外"訪問。在圖2的示例性環(huán)境中,客戶機(jī) 應(yīng)用程序300通過例如調(diào)用存儲(chǔ)平臺(tái)308的CreateFile (創(chuàng)建文件)接口并且將路徑名 傳遞給存儲(chǔ)平臺(tái)308來發(fā)起帶外訪問,所述路徑名基于持久存儲(chǔ)的項(xiàng)目(UDT)的實(shí) 例內(nèi)的對(duì)應(yīng)字段的標(biāo)識(shí)來標(biāo)識(shí)所請(qǐng)求的數(shù)據(jù)。當(dāng)文件系統(tǒng)API 302從客戶機(jī)應(yīng)用程序 300接收到包括存儲(chǔ)平臺(tái)路徑名的CreateFile命令時(shí),文件系統(tǒng)API 302就這樣識(shí)別它, 并且將它轉(zhuǎn)發(fā)到FS代理306。然后FS代理306向存儲(chǔ)平臺(tái)308發(fā)出"OPEN (打開)" 調(diào)用,傳遞項(xiàng)目字段的存儲(chǔ)平臺(tái)路徑名。然后存儲(chǔ)平臺(tái)308從存儲(chǔ)平臺(tái)路徑名中標(biāo)識(shí) 項(xiàng)目和字段,并且然后將這種信息傳遞給數(shù)據(jù)庫(kù)引擎310。存儲(chǔ)平臺(tái)308可以傳遞一 數(shù)據(jù)庫(kù)引擎函數(shù),該函數(shù)返回以上面所述的方式與數(shù)據(jù)庫(kù)存儲(chǔ)相分離地存儲(chǔ)的UDT 對(duì)象的文件流字段的文件系統(tǒng)路徑名。數(shù)據(jù)庫(kù)引擎310通過在表200中執(zhí)行表查找來響應(yīng)所述請(qǐng)求,表200中儲(chǔ)存了作為請(qǐng)求主題的UDT對(duì)象。數(shù)據(jù)庫(kù)引擎310定位到表200的正確的行,并且然后定位到 該行內(nèi)的UDT對(duì)象的序列化的片段。對(duì)于所述的文件流字段,數(shù)據(jù)庫(kù)引擎310從它的 對(duì)應(yīng)片段中提取出其中存儲(chǔ)了該字段的數(shù)據(jù)的文件的真實(shí)文件系統(tǒng)路徑。數(shù)據(jù)庫(kù)引擎 310將該真實(shí)路徑發(fā)送回存儲(chǔ)平臺(tái)308。然后存儲(chǔ)平臺(tái)308將文件系統(tǒng)路徑傳遞回FS 代理106, FS代理106進(jìn)而調(diào)用文件系統(tǒng)API 302以便打開文件、傳遞請(qǐng)求中的真實(shí) 文件系統(tǒng)路徑。然后如同向文件系統(tǒng)API302做出CreateFile調(diào)用時(shí)通常所做的,文件 系統(tǒng)API 302獲得該文件的句柄,并且將它傳遞回客戶機(jī)應(yīng)用程序300。此時(shí),客戶機(jī)應(yīng)用程序300可以通過正常的文件系統(tǒng)API調(diào)用(例如Win32 API 文件I/0調(diào)用)來讀和寫文件。當(dāng)客戶機(jī)應(yīng)用程序300結(jié)束對(duì)該文件的操作時(shí),它向 文件系統(tǒng)API發(fā)出CLOSE (關(guān)閉)調(diào)用。這個(gè)調(diào)用再次被FS代理306攔截。FS代理 306向存儲(chǔ)平臺(tái)308發(fā)出"CLOSE"調(diào)用以便請(qǐng)求關(guān)閉該文件。存儲(chǔ)平臺(tái)308將這種 操作建模為對(duì)持久存儲(chǔ)的項(xiàng)目的更新,執(zhí)行任何相關(guān)聯(lián)的改變跟蹤和其它與更新相關(guān) 聯(lián)的功能。然后數(shù)據(jù)庫(kù)引擎310在持久存儲(chǔ)的UDT對(duì)象上執(zhí)行它自己的更新處理。一 旦處理結(jié)束,控制被返回給FS代理306, FS代理306調(diào)用文件系統(tǒng)API 302以便代 表客戶機(jī)應(yīng)用程序300執(zhí)行其正常的文件關(guān)閉操作。因此,在上面所述的環(huán)境中,存儲(chǔ)平臺(tái)308能夠使用諸如T-SQL等查詢語言直接 訪問文件流字段,或是使用諸如Win32等文件系統(tǒng)API進(jìn)行"帶外"訪問。如上所述, 在査詢語言事務(wù)和鎖定模型以及文件系統(tǒng)共享模型之間有多種不同之處。 一個(gè)這種不 同之處是文件系統(tǒng)不具有如同查詢語言中所具有的語句的概念。相反,文件系統(tǒng)生成 諸如打開、讀、寫和關(guān)閉等操作。本發(fā)明使得打開可以在事務(wù)環(huán)境中執(zhí)行。被打開的 文件可以在打開過程中與所提供的事務(wù)環(huán)境相關(guān)聯(lián)。隨后的讀和/或?qū)懓l(fā)生在事務(wù)環(huán)境 中。如同査詢語言中的事務(wù)一樣,在任意給定時(shí)刻對(duì)一個(gè)文件只能有一個(gè)事務(wù)處理的 寫程序。此外,事務(wù)處理讀程序得到該文件的讀已提交視圖,意味著它們觀看到了在 打開時(shí)刻處于其巳提交狀態(tài)的文件。非事務(wù)處理讀程序和寫程序可以基于指定的共享模式獲得隔離。當(dāng)文件被打開時(shí), 打開的目的可以被指定。文件可以為下面3個(gè)目的中的一個(gè)打開為讀目的打開、為 寫目的打開或?yàn)樽x和寫目的打開。此外,可以使用共享模式指定所希望的隔離模型 文件共享讀、文件共享寫、既文件共享讀又文件共享寫或是既不文件共享讀又不文件 共享寫。對(duì)于文件系統(tǒng)操作,如果基于共享沖突拒絕對(duì)文件的訪問,則打開失敗而不 是被阻塞??梢栽谏院蟮臅r(shí)刻重試打開,希望共享沖突不再發(fā)生。共享模式可以提供兩個(gè)級(jí)別的隔離,g卩,事務(wù)之間和事務(wù)內(nèi)的打開之間。所有非 事務(wù)處理的打開可以如同它們?nèi)课挥诳偸腔顒?dòng)的單個(gè)全局事務(wù)內(nèi)那樣運(yùn)行,并且為 每個(gè)非事務(wù)處理寫自動(dòng)提交。非事務(wù)處理讀不能得到對(duì)應(yīng)文件的讀已提交視圖,并且 僅被提供用共享模式請(qǐng)求的隔離。在存儲(chǔ)平臺(tái)308中,隔離的單元可以是項(xiàng)目、與項(xiàng)目相關(guān)聯(lián)的擴(kuò)展或與項(xiàng)目相關(guān) 聯(lián)的關(guān)系。在這3種情況的每種情況下,底層表示都是適當(dāng)?shù)谋韮?nèi)的UDT的實(shí)例,并 且隔離的單元對(duì)應(yīng)于表的行。這映射到查詢語言鎖定模型,其中以每行為基礎(chǔ)獲得適 當(dāng)?shù)逆i。因此,存儲(chǔ)平臺(tái)308內(nèi)的鎖定的粒度直接映射到查詢語言內(nèi)的行粒度。如上所述,除了為文件系統(tǒng)操作提供事務(wù)支持之外,本發(fā)明針對(duì)統(tǒng)一用于文件系 統(tǒng)操作和查詢語言語句的模型。與文件系統(tǒng)語句(它們僅為對(duì)文件流項(xiàng)目的帶外訪問 而處理)不同,査詢語言語句可以在文件流和非文件流項(xiàng)目?jī)烧呱蠄?zhí)行。為了統(tǒng)一查 詢語言的事務(wù)模型和文件系統(tǒng)的共享模型,必須定義文件系統(tǒng)語句的概念。這種文件 系統(tǒng)語句可以包括打開操作、讀或?qū)懖僮饕约瓣P(guān)閉操作。因此,包括打開、讀以及關(guān) 閉操作的文件系統(tǒng)語句在語義上等效于查詢語言中的SELECT文件流語句,而包括打 開、寫以及關(guān)閉操作的文件系統(tǒng)語句在語義上等效于查詢語言中的UPDATE文件流 語句。如同查詢語言語句那樣,文件系統(tǒng)語句可以出現(xiàn)在多語句事務(wù)或單語句事務(wù)環(huán)境 中,其中在語句的處理過程中存在事務(wù)。因此,根據(jù)本發(fā)明的事務(wù)可以包括單個(gè)查詢 語言語句、單個(gè)文件系統(tǒng)語句、多個(gè)查詢語言語句、多個(gè)文件系統(tǒng)語句或是查詢語言 和文件系統(tǒng)語句的組合。在單個(gè)査詢語言語句的情況下,項(xiàng)目中的字段被更新并且更新圖(updategram) 被發(fā)送到服務(wù)器。項(xiàng)目中的所有值可以是內(nèi)嵌的,包括文件流的值。作為更新圖執(zhí)行 的一部分,事務(wù)可以在服務(wù)器上即刻創(chuàng)建和提交。在單個(gè)文件系統(tǒng)語句的情況下,事務(wù)作為打開的一部分而創(chuàng)建。然后讀或?qū)懓l(fā)生 在事務(wù)環(huán)境內(nèi)。然后事務(wù)作為關(guān)閉的一部分被提交。存儲(chǔ)平臺(tái)308可以跨過<打開、寫、 關(guān)閉>邊界創(chuàng)建和管理事務(wù)的生命期。在多個(gè)查詢語言語句的情況下,事務(wù)在服務(wù)器上開始,項(xiàng)目字段被更新,并且一 個(gè)或多個(gè)更新圖被發(fā)送到服務(wù)器。然后事務(wù)在服務(wù)器上提交。在多個(gè)文件系統(tǒng)語句的情況下,事務(wù)在服務(wù)器上開始,并且文件系統(tǒng)語句在事務(wù) 環(huán)境中執(zhí)行。然后事務(wù)在服務(wù)器上提交。在査詢語言和文件系統(tǒng)語句組合的情況下,事務(wù)在服務(wù)器上開始,并且然后可以 發(fā)出修改項(xiàng)目中的非文件流字段的更新圖。可以為文件系統(tǒng)操作指定事務(wù)環(huán)境,以便獲得對(duì)應(yīng)行上的適當(dāng)?shù)逆i。如果為讀而 打開,則事務(wù)將獲得包含文件流的行上的讀鎖。如果為寫而打開,則事務(wù)將獲得包含 文件流的行上的寫鎖。FS代理306可以代表事務(wù)獲得行鎖,并且鎖可以基于事務(wù)的隔離級(jí)別來釋放,并且綁定到事務(wù)的生命期。為了模擬査詢語言隔離模型,可以為寫程序獲得獨(dú)占打開,而可以為讀程序獲得 共享打開。獨(dú)占和共享打開分別對(duì)應(yīng)于査詢語言模型中的獨(dú)占行級(jí)別鎖和共享行級(jí)別鎖。因此,某種共享模式標(biāo)志可能與這個(gè)模型相抵觸,并且可能不會(huì)被兌現(xiàn)。例如,文件共享寫標(biāo)志與這種模型相抵觸,因?yàn)樗试S兩個(gè)打開共享對(duì)同一文件 的寫。因此,文件共享寫標(biāo)志可以被禁止并且不被兌現(xiàn)。例如,文件共享寫可以被安 靜地重新映射或以適當(dāng)?shù)腻e(cuò)誤代碼拒絕。因此,如果事務(wù)包括多個(gè)文件系統(tǒng)寫語句, 則寫操作可以被序列化。事務(wù)內(nèi)的序列化與査詢語言語義相一致,其中在同一事務(wù)環(huán) 境中不允許多個(gè)并發(fā)的更新。此外,如果兩個(gè)非事務(wù)處理的文件系統(tǒng)語句試圖同時(shí)執(zhí) 行,則它們也可以被序列化。非事務(wù)處理語句的序列化與査詢語言語句語義相一致,其中兩個(gè)UPDATE語句不能并發(fā)地執(zhí)行。此外,在事務(wù)環(huán)境中為寫而打開必須指定文 件共享讀。如果沒指定有,則該打開可能以無效操作錯(cuò)誤代碼失敗。這實(shí)施了查詢語 言語義,即UPDATE不阻礙同一事務(wù)環(huán)境中的SELECT。圖3中示出了根據(jù)本發(fā)明在事務(wù)環(huán)境中執(zhí)行文件系統(tǒng)語句的示例性方法的流程 圖。在動(dòng)作410,存儲(chǔ)平臺(tái)308從客戶機(jī)應(yīng)用程序300接收語句以便在存儲(chǔ)在數(shù)據(jù)存 儲(chǔ)310內(nèi)的項(xiàng)目上執(zhí)行。這種語句可以是從客戶機(jī)應(yīng)用程序300接收的査詢語言語句, 或通過文件系統(tǒng)API 802和FS代理804從客戶機(jī)應(yīng)用程序300接收的帶外文件系統(tǒng)語 句。查詢語言語句可以在文件流和非文件流項(xiàng)目上執(zhí)行,而文件系統(tǒng)語句僅可以在文 件流項(xiàng)目上執(zhí)行。如上所述,查詢語言語句可以包括,例如SELECT語句或UPDATE語句。査詢 語言語句可以是單或多語句事務(wù)的一部分。如果査詢語言語句是多語句事務(wù)的一部分, 則它以開始事務(wù)和提交事務(wù)命令加擴(kuò)號(hào)。文件系統(tǒng)語句可以包括打開操作、讀操作或?qū)懖僮饕约瓣P(guān)閉操作。每個(gè)文件系統(tǒng) 語句可以在事務(wù)環(huán)境中被提交。在動(dòng)作412,在動(dòng)作410接收的每個(gè)語句與事務(wù)相關(guān) 聯(lián)。應(yīng)當(dāng)理解,文件系統(tǒng)語句不必在事務(wù)環(huán)境中提交。下面參考圖4和5詳細(xì)討論了用于非事務(wù)處理文件系統(tǒng)語句的鎖定和隔離。在動(dòng)作414,確定事務(wù)的啟動(dòng)是否將導(dǎo)致沖突。例如,如果事務(wù)內(nèi)的任何語句對(duì) 應(yīng)于這樣的行,在該行上另一事務(wù)已經(jīng)獲得了寫鎖,則將發(fā)生沖突。如果在動(dòng)作414確定將發(fā)生沖突,則在動(dòng)作416分解該沖突??梢愿鶕?jù)標(biāo)準(zhǔn)沖突 分解慣例來分解沖突。 一般地,即使只有一個(gè)沖突被檢測(cè)到,整個(gè)事務(wù)可以被回退。在動(dòng)作418,啟動(dòng)事務(wù)。通過獲得適當(dāng)行上的讀鎖和寫鎖啟動(dòng)事務(wù)。如前面提到 的,獲得對(duì)應(yīng)于讀操作并且對(duì)應(yīng)于SELECT語句的行上的讀鎖。對(duì)應(yīng)于讀操作的讀鎖 獲得該行的讀已提交視圖。讀鎖是共享的行鎖。在對(duì)應(yīng)于寫操作并且對(duì)應(yīng)于UPDATE語句的行上獲得寫鎖。寫鎖是在事務(wù)生命期 中獲得的獨(dú)占鎖。寫鎖將防止當(dāng)事務(wù)被處理時(shí)另一個(gè)事務(wù)訪問(通過讀訪問或?qū)懺L問) 對(duì)應(yīng)的行。寫鎖還防止當(dāng)事務(wù)被處理時(shí),非事務(wù)處理文件系統(tǒng)語句訪問(通過讀訪問 或?qū)懺L問)對(duì)應(yīng)的行。然而寫鎖不防止事務(wù)內(nèi)的其它語句讀對(duì)應(yīng)的行。圖4中示出了根據(jù)本發(fā)明用于非事務(wù)處理文件系統(tǒng)讀語句的鎖定和隔離的示例性 方法的流程圖。在動(dòng)作420,存儲(chǔ)平臺(tái)308從客戶機(jī)應(yīng)用程序300接收將在存儲(chǔ)在數(shù) 據(jù)存儲(chǔ)310內(nèi)的項(xiàng)目上執(zhí)行的非事務(wù)處理文件系統(tǒng)讀語句。如上所述,文件系統(tǒng)讀語 句包括打開操作、讀操作和關(guān)閉操作。在動(dòng)作422,確定讀訪問是否可用于對(duì)應(yīng)于該項(xiàng)目的數(shù)據(jù)表的一個(gè)行。該行可以 包括對(duì)應(yīng)于該項(xiàng)目的用戶定義類型。如果在動(dòng)作422確定讀訪問可用,則在動(dòng)作424獲得該行上的讀鎖。讀鎖可以提 供該行的讀己提交視圖。如果在動(dòng)作422確定讀訪問不可用,則在動(dòng)作426打開失敗。圖5示出了根據(jù)本發(fā)明用于非事務(wù)處理文件系統(tǒng)語句的鎖定和隔離的示例性方法 的流程圖。在動(dòng)作520,存儲(chǔ)平臺(tái)308從客戶機(jī)應(yīng)用程序300接收將在存儲(chǔ)在數(shù)據(jù)存 儲(chǔ)310內(nèi)的項(xiàng)目上執(zhí)行的非事務(wù)處理文件系統(tǒng)寫語句。如上所述,文件系統(tǒng)寫語句包 括打開操作、寫操作和關(guān)閉操作。在動(dòng)作522,確定寫訪問是否可用于對(duì)應(yīng)于該項(xiàng)目的數(shù)據(jù)表的一個(gè)行。該行可以 包括對(duì)應(yīng)于該項(xiàng)目的用戶定義類型。如果,例如一個(gè)事務(wù)或另一個(gè)非事務(wù)處理語句己 經(jīng)具有了該行上的寫鎖,則寫訪問可以被拒絕。如果在動(dòng)作522確定寫訪問可用,則在動(dòng)作524獲得該行上的寫鎖。寫鎖可以防 止一個(gè)事務(wù)或另一個(gè)非事務(wù)處理語句在該語句被處理時(shí)獲得該行上的寫鎖。如果在動(dòng)作522確定讀訪問不可用,則在動(dòng)作526打開失敗。如從上述可以清楚了解的,本發(fā)明的各種系統(tǒng)、方法和方面的全部或部分可以用 硬件、軟件或兩者的結(jié)合來實(shí)施。當(dāng)用軟件實(shí)施時(shí),本發(fā)明的方法和裝置或其某些方 面或部分可以用程序代碼(即,指令)的形式來實(shí)施。這種程序代碼可以被存儲(chǔ)在諸 如磁的、電子的或光學(xué)存儲(chǔ)介質(zhì)的計(jì)算機(jī)可讀介質(zhì)上,包括但不限于軟盤、CD-ROM、 CD-RW、 DVD-RW、 DVD-ROM、 DVD-RAM、磁帶、閃存、硬盤驅(qū)動(dòng)器或任何機(jī)器 可讀存儲(chǔ)介質(zhì),其中當(dāng)程序代碼被裝入并由機(jī)器(諸如計(jì)算器或服務(wù)器)執(zhí)行時(shí),該 機(jī)器成為實(shí)現(xiàn)本發(fā)明的裝置。程序代碼在其上執(zhí)行的計(jì)算機(jī)通常包括處理器、處理器 可讀的存儲(chǔ)介質(zhì)(包括易失/非易失存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至 少一個(gè)輸出設(shè)備。程序代碼可以用高級(jí)過程語言或面向?qū)ο缶幊陶Z言來實(shí)現(xiàn)??商鎿Q 地,程序代碼可以用匯編語言或機(jī)器語言實(shí)現(xiàn)。在任何情況下,所述的語言可以是編 譯或解釋語言。本發(fā)明還可以用程序代碼的形式來實(shí)施,該程序代碼通過某種傳輸介質(zhì)傳輸,諸 如通過電線或電纜、通過光纖、通過包括局域網(wǎng)、廣域網(wǎng)、因特網(wǎng)或內(nèi)聯(lián)網(wǎng)的網(wǎng)絡(luò)、 或通過任何其它的傳輸形式,其中當(dāng)程序代碼被接收并被裝入且由機(jī)器(諸如計(jì)算機(jī)) 執(zhí)行時(shí),該機(jī)器成為實(shí)現(xiàn)本發(fā)明的裝置。當(dāng)在通用處理器上實(shí)現(xiàn)時(shí),程序代碼可以與處理器相結(jié)合,以便提供與專用邏輯 電路相類似地運(yùn)行的唯一裝置。此外,本發(fā)明可以結(jié)合任何計(jì)算機(jī)或其它客戶機(jī)或服務(wù)器設(shè)備來實(shí)現(xiàn),這些計(jì)算 機(jī)或其它客戶機(jī)或服務(wù)器設(shè)備可以作為計(jì)算機(jī)網(wǎng)絡(luò)的一部分部署,或部署在分布式計(jì) 算環(huán)境中。就此而言,本發(fā)明適合于具有任何數(shù)目的存儲(chǔ)器或存儲(chǔ)單元,以及發(fā)生在 任何數(shù)目的存儲(chǔ)單元或巻上的任何數(shù)目的應(yīng)用程序和進(jìn)程的任何計(jì)算機(jī)系統(tǒng)或環(huán)境, 所述的存儲(chǔ)單元或巻可以被用于與根據(jù)本發(fā)明在數(shù)據(jù)庫(kù)存儲(chǔ)中持久存儲(chǔ)對(duì)象有關(guān)的處 理。本發(fā)明可以適用于具有被部署在網(wǎng)絡(luò)環(huán)境或分布式計(jì)算環(huán)境中的服務(wù)器計(jì)算機(jī)或 客戶機(jī)計(jì)算機(jī)的環(huán)境,所述的環(huán)境具有遠(yuǎn)程或本地存儲(chǔ)。本發(fā)明還適用于獨(dú)立的計(jì)算 設(shè)備,所述的獨(dú)立的計(jì)算設(shè)備具有用于生成、接收和發(fā)送關(guān)于遠(yuǎn)程或本地服務(wù)的信息 的編程語言功能、解釋和執(zhí)行功能。分布式計(jì)算設(shè)備通過在計(jì)算設(shè)備和系統(tǒng)之間進(jìn)行交換便于計(jì)算機(jī)資源和服務(wù)的 共享。這些資源和服務(wù)包括,但不限于,信息交換、高速緩存存儲(chǔ)和用于文件的盤存 儲(chǔ)。分布式計(jì)算利用了網(wǎng)絡(luò)互連,允許客戶機(jī)發(fā)揮它們的集體能力,以便使整個(gè)企業(yè)受益。就此而言,各種設(shè)備可以具有可以牽涉到結(jié)合本發(fā)明的對(duì)象持久存儲(chǔ)方法所執(zhí) 行的處理的應(yīng)用程序、對(duì)象或資源。圖6提供了示例性的聯(lián)網(wǎng)或分布式計(jì)算環(huán)境的示意圖。該分布式計(jì)算環(huán)境包括計(jì) 算對(duì)象10a、 10b等,以及計(jì)算對(duì)象或設(shè)備110a、 110b、 110c等。這些對(duì)象可以包括 程序、方法、數(shù)據(jù)存儲(chǔ)、可編程邏輯等。這些對(duì)象可以包括一部分相同的或不同的設(shè) 備,諸如PDA、電視機(jī)、MP3播放器、個(gè)人計(jì)算機(jī)等。每個(gè)對(duì)象可以通過通信網(wǎng)絡(luò) 14與另一個(gè)對(duì)象通信。網(wǎng)絡(luò)本身包括為圖6的系統(tǒng)提供服務(wù)的其它計(jì)算對(duì)象和計(jì)算設(shè) 備,并且本身可以代表多個(gè)互連的網(wǎng)絡(luò)。根據(jù)本發(fā)明的一個(gè)方面,每個(gè)對(duì)象10a、 10b 等或110a、 110b、 110c等可以包含可利用API或其它對(duì)象、軟件、固件和/或硬件來 請(qǐng)求使用用于實(shí)現(xiàn)本發(fā)明的對(duì)象持久存儲(chǔ)方法的過程的應(yīng)用程序。還應(yīng)當(dāng)理解,諸如110c等對(duì)象可以被主宿在另一個(gè)計(jì)算設(shè)備10a、 10b等或110a、 110b、 110c等之上。因此,雖然給出的物理環(huán)境可以將連接的設(shè)備示為計(jì)算機(jī),但是 這種說明僅是示例性的,并且可替換地,該物理環(huán)境可以被描繪或描述為包含諸如 PDA、電視機(jī)、MP3播放器等的各種數(shù)字設(shè)備,以及諸如接口、 COM對(duì)象等的軟件 對(duì)象。存在各種支持分布式計(jì)算環(huán)境的系統(tǒng)、組件和網(wǎng)絡(luò)配置。例如,計(jì)算系統(tǒng)可以被 通過有線或無線系統(tǒng)、通過局域網(wǎng)或廣泛地分布的網(wǎng)絡(luò)連接在一起。當(dāng)前,許多網(wǎng)絡(luò) 被耦合到因特網(wǎng),因特網(wǎng)提供了廣泛分布的計(jì)算的基礎(chǔ)結(jié)構(gòu)并且包含許多不同的網(wǎng)絡(luò)。 任何基礎(chǔ)設(shè)施可以用于附屬于本發(fā)明的示例性通信。因特網(wǎng)一般指使用計(jì)算機(jī)聯(lián)網(wǎng)領(lǐng)域內(nèi)公知的TCP/IP協(xié)議套件的網(wǎng)絡(luò)和網(wǎng)關(guān)的集 合。TCP/IP是"傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議"的首字母縮寫。因特網(wǎng)可以被描述為由執(zhí) 行聯(lián)網(wǎng)協(xié)議的計(jì)算機(jī)互連的在地理上分布的遠(yuǎn)程計(jì)算機(jī)網(wǎng)絡(luò),該聯(lián)網(wǎng)協(xié)議允許用戶通 過網(wǎng)絡(luò)進(jìn)行交互或共享信息。因?yàn)檫@種廣泛的信息共享,因此諸如因特網(wǎng)等遠(yuǎn)程網(wǎng)絡(luò) 迄今已發(fā)展為一種開放系統(tǒng),開發(fā)者可以為它設(shè)計(jì)軟件應(yīng)用程序以便執(zhí)行專門的操作 或服務(wù),基本上沒有限制。因此,網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)啟用了大量的網(wǎng)絡(luò)拓?fù)?,如客戶機(jī)/服務(wù)器、對(duì)等或混合體系 結(jié)構(gòu)。"客戶機(jī)"是它所不相關(guān)的另一類或組的服務(wù)的類或組的成員。因此在計(jì)算中,客戶機(jī)是一個(gè)進(jìn)程,即粗略地說是一組指令或任務(wù),它請(qǐng)求由另一程序提供的服務(wù)。 客戶機(jī)進(jìn)程使用所請(qǐng)求的服務(wù)而不用"了解"關(guān)于其它程序或該服務(wù)本身的任何工作 細(xì)節(jié)。在客戶機(jī)/服務(wù)器體系結(jié)構(gòu)中,特別是聯(lián)網(wǎng)的系統(tǒng)中,客戶機(jī)通常是訪問由另一計(jì)算機(jī)(例如,服務(wù)器)提供的共享網(wǎng)絡(luò)資源的計(jì)算機(jī)。在圖6的例子中,計(jì)算機(jī)110a、 110b等可以被認(rèn)為是客戶機(jī),而計(jì)算機(jī)10a、 10b等可以被認(rèn)為是服務(wù)器,盡管取決 于環(huán)境,任何計(jì)算機(jī)可以被認(rèn)為是客戶機(jī)、服務(wù)器或是這兩者。任何這些計(jì)算設(shè)備可 以用牽涉本發(fā)明的對(duì)象持久存儲(chǔ)技術(shù)的方式來處理數(shù)據(jù)。服務(wù)器通常是可以通過遠(yuǎn)程或本地網(wǎng)絡(luò)(諸如因特網(wǎng))訪問的遠(yuǎn)程計(jì)算機(jī)系統(tǒng)。 客戶機(jī)進(jìn)程可以在第一計(jì)算機(jī)系統(tǒng)中是活動(dòng)的,并且服務(wù)器進(jìn)程可以在第二計(jì)算機(jī)系 統(tǒng)中是活動(dòng)的,它們通過通信介質(zhì)彼此通信,因此提供了分布式的功能并且允許多個(gè) 客戶機(jī)利用服務(wù)器的信息聚集能力。按照本發(fā)明的持久存儲(chǔ)機(jī)制使用的任何軟件對(duì)象 可以分布在多個(gè)計(jì)算設(shè)備上。(多個(gè))客戶機(jī)和(多個(gè))服務(wù)器可以使用由協(xié)議層提供的功能彼此通信。例如, 超文本傳輸協(xié)議(HTTP)是與萬維網(wǎng)(WWW)或"Web"結(jié)合使用的常見的協(xié)議。 典型地,諸如互聯(lián)網(wǎng)協(xié)議(IP)地址等計(jì)算機(jī)網(wǎng)絡(luò)地址或諸如統(tǒng)一資源定位器(URL) 等其它引用可以用于彼此標(biāo)識(shí)服務(wù)器或客戶機(jī)。網(wǎng)絡(luò)地址可以被稱為URL地址??梢?通過任何可用的通信介質(zhì)提供通信。因此,圖6示出了一種其中可使用本發(fā)明的示例性聯(lián)網(wǎng)或分布式環(huán)境,其中服務(wù) 器通過網(wǎng)絡(luò)/總線與客戶機(jī)計(jì)算機(jī)通信。根據(jù)本發(fā)明,網(wǎng)絡(luò)/總線14可以是LAN、WAN、 內(nèi)聯(lián)網(wǎng)、因特網(wǎng)或某些其它的網(wǎng)絡(luò)介質(zhì),它具有依照本發(fā)明的多個(gè)客戶機(jī)或遠(yuǎn)程計(jì)算 機(jī)設(shè)備110a、 110b、 U0c、 U0d、 110e等,諸如便攜計(jì)算機(jī)、手持計(jì)算機(jī)、瘦客戶機(jī)、 聯(lián)網(wǎng)設(shè)備或其它設(shè)備,諸如VCR、 TV、烤箱、電燈、加熱器等。因此可以構(gòu)想本發(fā) 明可以適用于任何這樣的計(jì)算設(shè)備,對(duì)所述的計(jì)算設(shè)備而言希望保持持久存儲(chǔ)的對(duì)象。例如,在通信網(wǎng)絡(luò)/總線14是因特網(wǎng)的網(wǎng)絡(luò)環(huán)境中,服務(wù)器10a、 10b等可以是客 戶機(jī)110a、 110b、 110c、 110d、 110e等通過多種已知協(xié)議中的任意一種(諸如HTTP) 與其通信的服務(wù)器。如可以是分布式計(jì)算環(huán)境的特征,服務(wù)器10a、 10b等還可以用作 客戶機(jī)110a、 110b、 110c、 110d、 110e等。通信可以是(在適合的地方)有線的或無線的??蛻魴C(jī)設(shè)備110a、 110b、 110c、 110d、 110e等可以通過或可以不通過通信網(wǎng)絡(luò)/總線14通信,并且可以具有與它相關(guān) 聯(lián)的獨(dú)立的通信。例如,在TV或VCR的情況下,可以有或沒有關(guān)于其控制的聯(lián)網(wǎng)的 方面。每個(gè)客戶計(jì)算機(jī)110a、 110b、 110c、 110d、 110e等和服務(wù)器10a、 10b等可以 配備有各種應(yīng)用程序模塊或?qū)ο?35,并且具有到各種類型的存儲(chǔ)元件或?qū)ο蟮倪B接 或訪問,文件或數(shù)據(jù)流可以跨所述的存儲(chǔ)元件或?qū)ο蟊淮鎯?chǔ),或是部分的文件或數(shù)據(jù)流可以被下載到、傳輸?shù)交蛞仆龅拇鎯?chǔ)元件或?qū)ο?。任何?jì)算機(jī)10a、 10b、 110a、 110b等可以負(fù)責(zé)用于存儲(chǔ)根據(jù)本發(fā)明處理的數(shù)據(jù)的數(shù)據(jù)庫(kù)、存儲(chǔ)器或其它存儲(chǔ)元件20 的維護(hù)和更新。因此,本發(fā)明可以用于這樣的計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中,它具有可以訪問計(jì) 算機(jī)網(wǎng)絡(luò)/總線14并與其交互的客戶計(jì)算機(jī)110a、 110b等,以及可以與客戶計(jì)算機(jī) 110a、 110b等交互的服務(wù)器10a、 10b等,以及其它類似的設(shè)備和數(shù)據(jù)庫(kù)20。圖6和下面的討論旨在提供對(duì)可結(jié)合其實(shí)現(xiàn)本發(fā)明的適合的計(jì)算設(shè)備的簡(jiǎn)要的概 括描述。例如,圖6中示出的任何客戶機(jī)和服務(wù)器計(jì)算機(jī)或設(shè)備都可以采用這種形式。 然而應(yīng)當(dāng)理解,手持的、便攜的和其它的計(jì)算設(shè)備和各種類型的計(jì)算對(duì)象也被構(gòu)想用 于本發(fā)明,即,計(jì)算環(huán)境中可以生成、處理、接收和/或發(fā)送數(shù)據(jù)的任何地方。雖然下 面描述了通用計(jì)算機(jī),但這只是例子,并且本發(fā)明可以用具有網(wǎng)絡(luò)/總線協(xié)同工作能力 和交互作用的瘦客戶機(jī)來實(shí)現(xiàn)。因此,本發(fā)明可以在聯(lián)網(wǎng)主宿的服務(wù)的環(huán)境中實(shí)現(xiàn), 其中只涉及非常少的或最少的客戶機(jī)資源,例如, 一種聯(lián)網(wǎng)的環(huán)境,其中客戶設(shè)備僅 起到網(wǎng)絡(luò)/總線的接口的作用,諸如被放置在設(shè)備中的一個(gè)對(duì)象。本質(zhì)上,可以存儲(chǔ)數(shù) 據(jù)的任何地方或可以從中檢索數(shù)據(jù)或?qū)⑵浒l(fā)送到另一計(jì)算機(jī)的任何地方都是用于運(yùn)行 本發(fā)明的對(duì)象持久存儲(chǔ)方法的理想的或適合的環(huán)境。雖然沒有要求,本發(fā)明可以通過操作系統(tǒng)實(shí)現(xiàn),以便由設(shè)備或?qū)ο蟮姆?wù)開發(fā)者 使用,和/或被包括在根據(jù)本發(fā)明運(yùn)行的應(yīng)用程序或服務(wù)器軟件中。軟件可以在計(jì)算機(jī) 可執(zhí)行指令的一般上下文中描述,所述的計(jì)算機(jī)可執(zhí)行指令諸如由一個(gè)或多個(gè)計(jì)算機(jī) (諸如客戶工作站、服務(wù)器或其它設(shè)備)執(zhí)行的程序模塊。 一般地,程序模塊包括例 程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類 型。典型地,程序模塊的功能可以按照所希望的被結(jié)合進(jìn)或分布到各種實(shí)施例中。此 外,本發(fā)明可以用其它計(jì)算機(jī)系統(tǒng)配置和協(xié)議來實(shí)現(xiàn)。適用于本發(fā)明的其它的公知的 計(jì)算系統(tǒng)、環(huán)境和/或配置包括,但是不限于,個(gè)人計(jì)算機(jī)(PC)、自動(dòng)柜員機(jī)、服務(wù) 器計(jì)算機(jī)、手持或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)者電 子設(shè)備、網(wǎng)絡(luò)PC、電器、電燈、環(huán)境控制元件、小型計(jì)算機(jī)、大型機(jī)等。因此,圖7給出了其中可實(shí)現(xiàn)本發(fā)明的適合的計(jì)算系統(tǒng)環(huán)境100的一個(gè)例子,雖 然如上所述可以清楚了解的,計(jì)算系統(tǒng)IOO僅是適合的計(jì)算環(huán)境的一個(gè)例子,并且不 旨在暗示著對(duì)本發(fā)明的使用范圍或功能的任何限制。計(jì)算環(huán)境IOO也不應(yīng)被解釋為具 有與示例的操作環(huán)境100中示出的組件中的任意一個(gè)或其組合相關(guān)的任何依賴性或要 求。參考圖7,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)110形式的通用計(jì)算設(shè)備。 計(jì)算機(jī)110的組件可以包括但不限于處理單元120、系統(tǒng)存儲(chǔ)器130和系統(tǒng)總線121, 系統(tǒng)總線121將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合到處理單元120。系統(tǒng)總線 121可以是多種總線結(jié)構(gòu)中的任意一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線 和使用多種總線體系結(jié)構(gòu)中的任何一種的局部總線。作為例子而不是限制,這種體系 結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA (EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線和外圍組件互連(PCI)總 線(也被稱為Mezzanine總線)。計(jì)算機(jī)IIO典型地包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī) 110訪問的任何可用介質(zhì),并且包括易失和非易失介質(zhì),可移動(dòng)和非可移動(dòng)介質(zhì)。作 為例子而不是限制,計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存 儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的信息 的任何方法或技術(shù)實(shí)現(xiàn)的易失和非易失介質(zhì),可移動(dòng)和非可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介 質(zhì)包括,但是不限于,RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CDROM、 數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、盒式磁帶、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè) 備,或可以被用于存儲(chǔ)所希望的信息并且可以由計(jì)算機(jī)110訪問的任何其它介質(zhì)。通 信介質(zhì)典型地包括已調(diào)制數(shù)據(jù)信號(hào)(諸如載波或其它傳輸機(jī)制)形式的計(jì)算機(jī)可讀指 令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任意的信息傳遞介質(zhì)。術(shù)語"已調(diào)制 數(shù)據(jù)信號(hào)"的含義是它的一個(gè)或多個(gè)特征以在信號(hào)中對(duì)信息進(jìn)行編碼的方式被設(shè)置或 改變的信號(hào)。作為例子,并且不是限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接連線連接 的有線介質(zhì),和諸如聲學(xué)、RF、紅外線或其它無線介質(zhì)的無線介質(zhì)。上面所述的任何 的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。系統(tǒng)存儲(chǔ)器130包括諸如只讀存儲(chǔ)器(ROM) 131和隨機(jī)訪問存儲(chǔ)器(RAM) 132 的易失和非易失存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)。包含(諸如在啟動(dòng)過程中)幫助在計(jì) 算機(jī)110內(nèi)的元件之間傳遞信息的基本例程的基本輸入/輸出系統(tǒng)133 (BIOS)典型地 被存儲(chǔ)在ROM 131中。RAM 132典型地包含可以立即由處理單元120訪問的和/或當(dāng) 前正由處理單元120處理的數(shù)據(jù)和/或程序模塊。作為例子但不是限制,圖7示出了操 作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。計(jì)算機(jī)110還可以包括其它的可移動(dòng)/不可移動(dòng),易失/非易失的計(jì)算機(jī)存儲(chǔ)介質(zhì)。 僅作為例子,圖8示出了從不可移動(dòng)、非易失磁介質(zhì)讀或向其寫的硬盤驅(qū)動(dòng)器141,從可移動(dòng)、非易失磁盤152讀或向其寫的磁盤驅(qū)動(dòng)器151,以及從可移動(dòng)、非易失光 盤156諸如CD-RW、 DVD-RW或其它光學(xué)介質(zhì)讀或向其寫的光盤驅(qū)動(dòng)器155??梢?被用于該示例性操作環(huán)境中的其它可移動(dòng)/不可移動(dòng)、易失/非易失計(jì)算機(jī)存儲(chǔ)介質(zhì)包 括,但是不限于,磁帶、盒式磁帶、閃存卡、數(shù)字多功能盤、數(shù)字視頻帶、固態(tài)RAM、 固態(tài)ROM等。硬盤驅(qū)動(dòng)器141通常通過不可移動(dòng)存儲(chǔ)器接口,諸如接口140連接到 系統(tǒng)總線121,而磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常通過可移動(dòng)存儲(chǔ)器接口,諸 如接口 150連接到系統(tǒng)總線121。上面討論并且在圖7中示出的驅(qū)動(dòng)器和它們相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī) 110提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。在圖7中,例 如,硬盤驅(qū)動(dòng)器141被示出為存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146 和程序數(shù)據(jù)147。注意這些組件可以與操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136 和程序數(shù)據(jù)137相同或不同。此處給予操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊 146和程序數(shù)據(jù)147不同的標(biāo)號(hào)以便示出,至少它們是不同的副本。用戶可以通過輸 入設(shè)備,諸如鍵盤162和定位設(shè)備161 (諸如鼠標(biāo)、軌跡球或觸摸墊)向計(jì)算機(jī)110 輸入命令和信息。其它輸入設(shè)備(沒有示出)可以包括麥克風(fēng)、游戲桿、游戲墊、圓 盤式衛(wèi)星天線、掃描儀等。這些和其它輸入設(shè)備通常被通過耦合到系統(tǒng)總線121的用 戶輸入接口 160連接到處理單元120,但是也可以通過其它接口和總線結(jié)構(gòu)連接,諸 如并行端口、游戲端口或通用串行總線(USB)。 一個(gè)或多個(gè)圖形處理單元(GPU) 184可以與圖形接口 182通信。監(jiān)視器191或其它類型的顯示設(shè)備也可以通過諸如視 頻接口 190的接口連接到系統(tǒng)總線121,所述接口進(jìn)而與視頻存儲(chǔ)器186通信。除了 監(jiān)視器191之外,計(jì)算機(jī)還可以包括其它的外圍^^出設(shè)備,諸如揚(yáng)聲器197、打印機(jī) 196,它們可以通過輸出外部接口 195連接。使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),諸如遠(yuǎn)程計(jì)算機(jī)180的邏輯連接,計(jì)算機(jī)110可 以在聯(lián)網(wǎng)的或分布式環(huán)境中運(yùn)行。遠(yuǎn)程計(jì)算機(jī)180可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由 器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它的普通網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括上面關(guān)于計(jì)算機(jī)110 所描述的許多或全部元件,雖然在圖7中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備181。圖7中給出 的邏輯連接包括局域網(wǎng)(LAN) 171和廣域網(wǎng)(WAN) 173,但是還可以包括其它網(wǎng) 絡(luò)/總線。這種聯(lián)網(wǎng)環(huán)境在家庭、辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是 常見的。當(dāng)用于LAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通過網(wǎng)絡(luò)接口或適配器170連接到LAN171。當(dāng)用于WAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于通過 WAN173 (諸如因特網(wǎng))建立連接的其它裝置。調(diào)制解調(diào)器172 (可以是內(nèi)置的或外 置的)可以通過用戶輸入接口 160或其它適合的機(jī)制連接到系統(tǒng)總線121。在聯(lián)網(wǎng)的 環(huán)境中,就計(jì)算機(jī)110給出的程序模塊或其部分可以存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備內(nèi)。 作為例子,但是不是限制,圖7示出了駐留在存儲(chǔ)器設(shè)備181上的遠(yuǎn)程應(yīng)用程序185。 應(yīng)當(dāng)理解,示出的網(wǎng)絡(luò)通信是示例性的,并且可以使用在計(jì)算機(jī)之間建立通信鏈路的 其它裝置。結(jié)論因此,己經(jīng)公開了用于存儲(chǔ)平臺(tái)中的鎖定和隔離的系統(tǒng)和方法。用于文件系統(tǒng)操 作的共享模型與用于查詢語言語句的事務(wù)和鎖定模型統(tǒng)一在一起,以便提供用于存儲(chǔ)平臺(tái)中的鎖定和隔離的總體框架。此外,為文件系統(tǒng)操作提供了事務(wù)支持,從而它們 可以在事務(wù)環(huán)境中執(zhí)行。因此,單個(gè)事務(wù)處理可以包括單個(gè)文件系統(tǒng)語句、單個(gè)査詢 語言語句、多個(gè)系統(tǒng)語句、多個(gè)查詢語言語句以及文件系統(tǒng)和查詢語言語句的組合。 此外,提供了對(duì)非事務(wù)處理文件系統(tǒng)語句的支持,從而文件系統(tǒng)語句不必在事務(wù)環(huán)境 中執(zhí)行。雖然已經(jīng)以各附圖的優(yōu)選實(shí)施例描述了本發(fā)明,應(yīng)當(dāng)理解,可以使用其它類似的 實(shí)施例,或?qū)λ龅膶?shí)施例進(jìn)行修改和添加,以便執(zhí)行本發(fā)明相同的功能,而不脫離 本發(fā)明。因此,本發(fā)明不應(yīng)被限于任意的單個(gè)實(shí)施例,而是應(yīng)當(dāng)被解釋為在所附權(quán)利 要求的寬度和范圍內(nèi)。
權(quán)利要求
1.一種用于文件系統(tǒng)語句的鎖定和隔離的方法,所述方法包括接收文件系統(tǒng)語句,所述文件系統(tǒng)語句包括對(duì)打開項(xiàng)目的調(diào)用、對(duì)從項(xiàng)目讀的調(diào)用、以及對(duì)關(guān)閉項(xiàng)目的調(diào)用,所述文件系統(tǒng)語句與采用數(shù)據(jù)庫(kù)的查詢語言的任何數(shù)據(jù)庫(kù)命令無關(guān);響應(yīng)于接收所述與任何數(shù)據(jù)庫(kù)應(yīng)用程序接口請(qǐng)求無關(guān)的文件系統(tǒng)語句,確定讀鎖對(duì)于對(duì)應(yīng)于所述項(xiàng)目的數(shù)據(jù)表的行是否可用;如果讀鎖對(duì)于對(duì)應(yīng)于所述項(xiàng)目的數(shù)據(jù)表的行不可用,則使所述打開失?。灰约叭绻x鎖對(duì)于對(duì)應(yīng)于所述項(xiàng)目的數(shù)據(jù)表的行可用,則獲得所述行上的讀鎖。
2. 如權(quán)利要求1所述的方法,其特征在于,包括確定所述讀鎖對(duì)于包括相應(yīng)于所 述項(xiàng)目的用戶定義類型的數(shù)據(jù)表的行是否可用。
3. 如權(quán)利要求1所述的方法,其特征在于,獲得所述行上的讀鎖包括獲得所述行 的讀已提交視圖。
4. 如權(quán)利要求1所述的方法,其特征在于,包括獲得所述行的文件流字段上的讀鎖。
5. —種用于文件系統(tǒng)語句的鎖定和隔離的方法,所述方法包括-接收文件系統(tǒng)語句,所述文件系統(tǒng)語句包括對(duì)打開項(xiàng)目的調(diào)用、對(duì)寫到項(xiàng)目的調(diào)用、以及對(duì)關(guān)閉項(xiàng)目的調(diào)用,所述文件系統(tǒng)語句與采用數(shù)據(jù)庫(kù)的查詢語言的任何數(shù)據(jù) 庫(kù)命令無關(guān);響應(yīng)于接收所述與任何數(shù)據(jù)庫(kù)應(yīng)用程序接口請(qǐng)求無關(guān)的文件系統(tǒng)語句,確定寫鎖 對(duì)于對(duì)應(yīng)于所述項(xiàng)目的數(shù)據(jù)表的行是否可用;如果寫鎖對(duì)于對(duì)應(yīng)于所述項(xiàng)目的數(shù)據(jù)表的行不可用,則使所述打開失?。灰约?如果寫鎖對(duì)于對(duì)應(yīng)于所述項(xiàng)目的數(shù)據(jù)表的行可用,則獲得所述行上的寫鎖。
6. 如權(quán)利要求5所述的方法,其特征在于,包括確定所述寫鎖對(duì)于包括對(duì)應(yīng)于所 述項(xiàng)目的用戶定義類型的數(shù)據(jù)表的行是否可用。
7. 如權(quán)利要求5所述的方法,其特征在于,獲得所述行上的寫鎖包括獲得在所述 語句被處理時(shí)防止另一語句訪問所述行的寫鎖。
8. 如權(quán)利要求5所述的方法,其特征在于,包括通過獲得所述行的文件流字段上 的寫鎖啟動(dòng)所述事務(wù)。
全文摘要
用于文件系統(tǒng)操作的共享模型與查詢語言語句的事務(wù)和鎖定模型統(tǒng)一在一起,以便提供用于存儲(chǔ)平臺(tái)中的鎖定和隔離的總體框架。此外,為文件系統(tǒng)操作提供了事務(wù)支持,從而它們可以在事務(wù)環(huán)境中執(zhí)行。因此,單個(gè)事務(wù)處理可以包括單個(gè)文件系統(tǒng)語句、單個(gè)查詢語言語句、多個(gè)系統(tǒng)語句、多個(gè)查詢語言語句以及文件系統(tǒng)和查詢語言語句的組合。此外,提供了對(duì)非事務(wù)處理文件系統(tǒng)語句的支持,從而文件系統(tǒng)語句不必在事務(wù)環(huán)境中執(zhí)行。
文檔編號(hào)G06F17/30GK101266617SQ20081009587
公開日2008年9月17日 申請(qǐng)日期2004年7月29日 優(yōu)先權(quán)日2004年3月10日
發(fā)明者B·S·拉曼, R·B·拉杰弗 申請(qǐng)人:微軟公司