用于存储平台中的锁定和隔离的系统和方法

文档序号:6476145阅读:160来源:国知局
专利名称:用于存储平台中的锁定和隔离的系统和方法
技术领域
本发明涉及数据检索和操作领域,尤其涉及存储平台中的锁定和隔离。
背景技术
近来计算领域中的一种发展是计算机操作系统可以用于构建在关系型引擎上的存储平台。这种存储平台可以是,例如,来自华盛顿州雷蒙德市的微软公司的MICRSOFTWINDOWS FILE SYSTEMTM(“WinFS”)。WinFS构建在在来自上面提到的微软公司的SQL SERVERTM之上。
WinFS平台的数据模型以项目、项目扩展和关系定义数据存储单元。项目是存储信息的基本单元。该数据模型提供了一种用于声明项目和项目扩展,以及用于建立项目之间的关系的机制。项目是可以使用诸如复制、删除、移动、打开等的操作来存储和检索的单元。项目旨在表示数据的真实世界和易于理解的单元,诸如联系人、人、服务、位置、文档(各种类型的)等。项目扩展是扩展现有项目的定义的一种方法,而关系定义了项目之间的联系。
在WinFS中,定义了不同的项目类型用于存储信息。例如,为联系人、人、服务、位置、文档等定义了项目类型。每个项目类型由定义给定项目的属性和特性的模式(schema)描述。例如,“Location(位置)”项目可以被定义为具有诸如EAddresses(电子地址)、MetropolitanRegion(大城市地区)、Neighborhood(街区)和PostalAddresses(邮政地址)等属性。一旦为给定的项目类型定义了模式,在数据存储中创建对应的用户定义类型(UDT)。存储在数据存储中的项目类型的每个实例具有与它相关联的唯一标识符(例如,Item_ID(项目ID));在一个实施例中,每个项目标识符是全局唯一标识符(GUID)。如同SQL SERVER中的UDT的任何实例一样,WinFS项目的实例最终被以分离的UDT列存储在数据存储的表中。
WinFS的构件块之一是它结合了来自SQL Server的文件流技术。文件流是关系型数据表的一个列,其中该列的每个单元的数据被存储在与存储着该表的其它列的文件相分离的文件中。WinFS的一个重要特性是WinFS项目的每个字段可以被指定为文件流字段。文件流技术对于包括具有大量数据的字段的项目特别有利。例如,Person(人)项目可以具有“照片”字段,它包括对应的人的数字照片。该照片字段可以包括不适合存储在数据表中的大量数据。
WinFS的另一个重要特性是它能够允许对文件流字段进行“带外”访问,因此它们可以通过传统的文件系统调用(打开、读/写、关闭等)来访问,而不必使用数据库存储的底层查询语言。用于提交传统文件系统调用的文件系统应用程序接口(API)可以是,例如,来自上面提到的微软公司的Win32TM,而数据库存储的底层查询语言可以是,例如,事务处理结构化查询语言(T-SQL)。因为WinFS允许对文件流字段进行带外访问,所以包含这种文件流字段的项目可以通过两种不同的通道操作T-SQL和Win32。
T-SQL和Win32的一个不同之处是T-SQL具有定义完善的事务和锁定模型,而Win32没有。如本文中所使用的,术语“事务”指T-SQL中的事务处理模型是以语句的概念建立的。一个T-SQL语句表示对数据存储的一种操作,诸如“SELECT”或“UPDATE”语句。T-SQL语句可以被作为单语句事务或多语句事务的一部分被包括。在单语句事务中,单个被执行的T-SQL语句在数据存储上创建一个事务,该事务在语句成功执行时被提交。事务的生命期由语句限定。在多语句事务中,一个应用程序发出“开始事务”和“提交事务”的T-SQL语句,以便明确地开始并对数据存储提交(或中止)事务。开始(begin)和提交(commit)括号内的所有语句作为数据存储上的同一个多语句事务的一部分来执行。
T-SQL具有用于事务锁定的定义完善的语义。一般地,“SELECT”语句将获得行上的读锁,而“UPDATE”语句将获得行上的写锁。写锁被保持直到事务被提交或中止为止,而读锁可以被较早地释放。如果事务具有行上的写锁,则其它事务被阻塞获得对该行的读和/或写访问。如果事务试图获得对另一个事务已经获得了写锁的行的读和/或写访问,则会发生冲突。可以使用标准的冲突分解方法来分解该冲突。
与使用语句的概念相反,Win32使用传统的文件系统共享模式来定义操作(打开、读/写、关闭)之间的隔离。文件共享读标志使得能够进行读共享,这意味着对一个文件的打开可以与对同一文件的另一个打开共享读。文件共享写标志使得能够进行写共享,这意味着对一个文件的打开可以与对同一文件的另一个打开共享写。另外,文件共享读标志和文件共享写标志两者可以被设置为既允许读共享也允许写共享。此外,两种文件共享标志都不能被设置为拒绝共享。重要的是,传统的Win32 API和其它传统文件系统API不能够使操作能在事务的环境中执行。
因此,本领域需要一种用于存储平台中的锁定和隔离的系统和方法,所述的系统和方法统一了查询语言事务和锁定模型以及文件系统共享模型。事务模型的统一将在诸如WinFS等存储平台中提供一种用于操作包含文件流字段的项目的总体事务模型。还希望该总体框架使得文件系统操作能够在事务环境中执行。
发明概述本发明针对用于存储平台中的锁定和隔离的系统和方法。根据本发明,用于文件系统操作的共享模型与用于查询语言语句的事务和锁定模型统一为一体,以便提供一种用于存储平台中的文件流的锁定和隔离的总体框架。此外,为文件系统操作提供了对事务的支持,从而它们可以在事务环境中执行。因此,单个事务可以包括单个文件系统语句、单个查询语言语句、多个文件系统语句、多个查询语言语句以及文件系统和查询语言语句的组合。此外,提供了对非事务文件系统操作的支持,从而文件系统操作不必在事务环境中执行。
根据本发明的一个方面,文件系统语句可以包括对打开项目的调用,读或写操作以及对关闭项目的调用。文件系统语句可以获得包括对应于该项目的用户定义类型(UDT)的数据表的行上的隔离。事务处理的写语句获得该事务的生命期中行上的独占锁。事务处理读语句获得行的读已提交视图。文件系统共享模式可以用于定义事务之间以及一个事务内的语句之间的隔离。此外,非事务处理的语句也可以基于共享模式获得隔离。
根据本发明的另一个方面,在存储平台处可以接收多个查询语言语句和/或文件系统语句。所述语句可以与事务相关联。可以确定该事务的开始是否将产生冲突。如果是的,则该冲突可以根据诸如阻塞等标准冲突分解技术来分解。如果没有冲突,则通过获得用于事务内的查询语言语句和/或文件系统语句的适当的读和/或写锁,开始该事务。
通过下面参考附图对说明性实施例的详细描述,本发明的其它特性和优点将变得显而易见。
附图的简要说明在参考附图阅读下面的详细描述之后,将会更好地理解说明性实施例,附图中

