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