当前位置: 首页 > 专利查询>微软公司专利>正文

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

技术编号:2848561 阅读:311 留言:0更新日期:2012-04-11 18:40
用于文件系统操作的共享模型与查询语言语句的事务和锁定模型统一在一起,以便提供用于存储平台中的锁定和隔离的总体框架。此外,为文件系统操作提供了事务支持,从而它们可以在事务环境中执行。因此,单个事务处理可以包括单个文件系统语句、单个查询语言语句、多个系统语句、多个查询语言语句以及文件系统和查询语言语句的组合。此外,提供了对非事务处理文件系统语句的支持,从而文件系统语句不必在事务环境中执行。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及数据检索和操作领域,尤其涉及存储平台中的锁定和隔离。
技术介绍
近来计算领域中的一种发展是计算机操作系统可以用于构建在关系型引擎上的存储平台。这种存储平台可以是,例如,来自华盛顿州雷蒙德市的微软公司的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是表示可在其中实现本专利技术的示例性计算设备的框图。说明性实施例的详细描述为了满足法定要求以细节描述本文档来自技高网...

【技术保护点】
一种在事务环境中执行文件系统语句的方法,所述文件系统语句包括对打开项目的调用、对从项目读的调用和对写到项目的调用中的一个、对关闭项目的调用,所述方法包括:    将所述文件系统语句与所述事务相关联;以及    通过获得对应于所述项目的数据表行上的读锁和写锁中的一个启动所述的事务。

【技术特征摘要】
【国外来华专利技术】US 2004-3-10 10/797,2381.一种在事务环境中执行文件系统语句的方法,所述文件系统语句包括对打开项目的调用、对从项目读的调用和对写到项目的调用中的一个、对关闭项目的调用,所述方法包括将所述文件系统语句与所述事务相关联;以及通过获得对应于所述项目的数据表行上的读锁和写锁中的一个启动所述的事务。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所述的方法,其特征在于,包括获得所述行的文件流字段...

【专利技术属性】
技术研发人员:RB拉杰弗BS拉曼
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1