一种具有包括锁管理器的数据库组件和文件系统组件的数据库管理系统。文件系统组件被配置成:生成一个或多个文件系统访问模式、一个或多个文件系统共享模式与一个或多个数据库锁之间的映射,从文件系统栈接收对数据库中的数据执行一个或多个动作的请求,标识请求的文件系统访问模式和文件系统共享模式,基于该映射来确定数据库锁中的哪一个锁与该请求的文件系统访问模式和文件系统共享模式相对应,以及在没有其他数据库锁与该数据上的通知锁相冲突的情况下从锁管理器接收该通知锁,其中该通知锁对应于数据库锁中的那一个锁。在接收到数据上的通知锁后,锁管理器被配置成在来自数据库栈的后续请求包括访问该数据时向文件系统组件发送通知。
【技术实现步骤摘要】
本专利技术涉及用于并发地访问数据库中的数据的各种技术。
技术介绍
某些应用将元数据与文件进行关联。这些应用或者将文件存储在文件系统中并将元数据存储在数据库中,或者它们将文件存储在数据库内。将文件存储在文件系统中并将元数据存储在数据库中一般导致管理这两个存储的问题。将文件连同元数据一起存储在数据库中一般导致基于文件的应用不能够直接访问文件。各应用应当能够将文件与数据库紧密地相关联地存储,通过基于文件的应用来访问文件,并通过基于数据的应用来操纵诸如文件属性等元数据。数据库管理系统中的基于文件的组件和基于数据库的组件(即,基于文件的应用或者程序和基于数据库的应用或程序)两者都访问、读取、文件中的数据并向该数据写入, 以及访问、读取与该同一文件相关联的元数据并向该元数据写入。元数据一般包括与文件相关的属性,如文件的创建日期、作者、大小等,而数据一般指的是文件中包含的信息,如文档中的添加的文本。一般而言,任何文件的元数据被存储在文件系统(例如,NTFS-新技术文件系统)上的数据库文件(例如,MDF文件-微软数据文件)中,而该文件的数据被存储在与该数据库文件相同或不同的文件系统中的单独文件(例如,文件系统文件)。在数据库管理系统中的基于数据库的组件(即,数据库组件)访问存储在数据库文件中的元数据时,该数据库组件可以从该数据库管理系统上的锁管理器请求对应元数据上的共享锁或独占锁。取决于锁管理器发放给数据库组件的锁的类型,数据库组件可以允许多个数据库组件访问该数据/元数据(即,共享锁)或可以只允许单个数据库组件访问该数据/元数据(即,独占锁)。然而,在基于文件的组件(文件系统组件)访问存储在文件系统文件中的数据时, 文件系统组件一般指定对该数据的访问模式的类型和共享模式的类型。访问模式定义文件系统组件是否将对该数据执行各种动作,如读取该数据、向该数据写入、或读取该数据并向该数据写入。共享模式定义文件系统组件是否将对该数据执行访问模式所定义的各动作, 同时允许其他文件系统组件并发地读取该同一数据并向该数据写入。在某些情况下,数据可以与元数据一起存储在数据库文件中。如此,文件系统组件访问数据库文件以对该数据执行它的动作。因为数据库组件不像文件系统组件那样在访问数据库文件上的数据或元数据时定义所需的访问模式和共享模式,所以在数据库组件和文件系统组件两者都请求访问数据库文件上的同一数据或元数据时,这两组件之间发生冲突。
技术实现思路
本文描述了用于并发地访问数据库中的数据的各种技术的实现。数据库管理系统中的基于文件的组件和基于数据库的组件(即,基于文件的应用或者程序和基于数据库的应用或程序)两者都访问、读取文件中的数据并向该数据写入,以及访问、读取与该同一文件相关联的元数据并向该元数据写入。元数据包括与文件相关的属性,如文件的创建日期、 作者、大小等,而数据一般指的是文件中包含的信息,如添加到文档中的文本。一般而言,任何文件的元数据被存储在文件系统(例如,NTFS-新技术文件系统)上的数据库文件(例如,MDF文件-微软数据文件)中,其中一指针指向存储该文件(文件系统文件)的数据的单独文件。该单独文件可被存储在与该数据库文件相同或不同的文件系统中。然而,为了更好地管理对数据和元数据的访问,该数据可与元数据一起被存储在数据库文件中。数据库管理系统中的基于数据库的组件(即,数据库组件)可以管理来自数据库应用的对执行诸如更新、读取存储在数据库文件中的元数据或向该元数据写入等动作的请求。如此,在数据库组件访问存储在数据库文件中的元数据时,该数据库组件可以从数据库管理系统上的锁管理器请求对应元数据上的共享锁或独占锁。取决于锁管理器发放给数据库组件的锁的类型,数据库组件可以允许多个数据库应用访问该数据/元数据(即,共享锁)或可以只允许单个数据库应用访问该数据/元数据(即,独占锁)。数据库管理系统中的基于文件的组件(即,文件系统组件)可以管理来自文件系统应用的对执行诸如更新、读取存储在数据库文件中的数据或存储在文件系统文件中的数据或向该数据写入等动作的请求。一般而言,在文件系统组件访问存储在文件系统文件中的数据时,文件系统组件可指定对该数据的访问模式的类型和共享模式的类型。访问模式定义文件系统组件是否将对该数据执行各种动作,如读取该数据、向该数据写入、或读取该数据并向该数据写入。共享模式定义文件系统组件是否将对该数据执行访问模式所定义的各动作,同时允许其他文件系统组件并发地读取该同一数据并向该数据写入。然而,在文件系统组件访问数据库文件中的数据时,数据库组件和文件系统组件之间发生冲突,因为数据库组件不能理解或处理文件系统组件所指定的模式。如此,在数据库组件和文件系统组件都请求访问数据库文件上的同一数据或元数据时,这两个组件之间将发生冲突。为了便于文件系统组件和数据库组件对数据的并发访问,文件系统组件可以首先生成文件系统组件的模式与数据库组件的锁之间的映射。在生成文件系统组件的模式与数据库组件的锁之间的映射之后,文件系统组件可以从文件系统栈接收对存储在数据库文件上的数据或元数据执行某一动作的请求。在接收到该请求之后,文件系统组件可以基于该映射来确定对元数据所请求的动作的数据库等效锁。文件系统组件随后向数据库锁管理器发送对与所请求的动作相关的数据或元数据上的数据库等效锁的请求。在一个实现中,文件系统组件可以请求数据/元数据上的通知锁。如果该数据/元数据当前具有与该通知锁相冲突的数据库锁,则数据库锁管理器可以向文件系统组件发送指示该冲突的错误。然而, 如果该数据/元数据上没有锁,则数据库锁管理器可以向文件系统组件发放该数据/元数据上的所请求的通知锁。在发放了数据/元数据上的通知锁之后,文件系统组件随后可以将该数据/元数据存储在高速缓存中,使得对该数据/元数据的将来请求可被更快地处理。 在一个实现中,即使不存在使用该数据/元数据的活动句柄,文件系统组件也可以在将该数据/元数据存储在高速缓存中时继续保持该数据/元数据上的通知锁。在数据库组件请求访问具有文件系统组件所保持的通知锁的数据/元数据时,文件系统组件可以从数据库锁管理器接收指示数据库组件已请求该通知锁以获取对该数据/元数据的访问权的通知。在从数据库锁管理器接收到该通知之后,文件系统组件可以基于活动句柄是否关闭了该数据/元数据来确定它是将释放该数据/元数据上的通知锁还是将继续保持该数据/元数据上的通知锁。如果文件系统组件的活动句柄关闭了该数据/元数据(即,该数据/元数据被存储在高速缓存中),则文件系统组件可以释放该数据/元数据上的通知锁以允许数据库组件访问该数据/元数据。然而,如果文件系统组件的活动句柄当前正在访问该数据/元数据或者是打开的,则文件系统组件可以继续保持该通知锁直至活动句柄关闭为止。在活动句柄关闭之后,文件系统组件可记起接收到了通知并且它随后可释放与该数据/元数据相关联的通知锁,以使得数据库组件可以获得对该元数据的访问权。提供以上引用的
技术实现思路
章节以便以简化形式介绍将在以下具体实施方式章节中进一步描述的一些概念。本
技术实现思路
并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本专利技术的任一部分中提及的任何本文档来自技高网...
【技术保护点】
1.一种用于提供对数据的访问权的方法,包括:从文件系统栈接收对数据库中的数据执行一个或多个动作的请求;标识所述请求的文件系统访问模式和文件系统共享模式;基于所述文件系统访问模式、所述文件系统共享模式、以及数据库锁之间的映射来确定与所述请求的文件系统访问模式和文件系统共享模式相对应的数据库锁;以及接收所述数据上的通知锁,其中所述通知锁对应于所述数据库锁。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:V·卡姆拉,P·麦德哈瓦拉普,C·迪亚科努,J·方,S·阿查里雅,M·沃明顿,M·普拉扎,A·奥克斯,S·德布纳斯,
申请(专利权)人:微软公司,
类型:发明
国别省市:US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。