图1是根据本发明包括用于项目实例的数据的示例性数据库表;图2是根据本发明的示例性存储平台环境的框图;图3是根据本发明用于在事务环境中执行文件系统语句的示例性方法的流程图;图4是根据本发明用于非事务处理读文件系统语句的锁定和隔离的示例性方法的流程图;图5是根据本发明用于非事务处理写文件系统语句的锁定和隔离的示例性方法的流程图;图6是表示具有可在其中实现本发明的各种计算设备的示例性网络环境的框图;以及图7是表示可在其中实现本发明的示例性计算设备的框图。
说明性实施例的详细描述为了满足法定要求以细节描述了本发明的主题。然而,该描述本身并不旨在限制本专利的范围。相反,发明人构想,结合其它当前的或未来的技术,所提出的主题也可以用其它的方式实施,以便包括不同的步骤或与本文档中所描述的相类似的元素。
如上所述,本发明针对用于诸如上面提到的WinFS等存储平台中的锁定和隔离的系统和方法。本发明使得诸如上面提到的Win32等文件系统操作能够在事务环境中执行。此外,本发明统一了用于文件系统操作的模型和用于诸如上面提到的T-SQL等查询语言的事务和锁定模型,从而在存储平台中提供了一种用于操作包含文件流字段的项目的总体模型。
现在参考图1,存储平台项目的实例可被存储在诸如示例表200的关系型数据库表内。表200包括两个列ID列202a和用户定义类型(UDT)列202b。列202a中的每个ID提供了用于对应的UDT的唯一标识符。列202b中的每个UDT对应于项目类型的一个实例。例如,列202b中的每个UDT可以对应于与Person项目类型相关联的特定的人。UDT1-3的字段204a-c分别被指定为文件流字段,意味着该字段的数据被存储在与表200相分离的文件中。文件流字段204a-c对于存储诸如数字照片等包括大量数据的字段是有利的。例如,Person项目可以具有对应的“照片”字段,它是包括人的数字照片的文件流字段。如下详细所述,本发明能够锁定和隔离行,诸如表200的行1-3的每个行。
图2示出了一种示例性存储平台环境。如上所述,客户机应用程序300可以直接通过存储平台308,或经由通过文件系统API 302的“带外”访问来操作数据存储310中的项目。如果客户机应用程序300直接通过存储平台308操作项目,则这种操作可以使用诸如T-SQL等查询语言来执行。在另一方面,如果客户机应用程序300经由通过文件系统API 302的“带外”访问来操作项目,则这种操作可以使用诸如Win32等文件系统API来执行。“带外”访问仅对包括文件流字段的项目可用。
客户机应用程序300可以通过使用存储平台方法直接访问存储平台308来启动数据存储310上的查询。继续Person项目类型的例子,客户机应用程序300可以使用存储平台308的“FindAll”方法来启动对Person类型中“Birthday”字段的值大于特定日期(例如,1999年12月31日)的所有实例的查询。然后存储平台308将“FindAll”操作翻译为T-SQL中的查询或另一种查询语言,并且将它提交给底层数据存储310。然后数据存储310对Person UDT的对应的实例执行该查询,并且返回Person UDT的每个匹配实例的被存储的值。然后存储平台308包装Person UDT对象并且将它们作为Person类型的项目返回给应用程序。
除了上面提出的能够对项目进行直接访问之外,存储平台308允许通过文件系统API 302对项目内的文件流字段进行“带外”访问。在图2的示例性环境中,客户机应用程序300通过例如调用存储平台308的CreateFile(创建文件)接口并且将路径名传递给存储平台308来发起带外访问,所述路径名基于持久存储的项目(UDT)的实例内的对应字段的标识来标识所请求的数据。当文件系统API 302从客户机应用程序300接收到包括存储平台路径名的CreateFile命令时,文件系统API 302就这样识别它,并且将它转发到FS代理306。然后FS代理306向存储平台308发出“OPEN(打开)”调用,传递项目字段的存储平台路径名。然后存储平台308从存储平台路径名中标识项目和字段,并且然后将这种信息传递给数据库引擎310。存储平台308可以传递一数据库引擎函数,该函数返回以上面所述的方式与数据库存储相分离地存储的UDT对象的文件流字段的文件系统路径名。
数据库引擎310通过在表200中执行表查找来响应所述请求,表200中储存了作为请求主题的UDT对象。数据库引擎310定位到表200的正确的行,并且然后定位到该行内的UDT对象的序列化的片段。对于所述的文件流字段,数据库引擎310从它的对应片段中提取出其中存储了该字段的数据的文件的真实文件系统路径。数据库引擎310将该真实路径发送回存储平台308。然后存储平台308将文件系统路径传递回FS代理106,FS代理106进而调用文件系统API 302以便打开文件、传递请求中的真实文件系统路径。然后如同向文件系统API 302做出CreateFile调用时通常所做的,文件系统API 302获得该文件的句柄,并且将它传递回客户机应用程序300。
此时,客户机应用程序300可以通过正常的文件系统API调用(例如Win32API文件I/O调用)来读和写文件。当客户机应用程序300结束对该文件的操作时,它向文件系统API发出CLOSE(关闭)调用。这个调用再次被FS代理306拦截。FS代理306向存储平台308发出“CLOSE”调用以便请求关闭该文件。存储平台308将这种操作建模为对持久存储的项目的更新,执行任何相关联的改变跟踪和其它与更新相关联的功能。然后数据库引擎310在持久存储的UDT对象上执行它自己的更新处理。一旦处理结束,控制被返回给FS代理306,FS代理306调用文件系统API 302以便代表客户机应用程序300执行其正常的文件关闭操作。
因此,在上面所述的环境中,存储平台308能够使用诸如T-SQL等查询语言直接访问文件流字段,或是使用诸如Win32等文件系统API进行“带外”访问。如上所述,在查询语言事务和锁定模型以及文件系统共享模型之间有多种不同之处。一个这种不同之处是文件系统不具有如同查询语言中所具有的语句的概念。相反,文件系统生成诸如打开、读、写和关闭等操作。本发明使得打开可以在事务环境中执行。被打开的文件可以在打开过程中与所提供的事务环境相关联。随后的读和/或写发生在事务环境中。如同查询语言中的事务一样,在任意给定时刻对一个文件只能有一个事务处理的写程序。此外,事务处理读程序得到该文件的读已提交视图,意味着它们观看到了在打开时刻处于其已提交状态的文件。
非事务处理读程序和写程序可以基于指定的共享模式获得隔离。当文件被打开时,打开的目的可以被指定。文件可以为下面3个目的中的一个打开为读目的打开、为写目的打开或为读和写目的打开。此外,可以使用共享模式指定所希望的隔离模型文件共享读、文件共享写、既文件共享读又文件共享写或是既不文件共享读又不文件共享写。对于文件系统操作,如果基于共享冲突拒绝对文件的访问,则打开失败而不是被阻塞。可以在稍后的时刻重试打开,希望共享冲突不再发生。
共享模式可以提供两个级别的隔离,即,事务之间和事务内的打开之间。所有非事务处理的打开可以如同它们全部位于总是活动的单个全局事务内那样运行,并且为每个非事务处理写自动提交。非事务处理读不能得到对应文件的读已提交视图,并且仅被提供用共享模式请求的隔离。
在存储平台308中,隔离的单元可以是项目、与项目相关联的扩展或与项目相关联的关系。在这3种情况的每种情况下,底层表示都是适当的表内的UDT的实例,并且隔离的单元对应于表的行。这映射到查询语言锁定模型,其中以每行为基础获得适当的锁。因此,存储平台308内的锁定的粒度直接映射到查询语言内的行粒度。
如上所述,除了为文件系统操作提供事务支持之外,本发明针对统一用于文件系统操作和查询语言语句的模型。与文件系统语句(它们仅为对文件流项目的带外访问而处理)不同,查询语言语句可以在文件流和非文件流项目两者上执行。为了统一查询语言的事务模型和文件系统的共享模型,必须定义文件系统语句的概念。这种文件系统语句可以包括打开操作、读或写操作以及关闭操作。因此,包括打开、读以及关闭操作的文件系统语句在语义上等效于查询语言中的SELECT文件流语句,而包括打开、写以及关闭操作的文件系统语句在语义上等效于查询语言中的UPDATE文件流语句。
如同查询语言语句那样,文件系统语句可以出现在多语句事务或单语句事务环境中,其中在语句的处理过程中存在事务。因此,根据本发明的事务可以包括单个查询语言语句、单个文件系统语句、多个查询语言语句、多个文件系统语句或是查询语言和文件系统语句的组合。
在单个查询语言语句的情况下,项目中的字段被更新并且更新图(updategram)被发送到服务器。项目中的所有值可以是内嵌的,包括文件流的值。作为更新图执行的一部分,事务可以在服务器上即刻创建和提交。
在单个文件系统语句的情况下,事务作为打开的一部分而创建。然后读或写发生在事务环境内。然后事务作为关闭的一部分被提交。存储平台308可以跨过<打开、写、关闭>边界创建和管理事务的生命期。
在多个查询语言语句的情况下,事务在服务器上开始,项目字段被更新,并且一个或多个更新图被发送到服务器。然后事务在服务器上提交。
在多个文件系统语句的情况下,事务在服务器上开始,并且文件系统语句在事务环境中执行。然后事务在服务器上提交。
在查询语言和文件系统语句组合的情况下,事务在服务器上开始,并且然后可以发出修改项目中的非文件流字段的更新图。
可以为文件系统操作指定事务环境,以便获得对应行上的适当的锁。如果为读而打开,则事务将获得包含文件流的行上的读锁。如果为写而打开,则事务将获得包含文件流的行上的写锁。FS代理306可以代表事务获得行锁,并且锁可以基于事务的隔离级别来释放,并且绑定到事务的生命期。
为了模拟查询语言隔离模型,可以为写程序获得独占打开,而可以为读程序获得共享打开。独占和共享打开分别对应于查询语言模型中的独占行级别锁和共享行级别锁。因此,某种共享模式标志可能与这个模型相抵触,并且可能不会被兑现。
例如,文件共享写标志与这种模型相抵触,因为它允许两个打开共享对同一文件的写。因此,文件共享写标志可以被禁止并且不被兑现。例如,文件共享写可以被安静地重新映射或以适当的错误代码拒绝。因此,如果事务包括多个文件系统写语句,则写操作可以被序列化。事务内的序列化与查询语言语义相一致,其中在同一事务环境中不允许多个并发的更新。此外,如果两个非事务处理的文件系统语句试图同时执行,则它们也可以被序列化。非事务处理语句的序列化与查询语言语句语义相一致,其中两个UPDATE语句不能并发地执行。此外,在事务环境中为写而打开必须指定文件共享读。如果没指定有,则该打开可能以无效操作错误代码失败。这实施了查询语言语义,即UPDATE不阻碍同一事务环境中的SELECT。
图3中示出了根据本发明在事务环境中执行文件系统语句的示例性方法的流程图。在动作410,存储平台308从客户机应用程序300接收语句以便在存储在数据存储310内的项目上执行。这种语句可以是从客户机应用程序300接收的查询语言语句,或通过文件系统API 802和FS代理804从客户机应用程序300接收的带外文件系统语句。查询语言语句可以在文件流和非文件流项目上执行,而文件系统语句仅可以在文件流项目上执行。
如上所述,查询语言语句可以包括,例如SELECT语句或UPDATE语句。查询语言语句可以是单或多语句事务的一部分。如果查询语言语句是多语句事务的一部分,则它以开始事务和提交事务命令加扩号。
文件系统语句可以包括打开操作、读操作或写操作以及关闭操作。每个文件系统语句可以在事务环境中被提交。在动作412,在动作410接收的每个语句与事务相关联。
应当理解,文件系统语句不必在事务环境中提交。下面参考图4和5详细讨论了用于非事务处理文件系统语句的锁定和隔离。
在动作414,确定事务的启动是否将导致冲突。例如,如果事务内的任何语句对应于这样的行,在该行上另一事务已经获得了写锁,则将发生冲突。
如果在动作414确定将发生冲突,则在动作416分解该冲突。可以根据标准冲突分解惯例来分解冲突。一般地,即使只有一个冲突被检测到,整个事务可以被回退。
在动作418,启动事务。通过获得适当行上的读锁和写锁启动事务。如前面提到的,获得对应于读操作并且对应于SELECT语句的行上的读锁。对应于读操作的读锁获得该行的读已提交视图。读锁是共享的行锁。
在对应于写操作并且对应于UPDATE语句的行上获得写锁。写锁是在事务生命期中获得的独占锁。写锁将防止当事务被处理时另一个事务访问(通过读访问或写访问)对应的行。写锁还防止当事务被处理时,非事务处理文件系统语句访问(通过读访问或写访问)对应的行。然而写锁不防止事务内的其它语句读对应的行。
图4中示出了根据本发明用于非事务处理文件系统读语句的锁定和隔离的示例性方法的流程图。在动作420,存储平台308从客户机应用程序300接收将在存储在数据存储310内的项目上执行的非事务处理文件系统读语句。如上所述,文件系统读语句包括打开操作、读操作和关闭操作。
在动作422,确定读访问是否可用于对应于该项目的数据表的一个行。该行可以包括对应于该项目的用户定义类型。
如果在动作422确定读访问可用,则在动作424获得该行上的读锁。读锁可以提供该行的读已提交视图。如果在动作422确定读访问不可用,则在动作426打开失败。
图5示出了根据本发明用于非事务处理文件系统语句的锁定和隔离的示例性方法的流程图。在动作520,存储平台308从客户机应用程序300接收将在存储在数据存储310内的项目上执行的非事务处理文件系统写语句。如上所述,文件系统写语句包括打开操作、写操作和关闭操作。
在动作522,确定写访问是否可用于对应于该项目的数据表的一个行。该行可以包括对应于该项目的用户定义类型。如果,例如一个事务或另一个非事务处理语句已经具有了该行上的写锁,则写访问可以被拒绝。
如果在动作522确定写访问可用,则在动作524获得该行上的写锁。写锁可以防止一个事务或另一个非事务处理语句在该语句被处理时获得该行上的写锁。如果在动作522确定读访问不可用,则在动作526打开失败。
如从上述可以清楚了解的,本发明的各种系统、方法和方面的全部或部分可以用硬件、软件或两者的结合来实施。当用软件实施时,本发明的方法和装置或其某些方面或部分可以用程序代码(即,指令)的形式来实施。这种程序代码可以被存储在诸如磁的、电子的或光学存储介质的计算机可读介质上,包括但不限于软盘、CD-ROM、CD-RW、DVD-RW、DVD-ROM、DVD-RAM、磁带、闪存、硬盘驱动器或任何机器可读存储介质,其中当程序代码被装入并由机器(诸如计算器或服务器)执行时,该机器成为实现本发明的装置。程序代码在其上执行的计算机通常包括处理器、处理器可读的存储介质(包括易失/非易失存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。程序代码可以用高级过程语言或面向对象编程语言来实现。可替换地,程序代码可以用汇编语言或机器语言实现。在任何情况下,所述的语言可以是编译或解释语言。
本发明还可以用程序代码的形式来实施,该程序代码通过某种传输介质传输,诸如通过电线或电缆、通过光纤、通过包括局域网、广域网、因特网或内联网的网络、或通过任何其它的传输形式,其中当程序代码被接收并被装入且由机器(诸如计算机)执行时,该机器成为实现本发明的装置。
当在通用处理器上实现时,程序代码可以与处理器相结合,以便提供与专用逻辑电路相类似地运行的唯一装置。
此外,本发明可以结合任何计算机或其它客户机或服务器设备来实现,这些计算机或其它客户机或服务器设备可以作为计算机网络的一部分部署,或部署在分布式计算环境中。就此而言,本发明适合于具有任何数目的存储器或存储单元,以及发生在任何数目的存储单元或卷上的任何数目的应用程序和进程的任何计算机系统或环境,所述的存储单元或卷可以被用于与根据本发明在数据库存储中持久存储对象有关的处理。本发明可以适用于具有被部署在网络环境或分布式计算环境中的服务器计算机或客户机计算机的环境,所述的环境具有远程或本地存储。本发明还适用于独立的计算设备,所述的独立的计算设备具有用于生成、接收和发送关于远程或本地服务的信息的编程语言功能、解释和执行功能。
分布式计算设备通过在计算设备和系统之间进行交换便于计算机资源和服务的共享。这些资源和服务包括,但不限于,信息交换、高速缓存存储和用于文件的盘存储。分布式计算利用了网络互连,允许客户机发挥它们的集体能力,以便使整个企业受益。就此而言,各种设备可以具有可以牵涉到结合本发明的对象持久存储方法所执行的处理的应用程序、对象或资源。
图6提供了示例性的联网或分布式计算环境的示意图。该分布式计算环境包括计算对象10a、10b等,以及计算对象或设备110a、110b、110c等。这些对象可以包括程序、方法、数据存储、可编程逻辑等。这些对象可以包括一部分相同的或不同的设备,诸如PDA、电视机、MP3播放器、个人计算机等。每个对象可以通过通信网络14与另一个对象通信。网络本身包括为图6的系统提供服务的其它计算对象和计算设备,并且本身可以代表多个互连的网络。根据本发明的一个方面,每个对象10a、10b等或110a、110b、110c等可以包含可利用API或其它对象、软件、固件和/或硬件来请求使用用于实现本发明的对象持久存储方法的过程的应用程序。
还应当理解,诸如110c等对象可以被主宿在另一个计算设备10a、10b等或110a、110b、110c等之上。因此,虽然给出的物理环境可以将连接的设备示为计算机,但是这种说明仅是示例性的,并且可替换地,该物理环境可以被描绘或描述为包含诸如PDA、电视机、MP3播放器等的各种数字设备,以及诸如接口、COM对象等的软件对象。
存在各种支持分布式计算环境的系统、组件和网络配置。例如,计算系统可以被通过有线或无线系统、通过局域网或广泛地分布的网络连接在一起。当前,许多网络被耦合到因特网,因特网提供了广泛分布的计算的基础结构并且包含许多不同的网络。任何基础设施可以用于附属于本发明的示例性通信。
因特网一般指使用计算机联网领域内公知的TCP/IP协议套件的网络和网关的集合。TCP/IP是“传输控制协议/互联网协议”的首字母缩写。因特网可以被描述为由执行联网协议的计算机互连的在地理上分布的远程计算机网络,该联网协议允许用户通过网络进行交互或共享信息。因为这种广泛的信息共享,因此诸如因特网等远程网络迄今已发展为一种开放系统,开发者可以为它设计软件应用程序以便执行专门的操作或服务,基本上没有限制。
因此,网络基础结构启用了大量的网络拓扑,如客户机/服务器、对等或混合体系结构。“客户机”是它所不相关的另一类或组的服务的类或组的成员。因此在计算中,客户机是一个进程,即粗略地说是一组指令或任务,它请求由另一程序提供的服务。客户机进程使用所请求的服务而不用“了解”关于其它程序或该服务本身的任何工作细节。在客户机/服务器体系结构中,特别是联网的系统中,客户机通常是访问由另一计算机(例如,服务器)提供的共享网络资源的计算机。在图6的例子中,计算机110a、110b等可以被认为是客户机,而计算机10a、10b等可以被认为是服务器,尽管取决于环境,任何计算机可以被认为是客户机、服务器或是这两者。任何这些计算设备可以用牵涉本发明的对象持久存储技术的方式来处理数据。
服务器通常是可以通过远程或本地网络(诸如因特网)访问的远程计算机系统。客户机进程可以在第一计算机系统中是活动的,并且服务器进程可以在第二计算机系统中是活动的,它们通过通信介质彼此通信,因此提供了分布式的功能并且允许多个客户机利用服务器的信息聚集能力。按照本发明的持久存储机制使用的任何软件对象可以分布在多个计算设备上。
(多个)客户机和(多个)服务器可以使用由协议层提供的功能彼此通信。例如,超文本传输协议(HTTP)是与万维网(WWW)或“Web”结合使用的常见的协议。典型地,诸如互联网协议(IP)地址等计算机网络地址或诸如统一资源定位器(URL)等其它引用可以用于彼此标识服务器或客户机。网络地址可以被称为URL地址。可以通过任何可用的通信介质提供通信。
因此,图6示出了一种其中可使用本发明的示例性联网或分布式环境,其中服务器通过网络/总线与客户机计算机通信。根据本发明,网络/总线14可以是LAN、WAN、内联网、因特网或某些其它的网络介质,它具有依照本发明的多个客户机或远程计算机设备110a、110b、110c、110d、110e等,诸如便携计算机、手持计算机、瘦客户机、联网设备或其它设备,诸如VCR、TV、烤箱、电灯、加热器等。因此可以构想本发明可以适用于任何这样的计算设备,对所述的计算设备而言希望保持持久存储的对象。
例如,在通信网络/总线14是因特网的网络环境中,服务器10a、10b等可以是客户机110a、110b、110c、110d、110e等通过多种已知协议中的任意一种(诸如HTTP)与其通信的服务器。如可以是分布式计算环境的特征,服务器10a、10b等还可以用作客户机110a、110b、110c、110d、110e等。
通信可以是(在适合的地方)有线的或无线的。客户机设备110a、110b、110c、110d、110e等可以通过或可以不通过通信网络/总线14通信,并且可以具有与它相关联的独立的通信。例如,在TV或VCR的情况下,可以有或没有关于其控制的联网的方面。每个客户计算机110a、110b、110c、110d、110e等和服务器10a、10b等可以配备有各种应用程序模块或对象135,并且具有到各种类型的存储元件或对象的连接或访问,文件或数据流可以跨所述的存储元件或对象被存储,或是部分的文件或数据流可以被下载到、传输到或移往所述的存储元件或对象。任何计算机10a、10b、110a、110b等可以负责用于存储根据本发明处理的数据的数据库、存储器或其它存储元件20的维护和更新。因此,本发明可以用于这样的计算机网络环境中,它具有可以访问计算机网络/总线14并与其交互的客户计算机110a、110b等,以及可以与客户计算机110a、110b等交互的服务器10a、10b等,以及其它类似的设备和数据库20。
图6和下面的讨论旨在提供对可结合其实现本发明的适合的计算设备的简要的概括描述。例如,图6中示出的任何客户机和服务器计算机或设备都可以采用这种形式。然而应当理解,手持的、便携的和其它的计算设备和各种类型的计算对象也被构想用于本发明,即,计算环境中可以生成、处理、接收和/或发送数据的任何地方。虽然下面描述了通用计算机,但这只是例子,并且本发明可以用具有网络/总线协同工作能力和交互作用的瘦客户机来实现。因此,本发明可以在联网主宿的服务的环境中实现,其中只涉及非常少的或最少的客户机资源,例如,一种联网的环境,其中客户设备仅起到网络/总线的接口的作用,诸如被放置在设备中的一个对象。本质上,可以存储数据的任何地方或可以从中检索数据或将其发送到另一计算机的任何地方都是用于运行本发明的对象持久存储方法的理想的或适合的环境。
虽然没有要求,本发明可以通过操作系统实现,以便由设备或对象的服务开发者使用,和/或被包括在根据本发明运行的应用程序或服务器软件中。软件可以在计算机可执行指令的一般上下文中描述,所述的计算机可执行指令诸如由一个或多个计算机(诸如客户工作站、服务器或其它设备)执行的程序模块。一般地,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定的任务或实现特定的抽象数据类型。典型地,程序模块的功能可以按照所希望的被结合进或分布到各种实施例中。此外,本发明可以用其它计算机系统配置和协议来实现。适用于本发明的其它的公知的计算系统、环境和/或配置包括,但是不限于,个人计算机(PC)、自动柜员机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、可编程消费者电子设备、网络PC、电器、电灯、环境控制元件、小型计算机、大型机等。
因此,图7给出了其中可实现本发明的适合的计算系统环境100的一个例子,虽然如上所述可以清楚了解的,计算系统100仅是适合的计算环境的一个例子,并且不旨在暗示着对本发明的使用范围或功能的任何限制。计算环境100也不应被解释为具有与示例的操作环境100中示出的组件中的任意一个或其组合相关的任何依赖性或要求。
参考图7,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括但不限于处理单元120、系统存储器130和系统总线121,系统总线121将包括系统存储器在内的各种系统组件耦合到处理单元120。系统总线121可以是多种总线结构中的任意一种,包括存储器总线或存储器控制器、外围总线和使用多种总线体系结构中的任何一种的局部总线。作为例子而不是限制,这种体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围组件互连(PCI)总线(也被称为Mezzanine总线)。
计算机110典型地包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质,并且包括易失和非易失介质,可移动和非可移动介质。作为例子而不是限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失和非易失介质,可移动和非可移动介质。计算机存储介质包括,但是不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备,或可以被用于存储所希望的信息并且可以由计算机110访问的任何其它介质。通信介质典型地包括已调制数据信号(诸如载波或其它传输机制)形式的计算机可读指令、数据结构、程序模块或其它数据,并且包括任意的信息传递介质。术语“已调制数据信号”的含义是它的一个或多个特征以在信号中对信息进行编码的方式被设置或改变的信号。作为例子,并且不是限制,通信介质包括诸如有线网络或直接连线连接的有线介质,和诸如声学、RF、红外线或其它无线介质的无线介质。上面所述的任何的组合也应被包括在计算机可读介质的范围内。
系统存储器130包括诸如只读存储器(ROM)131和随机访问存储器(RAM)132的易失和非易失存储器形式的计算机存储介质。包含(诸如在启动过程中)帮助在计算机110内的元件之间传递信息的基本例程的基本输入/输出系统133(BIOS)典型地被存储在ROM 131中。RAM 132典型地包含可以立即由处理单元120访问的和/或当前正由处理单元120处理的数据和/或程序模块。作为例子但不是限制,图7示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包括其它的可移动/不可移动,易失/非易失的计算机存储介质。仅作为例子,图8示出了从不可移动、非易失磁介质读或向其写的硬盘驱动器141,从可移动、非易失磁盘152读或向其写的磁盘驱动器151,以及从可移动、非易失光盘156诸如CD-RW、DVD-RW或其它光学介质读或向其写的光盘驱动器155。可以被用于该示例性操作环境中的其它可移动/不可移动、易失/非易失计算机存储介质包括,但是不限于,磁带、盒式磁带、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141通常通过不可移动存储器接口,诸如接口140连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,诸如接口150连接到系统总线121。
上面讨论并且在图7中示出的驱动器和它们相关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在图7中,例如,硬盘驱动器141被示出为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。此处给予操作系统144、应用程序145、其它程序模块146和程序数据147不同的标号以便示出,至少它们是不同的副本。用户可以通过输入设备,诸如键盘162和定位设备161(诸如鼠标、轨迹球或触摸垫)向计算机110输入命令和信息。其它输入设备(没有示出)可以包括麦克风、游戏杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常被通过耦合到系统总线121的用户输入接口160连接到处理单元120,但是也可以通过其它接口和总线结构连接,诸如并行端口、游戏端口或通用串行总线(USB)。一个或多个图形处理单元(GPU)184可以与图形接口182通信。监视器191或其它类型的显示设备也可以通过诸如视频接口190的接口连接到系统总线121,所述接口进而与视频存储器186通信。除了监视器191之外,计算机还可以包括其它的外围输出设备,诸如扬声器197、打印机196,它们可以通过输出外部接口195连接。
使用到一个或多个远程计算机,诸如远程计算机180的逻辑连接,计算机110可以在联网的或分布式环境中运行。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它的普通网络节点,并且通常包括上面关于计算机110所描述的许多或全部元件,虽然在图7中仅示出了存储器存储设备181。图7中给出的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还可以包括其它网络/总线。这种联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
当用于LAN联网环境中时,计算机110通过网络接口或适配器170连接到LAN171。当用于WAN联网环境中时,计算机110通常包括调制解调器172或用于通过WAN173(诸如因特网)建立连接的其它装置。调制解调器172(可以是内置的或外置的)可以通过用户输入接口160或其它适合的机制连接到系统总线121。在联网的环境中,就计算机110给出的程序模块或其部分可以存储在远程存储器存储设备内。作为例子,但是不是限制,图7示出了驻留在存储器设备181上的远程应用程序185。应当理解,示出的网络通信是示例性的,并且可以使用在计算机之间建立通信链路的其它装置。
结论因此,已经公开了用于存储平台中的锁定和隔离的系统和方法。用于文件系统操作的共享模型与用于查询语言语句的事务和锁定模型统一在一起,以便提供用于存储平台中的锁定和隔离的总体框架。此外,为文件系统操作提供了事务支持,从而它们可以在事务环境中执行。因此,单个事务处理可以包括单个文件系统语句、单个查询语言语句、多个系统语句、多个查询语言语句以及文件系统和查询语言语句的组合。此外,提供了对非事务处理文件系统语句的支持,从而文件系统语句不必在事务环境中执行。
虽然已经以各附图的优选实施例描述了本发明,应当理解,可以使用其它类似的实施例,或对所述的实施例进行修改和添加,以便执行本发明相同的功能,而不脱离本发明。因此,本发明不应被限于任意的单个实施例,而是应当被解释为在所附权利要求的宽度和范围内。
权利要求
1.一种在事务环境中执行文件系统语句的方法,所述文件系统语句包括对打开项目的调用、对从项目读的调用和对写到项目的调用中的一个、对关闭项目的调用,所述方法包括将所述文件系统语句与所述事务相关联;以及通过获得对应于所述项目的数据表行上的读锁和写锁中的一个启动所述的事务。
2.如权利要求1所述的方法,其特征在于,包括通过获得包括对应于所述项目的用户定义类型的数据表行上的读锁和写锁中的一个,启动所述事务。
3.如权利要求1所述的方法,其特征在于,还包括将第二语句与所述事务相关联。
4.如权利要求3所述的方法,其特征在于,包括将所述第二语句与所述事务相关联,所述第二语句是另一文件系统语句。
5.如权利要求3所述的方法,其特征在于,包括将所述第二语句与所述事务相关联,所述第二语句是事务查询语言语句。
6.如权利要求1的方法,其特征在于,启动所述事务包括确定启动所述事务是否将导致冲突;如果是的,则根据冲突分解方案分解所述冲突;以及如果不是,则启动所述事务。
7.如权利要求1所述的方法,其特征在于,获得所述行上的读锁包括获得所述行的读已提交视图。
8.如权利要求1所述的方法,其特征在于,获得所述行上的写锁包括获得防止另一事务在所述事务被处理时访问所述行的写锁。
9.如权利要求1所述的方法,其特征在于,获得所述行上的写锁包括获得防止非事务处理文件系统语句在所述事务被处理时访问所述行的写锁。
10.如权利要求1所述的方法,其特征在于,获得所述行上的写锁包括获得防止所述事务中的另一语句写所述行的写锁。
11.如权利要求1所述的方法,其特征在于,获得所述行上的写锁包括获得允许所述事务内的另一语句读所述行的写锁。
12.如权利要求1所述的方法,其特征在于,包括通过获得所述行的文件流字段上的读锁和写锁中的一个启动所述事务。
13.一种具有用于执行权利要求1所述的步骤的计算机可执行指令的计算机可读介质。
14.一种用于文件系统语句的锁定和隔离的方法,所述文件系统语句包括对打开项目的调用、对从项目读的调用和对关闭项目的调用,所述方法包括确定读访问对于对应于所述项目的数据表的行是否可用;如果不是,则打开失败;以及如果是的,则获得所述行上的读锁。
15.如权利要求14所述的方法,其特征在于,包括确定读访问对于包括相应于所述项目的用户定义类型的数据表的行是否可用。
16.如权利要求14所述的方法,其特征在于,获得所述行上的读锁包括获得所述行的读已提交视图。
17.如权利要求14所述的方法,其特征在于,包括获得所述行的文件流字段上的读锁。
18.一种具有用于执行权利要求14所述的步骤的计算机可执行指令的计算机可读介质。
19.一种用于文件系统语句的锁定和隔离的方法,所述文件系统语句包括对打开项目的调用、对写到项目的调用和对关闭项目的调用,所述方法包括确定写访问对于对应于所述项目的数据表的行是否可用;如果不是,则打开失败;以及如果是的,则获得所述行上的写锁。
20.如权利要求19所述的方法,其特征在于,包括确定写访问对于包括对应于所述项目的用户定义类型的数据表的行是否可用。
21.如权利要求19所述的方法,其特征在于,获得所述行上的写锁包括获得防止另一语句在所述语句被处理时访问所述行的写锁。
22.如权利要求19所述的方法,其特征在于,包括通过获得所述行的文件流字段上的写锁启动所述事务。
23.一种具有用于执行权利要求19所述的步骤的计算机可执行指令的计算机可读介质。
24.一种用于在事务环境中执行文件系统语句的系统,所述文件系统语句包括对打开项目的调用、对从项目读的调用和对写到项目的调用中的一个、以及对关闭项目的调用,所述系统包括一关系型数据引擎,它包括具有对应于所述项目的行的数据表;一构件在所述关系型数据引擎上的存储平台,所述存储平台包括用于将所述文件系统语句与事务相关联的装置,以及用于通过获得所述行上的读锁和写锁中的一个启动所述事务的装置。
25.如权利要求24所述的系统,其特征在于,对应于所述项目的行包括对应于所述项目的用户定义类型。
26.如权利要求24所述的系统,其特征在于,所述存储平台还包括用于将第二语句与所述事务相关联的装置。
27.如权利要求26所述的系统,其特征在于,所述第二语句是另一文件系统语句。
28.如权利要求26所述的系统,其特征在于,所述第二语句是事务查询语言语句。
29.如权利要求24所述的系统,其特征在于,用于启动所述事务的装置包括用于执行下述步骤的装置确定启动所述事务是否将导致冲突;如果是的,则根据冲突分解方案分解所述冲突;以及如果不是,则启动所述事务。
30.如权利要求24所述的系统,其特征在于,所述读锁提供了所述行的读已提交视图。
31.如权利要求24所述的系统,其特征在于,所述写锁防止另一事务在所述事务被处理时访问所述行。
32.如权利要求24所述的系统,其特征在于,所述写锁防止非事务处理文件系统语句在所述事务被处理时访问所述行。
33.如权利要求24所述的系统,其特征在于,所述写锁防止所述事务内的另一语句写所述行。
34.如权利要求24所述的系统,其特征在于,所述写锁允许所述事务内的另一语句读所述行。
35.如权利要求24所述的系统,其特征在于,所述行包括文件流字段。
全文摘要
用于文件系统操作的共享模型与查询语言语句的事务和锁定模型统一在一起,以便提供用于存储平台中的锁定和隔离的总体框架。此外,为文件系统操作提供了事务支持,从而它们可以在事务环境中执行。因此,单个事务处理可以包括单个文件系统语句、单个查询语言语句、多个系统语句、多个查询语言语句以及文件系统和查询语言语句的组合。此外,提供了对非事务处理文件系统语句的支持,从而文件系统语句不必在事务环境中执行。
文档编号G06F17/30GK1856784SQ200480001696
公开日2006年11月1日 申请日期2004年7月29日 优先权日2004年3月10日
发明者R·B·拉杰弗, B·S·拉曼 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1