CN101111840A - 用于在数据库管理系统中为文件操作提供锁定的技术 - Google Patents
用于在数据库管理系统中为文件操作提供锁定的技术 Download PDFInfo
- Publication number
- CN101111840A CN101111840A CNA2005800476318A CN200580047631A CN101111840A CN 101111840 A CN101111840 A CN 101111840A CN A2005800476318 A CNA2005800476318 A CN A2005800476318A CN 200580047631 A CN200580047631 A CN 200580047631A CN 101111840 A CN101111840 A CN 101111840A
- Authority
- CN
- China
- Prior art keywords
- file
- lock
- resource
- requestor
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种用于在数据库服务器上执行文件系统操作锁的方法和装置。在数据库服务器处接收对由数据库服务器管理的一部分文件执行文件操作的请求。响应于接收该请求,数据库服务器授权仅覆盖包含在文件操作中的部分文件的锁。例如,数据库服务器可授权覆盖文件上字节段的锁,其中,字节段小于整个文件。此后,数据库服务器对文件执行文件操作。文件操作可以是NFS操作。
Description
技术领域
本发明涉及在数据库管理系统中执行文件操作。
背景技术
数据被存储在诸如数据库和文件服务器的各种类型的存储机构中。每个存储机构都典型地具有其自己的访问方法。例如,SQL协议一般用于对数据库执行操作,以及NFS协议一般用于对文件系统执行操作。SQL协议是用于访问和处理存储在数据库中的数据的ANSI标准。NFS协议是支持通过网络对文件执行文件操作的分布式文件系统协议。NFS是用于在UNIX主机之间共享文件的已知标准。在NFS协议中,使用文件句柄对文件执行文件系统操作,该文件句柄是识别特定文件的标识符。在RFC 3010中指定的当前版本(版本4)的NFS支持版本3以上的附加功能,例如,增强安全性和有状态(stateful)操作的性能。
目前,数据库管理系统不支持使用NFS协议访问数据库。因此,当用户想要访问数据时,用户必须确定哪种类型的存储机构正在存储数据以确定访问数据的适当方式,例如,用户必须确定数据是否被关联地存储在数据库或文件系统中。在许多情况下,用户确定数据实际存储在哪个存储机构中将成为用户的负担。
此外,期望由于多种原因将尽可能多种类的数据存储在单个存储机构中。使保存的不同种类的存储机构的数量最小化降低了需要保存存储机构所需的资源量。此外,将多种数据存储在中央位置(例如,数据库)中促进了使用的简易性和安全性,这是因为数据没有被存储在多个分散的位置中。
因此,期望用于在数据库管理系统中执行文件系统操作的方法。在这部分中描述的方法是可执行的方法,但不必须是预先设定或执行的方法。因此,除非另外指出,否则不应假设在本部分中描述的任何方法仅由于包括在本部分中而被限定为现有技术。
附图说明
通过附图中的实例示出了本发明的实施例,而并不用于限制本发明,其中,相似的参考标号表示相似的元件,其中:
图1是根据本发明实施例的能够处理在有状态协议中实现的请求的系统的高级视图的方框图;
图2是根据本发明实施例的数据库服务器的功能组件的方框图;
图3是示出根据本发明实施例的处理文件操作的功能步骤的流程图;
图4是示出根据本发明实施例的使用数据库锁和文件系统操作锁的功能步骤的流程图;
图5是根据本发明实施例的存储基于模式的资源的在先版本信息的方框图;
图6A和6B是根据本发明实施例的存储不基于模式的资源的在先版本信息的方框图;
图7是示出根据本发明实施例的各种类型的文件系统操作锁及它们的兼容性的表格;以及
图8是示出了在可实施本发明实施例的计算机系统的方框图。
具体实施方式
在以下描述中,为了说明的目的,阐述了许多具体细节以提供对本发明实施例的透彻理解。然而,应当清楚,没有这些具体细节也可以实施本发明的实施例。在其他实例中,为了避免不必要地模糊这里描述的本发明的实施例,以框图的形式示出了已知结构和装置。
功能概述
本发明的实施例可对存储在数据库中的文件执行任何有状态请求,例如NFS文件操作。在执行有状态操作的过程中,数据库服务器可对资源使用各种基于文件的锁。基于文件的锁不同于数据库锁,其中,当提交数据库事务时,基于文件的锁不被释放,而是当资源作为成功执行了NFS CLOSE文件系统操作的对象时被释放。此外,基于文件的锁可仅在部分资源(例如,文件字节的范围)上被授权。
在实施例中,在数据库服务器处接收用于执行由数据库服务器管理的文件操作的请求。请求可以对存储在数据库中的部分文件执行文件操作。响应于接收该请求,数据库服务器授权仅覆盖包含在文件操作中的一部分文件的基于文件的锁。例如,数据库服务器可授权覆盖文件的字节段的基于文件的锁,其中,字节段小于整个文件。此后,数据库服务器可对文件执行文件操作。一旦文件成为NFS CLOSE文件系统操作的对象,就对文件释放基于文件的锁。
架构概述
图1是根据本发明实施例的能够处理执行文件系统操作请求的系统100的方框图。系统100包括客户端110、数据库管理系统(DBMS)120、和通信链路130。客户端110的用户可向DBMS120发布指定一个或多个文件系统操作性能的请求。为了说明的目的,将给出请求符合NFS版本(例如,版本4)的实例。
客户端110可通过能够向DBMS120发布请求的任何介质或机构来实现。客户端110可向DBMS120发布有状态请求。如本文中使用的,“有状态请求”是用于执行有状态操作的请求。典型地,使用有状态协议(例如,NFS)发布有状态请求。客户端110的示例性实例包括但不限于在可访问通信链路130的装置上执行的应用程序。虽然为了便于解释在图1中仅示出了一个客户端,但系统100可包括任意数量的客户端110,其中,每一个均通过通信链路130与DBMS120进行通信。
客户端110可通过能够同时发布多个请求的介质或机构来实现。例如,客户端110可对应于在装置上执行的应用程序,并且该应用程序可以包括每个都可以对DBMS120发送请求的多个进程。因此,为了避免混淆,这里将术语“请求者”用于指代向DBMS120发布请求的任何实体。因此,请求者可对应于客户端110、在客户端110上执行的进程、或由客户端110产生的进程。
DBMS120是便于电子数据的存储和检索的软件系统。DBMS120包括数据库服务器122和数据库124。使用允许数据库服务器122处理对保持在数据库124中的文件的任何有状态请求(例如,用于执行文件操作的请求)的框架(framework)实现数据库服务器122。
数据库服务器122可在被模拟为多线程服务器的多进程单线程环境中实现。每个都能够执行工作的进程池位于数据库服务器122处。当数据库服务器122接收请求时,数据库服务器122可分配进程池中的任一进程以处理接收到的请求。在多进程单线程环境中实现数据库服务器122使得数据库服务器122按比例支持大量的客户端110。
通信链路130可通过提供客户端110和DBMS120之间的数据交换的任一介质或机构来实现。通信链路130的实例包括但不限于诸如局域网(LAN)、广域网(WAN)、以太网、或互联网的网络,或者一个或多个地面、卫星或无线链路。
框架
图2是根据本发明实施例的数据库服务器122的功能部件的方框图。如上所述,使用允许数据库服务器122处理对保持在数据库124中的文件的有状态请求的框架200来实现数据库服务器122。此外,相同的框架200可允许数据库服务器122处理对保持在数据库124中的数据的无状态请求,例如,以HTTP或FTP协议实现的请求。此外,如下所述,框架200可被配置为包括附加组件以支持新的无状态协议或有状态协议,或者以将新的功能添加到由框架200支持的现有协议。
下面讨论在数据库服务器122的框架200中的每个组件,并且将在标题为“使用框架处理文件操作”的部分中介绍使用框架200处理示例性有状态请求的解释。
框架200可由图2中未示出的附加组件来实现,附加组件提供由有状态或无状态请求所要求的附加功能性。例如,扩展器234是指可以插入框架200的组件,其允许框架200支持新的无状态或有状态协议或将新的功能性添加到由框架200支持的现有协议。为了将扩展组件234插入框架200中,协议解译器210被配置为通过适当信息在适当时间调用扩展组件234。
协议解译器
协议解译器210接收通过通信链路130发送到DBMS120的数据包。可使用能够在通信链路130上接收来自客户端110的数据包的任何软件或硬件组件来实现协议解译器210,并处理如下所述的数据包。协议解译器210一旦接收到数据包,则识别与该数据包相关的数据包类型,并将数据包发送到被配置为读取该数据包类型的数据包的组件。例如,如果协议解译器210通过检查数据包的报头来确定数据包含有NFS请求,然后协议解译器210向NFS数据包读取器224发送数据包。在通过NFS数据包读取器224读取包括NFS请求的数据包之后,NFS数据包读取器224将在数据包内指定的关于单个文件系统操作的信息送回到协议解译器210,用于进一步处理。
协议解译器210包括查找机构212。可使用能够存储DBMS120的请求者的状态信息的任何软件或硬件组件来实现查找机构212。查找机构可将状态信息存储在易失性存储器中,并可使用便于检索状态信息的任何机构(例如,B树和哈希表)来实现。在以下标题为“保存状态信息”的部分中详细表现查找机构212的示例性实施例。
协议解译器210被配置为处理通过由协议解译器210接收的数据包请求的操作。协议解译器210可被配置为执行由接收的数据包请求的操作,或在以下进行进一步的详细解释,协议解译器210可与框架200的一个或多个组件进行通信以执行通过由协议解译器210接收的数据包请求的操作。
输出器
可使用能够执行输出操作的任何软件或硬件组件实现输出器(exporter)220。输出器允许请求者查看目录树的一部分(例如,属于请求者的目录树),来代替属于服务器的目录树。
在实施例中,在框架200成功地执行输出操作之后,框架200向输出操作的请求者发送:(a)识别哪个目录文件夹被输出给请求者的信息,以及(b)识别请求者是否已经读取和/或写入访问所输出目录文件夹的信息。当请求者通过输出操作接收对目录文件夹的访问时,请求者可查看请求者已经访问的目录文件夹的全部内容,包括任何子目录文件夹。
在实施例中,输出器220可保存关于:(a)哪个请求者输出了目录文件夹,以及(b)与任一输出目录文件夹相关的访问许可的信息。目录文件夹可被输出至特定客户端110(例如,将目录文件夹输出至特定IP地址或域名)或者输出至一个或多个客户端,例如,通过将目录文件夹输出给IP掩码可将目录文件夹输出给一组相关机构。
资源锁
可使用能够锁定资源的任何软件或硬件组件来实现资源锁222。在实施例中,资源锁222被配置为对存储在数据库124中的文件执行字节段锁定。
当要求对资源执行锁定时,资源锁222执行锁定。在执行对授权基于文件的锁的请求的过程中,资源锁222可更新通过查找机构212保存的信息。在下面将进一步详细描述基于文件的锁。
例如,作为一个实施例,协议解译器210可指示资源锁222执行请求对文件授权基于文件的锁的文件系统操作。资源锁222可以访问B树以最初确定基于文件的锁是否可被授权,以及如果所请求的基于文件的锁是可被授权,则资源锁222可以更新一个或多个B树以反映已对文件授权了基于文件的锁。下面进一步详细描述资源锁222可访问或更新的特定B树。
数据包读取器
框架200包括多个数据包读取器。每个数据包读取器都被设计为从符合特定协议的数据包中读取信息。例如,框架200包括NFS数据包读取器224、FTP数据包读取器226、和HTTP数据包读取器228。
可使用能够读取和分析符合NFS协议的数据包的任一软件或硬件组件来实现NFS数据包读取器224。这种数据包可请求一个操作或多个操作。请求两个或多个文件系统操作的数据包被称作“复合请求”。NFS数据包读取器224被配置为读取在数据包中指定的第一操作,并将识别该操作的数据返回到协议解译器210。一旦处理了在先操作,协议解译器210此后就可以使NFS数据包读取器224从数据包中读取另一操作。
可使用能够读取和分析包括FTP请求的数据包的任一软件或硬件组件来实现FTP数据包读取器226。FTP数据包读取器226被配置为读取和分析包括在FTP数据包内的FTP操作信息,此后将FTP操作信息传输至协议解译器210,用于处理。
可使用能够读取和分析包括HTTP请求的数据包的任一软件或硬件组件来实现HTTP数据包读取器228。HTTP数据包读取器226被配置为读取和分析包括在HTTP数据包内的HTTP操作信息,此后将HTTP操作信息传输至协议解译器210,用于处理。
虽然图2示出了用于三种不同类型的数据包类型(即,NFS、FTP、和HTTP数据包)的数据包读取器,但其它实施例可以包括用于其它类型的数据包的其它数据包读取器。以这种方式,框架可包括能够读取任一无状态或有状态协议的组件。
特权验证器
可使用能够验证特定请求者是否具有足以执行特定文件系统操作的许可等级的任一软件或硬件组分来实现特权验证器230。每次协议解译器210执行文件系统操作时,协议解译器210可指示特权验证器230来确定特定请求者是否具有足以执行特定文件系统操作的许可等级。下面将参照图3的步骤318的进一步详细描述讨论特定用户是否具有足以执行特定文件系统操作的许可等级的确定。
授权器
可使用能够确定发布由协议解译器210接收的特定请求的请求者实际上是否与在特定请求中识别的请求者相同的任一软件或硬件组件实现授权器232。以这种方式,在执行请求中指定的任何操作之前,可通过授权器232验证请求者的身份。每次协议解译器210接收请求时,协议解译器210都可指示授权器232确定发布由协议解译器210接收的特定请求的请求者实际上是否与在特定请求中识别的请求者相同。下面参照步骤316进一步详细描述特定请求是否由特定客户端110发布的确定。
保存状态信息
在NFS协议中,对已“打开”但还没有“关闭”的文件执行文件系统操作。在请求者可对文件执行其它文件系统操作之前,请求者请求执行OPEN文件系统操作以打开文件。在请求者已对文件执行了所有期望的文件系统操作之后,请求者请求执行CLOSE文件系统操作以关闭文件。
由数据库服务器执行的文件系统操作可跨越一个或多个数据库事务。因此,可在文件被打开的时间和文件被关闭的时间之间对文件执行每一个均改变文件状态的一个或多个数据库事务。
由于NFS是有状态协议,所以框架200必须保存处理有状态请求时的状态信息。状态信息是描述在任何会话中通过资源的请求者在先执行的任何动作的信息。根据一个实施例,保存对于请求者已打开的每个文件的状态信息。例如,如果请求者打开文件A和文件B,则请求者可使对于文件A的第一组状态信息和对于文件B的第二组状态信息相关联。
在请求者(a)打开或关闭文件,或者(b)获得关于打开文件的新锁的任何时间分配或更新状态信息。因此,无论何时只要请求者(a)打开或关闭文件,或者(b)获得关于打开文件的新锁,状态信息就被更新以反映对文件执行的有状态操作。
因为文件被打开,所以与请求者相关的状态信息反映了由请求者对文件执行的所有有状态操作。例如,当请求者第一次打开文件时,可分配状态信息A。此后,如果相同的请求者获得关于文件的锁,则状态信息A变为无效,并分配新的状态信息B。注意,状态信息B反映锁和由请求者打开文件的事实。此后,如果相同的请求者获得关于文件的第二锁,则状态信息B变为无效,并分配新的状态信息C。注意,状态信息C反映锁和由请求者打开文件的事实。当请求者关闭文件时,不再需要保存对于那个请求者、那个文件的状态信息。
持续请求者与文件关系的状态的跟踪
状态识别数据可附加在客户端110和数据库服务器122之间交换的通信以提供在通信中参考的文件的当前状态。当请求者打开文件时,由框架200创建状态识别数据。状态识别数据相对于请求者已打开的特定文件来识别与特定请求者相关的状态信息。
为了持续跟踪打开文件的状态,将新创建的状态识别数据返回给请求者。例如,假设请求者XYZ发布打开文件ABC的请求。框架200生成描述与新打开的文件ABC相关的状态信息的状态识别数据,并将状态识别数据返回给请求者XYZ。
当请求者将请求传送至数据库122以执行对打开文件的文件系统操作时,请求包括预先传输给请求者的任何状态识别数据,例如,状态识别数据可响应于打开文件预先传输给请求者。以这种方式,请求识别与文件相关的状态信息。例如,如果请求者XYZ发送锁定文件ABC的请求,则请求将包括响应于数据库服务器122对文件ABC执行OPEN文件系统操作而预先发送给请求者XYZ的状态识别信息。框架200可使用包括在请求中的状态识别信息以使用查找机构212检索对应的状态信息。
因此,如上所述,框架200响应于执行某一有状态文件系统操作生成状态识别数据,并将生成的状态识别数据传送给文件系统操作的请求者。此后,请求者可通过包括在请求中的状态识别数据对相同文件执行附加的有状态文件系统操作,这允许框架200使用状态识别数据检索文件的状态信息。
当对打开文件执行文件系统操作时,更新与文件相关的状态信息,以反映文件新的操作状态。创建新的状态识别数据以提供更新的状态信息。此后,框架200将新的状态识别数据传送给请求者。以这种方式,仅在请求者和框架200之间交换一组状态识别数据。在框架成功执行有状态文件系统操作之后,从框架200传送的状态识别数据识别与作为有状态文件系统操作对象的资源相关的最近状态信息。
如下一部分中说明的,框架200可将状态信息存储在查找机构212中,以及可以使用状态识别数据检索存储在查找机构212中的状态信息。
保存状态信息
根据一个实施例,使用查找机构212来保存状态信息。在一个实施例中,使用多个B树实现查找机构212。多个B树存储用于处理有状态文件系统操作请求的状态信息。例如,多个B树可存储请求者数据、文件数据、和锁数据。请求者数据是用于识别被注册以发布文件系统操作的请求者的数据。文件数据是用于识别由哪个请求者打开了哪个文件的数据。锁数据是用于识别对于哪个文件的哪个锁已被授权给哪个请求者的数据。
在一个实施例中,多个B树包括“client B-tree”、“client_existsB-tree”、“requestor B-tree”、“open_files B-tree”、“opens B-tree”、“locks_requestor B-tree”、和“granted_locks B-tree”。这些B树中的每一个都可以存储状态信息,并将在下面进行进一步地描述。
本发明的其它实施例可使用不同组的B树实现查找机构212。例如,上述多个B树(例如,client_exists B-tree)存储也存储在其它B树中的信息,因此上述所有B树对于查找机构212的某一实现来说不是必须的。然而,可以有利地在多于一个B树中存储相同或相似的信息,这是因为可使用第一环境中的第一密钥更有效地访问信息,以及可使用第二环境中的第二密钥更有效地访问信息。
在本发明的其它实施例中,可使用多个哈希表代替多个B树实现查找机构212。实现查找机构212的多个哈希表存储类似于下文中描述的信息。也可以通过本发明的其它实施例采用其它机构来实现查找机构212。
CLIENTB-TREE
client B-tree是用于保存关于客户端信息的B树。在client B-tree内索引项中将反映出向框架200登记的每个客户端110。如下面进一步详细说明的,客户端110通过发布请求向框架200登记以建立客户端标识符。client B-tree的密钥是通过数据库服务器预先分配给客户端的客户端标识符。客户端标识符唯一地识别向框架200登记的特定客户端110。client B-tree的每个节点都存储关于特定客户端的信息,包括客户端标识符和客户端提供的标识符,例如,客户端的网络地址。
CLIENT_EXISTB-TREE
类似于client B-tree,client_exists B-tree保存关于客户端的信息。虽然client B-tree和client_exists B-tree都保存关于客户端的信息,但client_exists B-tree的密钥是客户端提供的标识符。例如,客户端提供的标识符可以是客户端的网络地址。
client_exists B-tree可用于基于客户端提供的标识符来确定特定客户端110是否已向框架200登记。client_exists B-tree的每个索引项也都存储关于特定客户端的信息,包括客户端标识和客户端提供的标识符。
REQUESTOR B-TREE
requestor B-tree是保存关于请求者的信息的B树。requestorB-tree的密钥反映与请求者相关的客户端标识符和唯一识别请求者的请求者标识符。requestor B-tree可用于确定与特定客户端110相关的所有请求者,这是在处理OPEN文件系统操作期间或在覆盖已成为不可操作的客户端时所需要的。
requestor B-tree的每个索引项都存储关于请求者的信息。例如,对应于特定请求者的requestor B-tree的索引项可存储关于以下各项信息:哪个客户端与请求者有关、何时接收到来自请求者的最后通信、请求者打开了哪个文件、以及什么状态信息与请求者相关。
OPEN_FILES B-TREE
open_files B-tree是保存关于已打开的文件的信息。open_filesB-tree的密钥是文件的文件句柄。open_files B-tree可用于确定可否对特定文件执行文件系统操作。open_files B-tree的每个索引项都可以存储关于打开文件的信息。例如,这种信息可包括对于打开文上的基于文件的锁的数量、对于打开文件的基于文件的锁的类型、什么状态识别数据识别与打开文件相关的状态信息、用于打开文件的对象标识符。
OPENS B-TREE
opens B-tree是保存关于已打开文件的信息的B树。opens B-tree的密钥是状态识别数据。通过遍历opens B-tree,可以定位关于与状态信息相关的打开文件的信息,该状态信息通过用作opens B-tree的密钥的状态识别数据来识别。
例如,假设客户端已经打开特定文件。对于客户端保存的状态信息将表示客户端已打开了特定文件。状态信息将被分配给一组状态识别数据。状态识别数据可用于遍历opens B-tree以找到表示特定文件打开的索引项。
opens B-tree的每个索引项都存储关于打开文件的信息,例如,识别与打开文件相关的状态信息的状态识别数据、打开了打开文件的请求者、文件是否被打开以用于读或写、打开文件是否被修改、以及读或写是否被除打开了打开文件的请求者之外的任何其他请求者拒绝。
为了打开文件,生成状态识别数据以识别打开文件。状态识别数据(a)被传送至请求打开文件的请求者,以及(b)用于将条目添加到opens B-tree以反映文件已被打开。
LOCKS_REQUESTOR B-TREE
locks_requestor B-tree是保存关于锁请求者的信息的B树。对locks_requestor B-tree的密码是状态识别数据。Locks B-tree的每个索引项都包括关于锁的请求者的信息,例如,客户端标识符、请求者标识符、以及锁所有者标识符。锁所有者标识符唯一地识别被授权锁定的特定请求者。客户端标识符和请求者标识符由框架200分配,并且锁所有者标识符由请求者提供。
GRANTED_LOCKS B-TREE
granted_locks B-tree是保存关于授权锁的信息的B树。granted_locks B-tree的密钥是文件句柄。granted_locks B-tree可用于迅速确定哪个基于文件的锁(如果有的话)已被特定文件授权。
当协议解译器210指示资源锁222执行请求特定锁授权的文件系统操作,资源锁222可访问查找机构212的一个或多个B树。作为实例,假设协议解译器210接收了对文件的特定锁授权的请求,此后,协议解译器210指示资源锁222处理文件系统操作。资源锁222可初始确定是否已经通过访问granted_locks B-tree对文件授权了抵触锁。资源锁222可使用由文件系统操作识别的文件的文件句柄来遍历granted_locks B-tree。如果granted_locks B-tree中的条目存在文件句柄,则条目的检查将通知资源锁222是否已对文件授权了抵触锁。
如果资源锁222确定还没有对文件授权抵触锁,则资源锁222可以(a)生成新的状态识别数据以识别资源的新状态,以及(b)将条目加入granted_locks B-tree以反映所请求锁的授权。资源锁222可使用新生成的用于资源的新状态识别数据将新条目加入granted_locks B-tree,此后,从由在先状态识别数据参考的locks B树中删除在先条目。Locks B树中的新条目包括对在资源上执行的所有在先有状态涉及的参考,因此没有必要存储由在先状态识别数据涉及的项。
使用框架处理文件操作
图3是示出根据本发明实施例的用于处理文件系统操作的步骤的流程图。通过执行图3的步骤,可通过DBMS120执行诸如有状态NFS操作的有状态操作。
一般来说,框架保存关于框架执行的操作的信息。一旦执行了有状态操作,框架就返回对应于操作状态的请求者状态识别数据。在对于有状态操作的后续请求中,请求者将状态识别数据发送回框架。然后,框架将状态识别数据用作密钥以识别应用于该后续请求的操作的状态信息。
获得框架生成的客户端标识符
参照图3,首先,在步骤310中,在数据库服务器处接收用于建立请求者的客户端标识符的第一请求。可通过协议解译器210执行步骤310,其中,协议解译器210通过通信链路130接收由客户端110发送的包括第一请求的数据包。
协议解译器210可接收各种数据包类型的数据包。虽然协议解译器210被配置为识别所接收数据包的数据包类型,但协议解译器210无需配置为读取每种数据包类型。例如,协议解译器210可通过检查包含在数据包报头内的信息来确定所接收数据包的数据包类型。一旦协议解译器210确定所接收数据包的数据包类型,协议解译器210就将该数据包发送到用于读取该数据包类型的数据包的组件。
为了说明的目的,应当假设在步骤310中接收的数据包是包括对请求者建立客户端标识符的请求的NFS数据包。建立客户端标识符是NFS操作。在这些条件下,协议解译器将数据包发送到NFS数据包读取器224以读取该数据包。NFS数据包读取器224读取并解析数据包,并将识别所请求文件系统操作(即,建立客户端标识符)的数据发送回协议解译器210。
在接收识别文件系统操作的数据之后,协议解译器210处理文件系统操作。在本实例中,协议解译器210处理请求以建立客户端标识符。例如,作为处理请求的一部分,协议解译器210可查阅查找机构212以确定(a)是否已对请求者建立客户端标识符,以及(b)如果还没有对请求者建立客户端标识符,则确定哪个客户端标识符应该与请求者相关。
在实施例中,数据库服务器可基于客户端提供的标识符(例如,客户端的网络地址)遍历client_exists B-tree,以确定是否已为特定请求者建立客户端标识符。如果还没有为请求者建立客户端标识符,则数据库服务器可为客户端生成客户端标识符。在为客户端生成客户端标识符之后,数据库服务器可将索引项加入client B-tree和client_exists B-tree,以存储关于分配给请求者的新客户端标识符的信息。
在执行步骤310之后,处理进入步骤312。在步骤312中,在上述步骤310中建立的客户端标识符被传送至请求者。可通过协议解译器210执行步骤312,协议解译器210通过通信链路130将包括客户端标识符的通信传送至请求者。在实施例中,请求者可通过将附加通信与数据库服务器122交互来验证由数据库服务器122接收的客户端标识符,从而验证客户端标识符。在执行步骤312之后,处理前进到步骤314。
接收复合请求
在步骤314中,接收用于执行文件系统操作的第二请求。可通过协议解译器210执行步骤314,该协议解译器210通过通信链路130接收包括由客户端110发送的第二请求的数据包。第二请求包括客户端标识符。
为了示出复合请求的处理,假设在步骤314中接收的第二请求是包括两个或多个文件系统操作的复合请求。由框架200顺序地处理在复合请求中指定的文件系统操作。
为了示出有状态文件系统操作请求的处理,进一步假设在第二请求中指定的第一文件系统操作是对已由请求者预先打开的文件的基于文件的锁的请求。在框架200打开文件后,框架200(a)生成识别与打开的文件相关的状态信息的状态识别数据,以及(b)将状态识别数据传送至请求者。因此,如果在步骤314中接收的请求是用于对打开文件执行文件系统操作的请求,则在步骤314中接收的请求包括预先发送给请求者的状态识别数据。在该实例中,状态识别数据将允许框架200参考与文件相关的状态信息,该文件是请求基于文件的锁的对象。
在协议解译器210确定步骤314的请求包括文件系统操作请求之后,协议解译器212可将包括步骤314的请求的数据包发送到NFS数据包读取器224,以读取数据包。此后,NFS数据包读取器224向协议解译器210传送关于在数据包中指定的第一未处理文件系统操作(下文中称作“当前”文件系统操作)的信息。如下面进一步详细描述的,在处理了当前文件系统操作之后,框架200应该处理在数据包中指定的其它未处理文件系统操作。
为会话分配请求
一旦协议解译器210接收到关于在来自NFS数据包读取器224的复合请求中指定的当前文件系统操作的信息时,协议解译器210将当前文件系统操作分配给数据库会话。可从数据库会话池中选出的分配数据库会话是数据库服务器将处理包括在复合请求中的文件系统操作的会话。因为状态信息独立于会话保存(如上所述,状态信息被保持在查找机构212中),所以可从数据库会话池中选择任一会话,以服务当前文件系统操作。在执行步骤314之后,处理前进到步骤316。
鉴别客户端
在步骤316中,进行步骤314中接收的请求是否是由包括在请求内的客户端标识符识别的客户端发布的确定。在实施例中,每次接收到请求,就鉴别请求以确认请求者的身份。步骤316可通过与授权器232通信的协议解译器210执行,以使授权器232鉴别请求。授权器232可使用包括在鉴别进程中的请求内的客户端标识符。在授权器232鉴别了步骤314中接收的请求之后,授权器232将鉴别进程的结果传输至协议解译器210。授权器232可使用标准鉴别库和协议(包括Kerberos、LIPKEY、和SPKM-3)来鉴别请求者。
如果授权器232未鉴别在步骤314中接收的请求,则协议解译器210将通信发送到发送第二请求(在步骤314中接收的)的请求者,以通知请求者未鉴别第二请求。一旦鉴别了第二请求,则处理前进到步骤318。
确定所请求的操作是否被允许
在步骤318中,进行请求者是否具有足以执行当前文件系统操作的许可等级的确定。步骤318可以通过与特权验证器230通信的协议解译器210执行,以使特权验证器230验证请求者是否具有足以执行当前文件系统操作的许可等级。
在实施例中,特权验证器230使用对每个请求者的访问控制列表确定请求者是否具有足以执行特定文件系统操作的许可等级。特权验证器230保存每个请求者的访问控制列表。每个访问控制列表均包括访问控制条目(ACE)的列表。每个ACE识别请求者是否被授权或被拒绝授予特定特权。
作为实例,假设请求者1234发布了请求以执行请求特权A和特权B的文件系统操作。特权验证器230保存对请求者1234的ACE列表。特权验证器230顺序处理在访问控制列表中指定的ACE。如果对请求者1234的访问控制列表包括:表示请求者1234被授权许可A的第一ACE、表示请求者1234被授权许可B的第二ACE、和表示请求者1234被拒绝授予许可A的第三ACE,然后特权验证器230确定请求者1234具有足以执行请求的文件系统操作的许可等级,这是因为特权验证器230将顺序处理在访问控制列表中的ACE直到可以作出决定。因此,一旦特权验证器230读取了对请求者1234的访问控制列表中的第二ACE,特权验证器230就可以进行关于请求者1234是否具有足以执行请求的文件系统操作的许可等级的确定,并且特权验证器230将不会读取访问控制列表的剩余部分。在执行步骤318之后,处理前进到步骤320。
定位适当的状态信息
在步骤320中,如果执行当前文件系统操作需要状态信息,则基于包含在第二请求内的状态识别数据来检索适当的状态信息。状态识别数据可被预先分配并与请求者通信,例如,请求者可预先打开文件或者可以预先授权文件上的锁。如果请求是复合请求,则在步骤320中检索的状态信息可与当前文件系统操作相结合。可通过使用查找机构212检索状态信息的协议解译器210执行步骤320。在步骤320中检索的状态信息包括执行当前文件系统操作所需的任何状态信息。在处理步骤320之后,处理前进到步骤322。
执行请求的文件系统操作
在步骤322中,基于适当状态信息在选取的数据库会话内处理当前文件系统操作。在一个实施例中,可通过协议解译器210自身执行步骤322。在另一实施例中,协议解译器210可与框架200的其它组件通信,以使其它组件执行当前文件系统操作。在处理了当前文件系统操作之后,处理前进到步骤324。
更新状态信息
在步骤322中,在会话中执行文件系统操作。会话使用的状态由于文件系统操作的执行而改变。在本实施例中,表示会话状态的状态信息被称作“更新的状态信息”。更新的状态信息反映了由当前文件系统操作的处理所产生的状态改变。例如,更新的状态信息反映了作为文件系统操作对象的文件是否已被打开,以及是否已对文件授权了任何锁。然后,在根据文件执行了当前文件系统操作之后,更新的状态信息反映了文件的当前状态。
在步骤324中,更新存储在查找机构212中的信,以反映与当前文件系统操作相关的更新的状态信息。在实施例中,更新包括查找机构212的一个或多个B树,以表示会话的新状态。可通过(a)生成新的状态识别数据以识别更新的状态信息,以及(b)更新或添加条目到查找机构212的适当B树以反映更新的状态信息来更新包括查找机构212的B树。
例如,假设在步骤322中,在步骤322中处理的当前文件系统操作是用于对特定文件的前100个字节执行基于文件的锁的操作。资源锁222可首先确定是否已通过访问granted locks B-tree对文件授权抵触锁。资源锁222可使用在当前文件系统操作中识别的文件的文件句柄遍历granted locks B-tree。如果granted locks B-tree中的条目存在文件句柄,则条目的检查将通知资源锁222是否已对文件上授权抵触锁。
如果资源锁222确定还没有对文件授权抵触锁,则资源锁222(a)生成新的状态识别数据以识别资源的新状态,以及(b)将条目添加到granted locks B-tree以反映所请求锁的授权。具体地,资源锁222可使用新生成的资源的新状态识别数据将新条目添加到granted_locks B-tree,此后,删除由先前状态识别数据涉及的locksB-tree中的先前项。除对资源授权的任一先前锁之外,granted locksB-tree中的新条目包括对文件的前100字节授权的基于文件的锁的参考,因此不必存储由在先状态识别数据涉及的条目。
在执行步骤324之后,处理前进到步骤326。
重复复合请求中指定的操作
每个请求都可以是指定将执行的一个或多个文件操作系统的复合请求。在步骤326中,如果步骤314中接收的请求是复合请求,并且存在复合请求中指定的其它未处理的文件系统操作,则处理进入步骤318,其中,在步骤314的第二请求中指定的下一未处理的文件系统操作成为“当前文件系统操作”。以这种方式,由框架200顺序地处理在复合请求中指定的每个文件系统操作。
在处理了步骤314的第二请求中指定的所有文件系统操作之后,处理前进到步骤328。
为请求者提供结果和修订状态标识符
在步骤328中,执行在步骤314的请求中指定的所有文件系统操作的结果被传送至通信中的请求者。通信可包括识别状态信息的任何状态识别数据,该状态信息被分配到成功执行文件系统操作的对象的特定资源。步骤328的实施可通过协议解译器210执行,协议解译器210向请求者发送处理复合请求的每个文件系统操作的结果,以及响应于执行有状态文件系统操作生成的任何状态识别数据。例如,如果请求者请求对请求者预先打开的文件的特定字节段授权读-写锁,则协议解译器210可通过向请求者发送通信来执行步骤328,该通信包括识别资源的新状态(即,对特定文件的特定字节段授权读-写锁的确认)的新状态识别数据。注意,响应于有状态文件系统操作的成功处理,而不是响应于无状态文件系统操作的成功处理,新的状态识别信息被传送给请求者。
在NFS协议中,可在单个通信中将处理在复合请求中指定的多个文件系统操作的结果传送给请求者,因此,可通过包括用于在复合请求中指定的每个成功执行的有状态文件系统操作的状态识别信息的通信在单个通信中发送在步骤328中传送给请求者的状态识别数据。
如果框架200不能处理复合请求中的特定文件系统操作,则将单个通信传送给请求者。通信包括描述(a)在处理复合请求中指定的文件系统操作的、包括任何新状态识别信息的结果的信息,以及(b)表示不能执行文件系统操作的信息的信息。
使用框架处理无状态事务
框架200也可以处理无状态请求,例如,无状态文件系统操作或符合无状态协议的请求。当协议解译器210接收包括无状态请求的数据包时,协议解译器210可将数据包传送到用于读取和解析数据包的组件。例如,协议解译器210将包括FTP请求的数据包发送至FTP数据包读取器226,以及协议解译器210将包括HTTP请求的数据包发送至HTTP数据包读取器228。
在读取和解析无状态请求之后,FTP数据包读取器226和HTTP数据包读取器228将识别无状态请求的信息传送到协议解译器210。协议解译器210又可以执行无状态请求或与框架210的另一组件进行通信以执行无状态请求,例如,资源锁222可请求锁定资源。因为请求是无状态的,所以一旦请求被成功执行,就无需将状态信息分配给请求。
文件系统操作和数据库事务之间的关系
当客户端希望写文件时,客户端可请求执行OPEN文件系统操作、然后执行多个写文件系统操作、然后执行CLOSE文件系统操作。为了该部分的目的,单个文件系统操作涉及多个NFS操作,从OPEN文件系统操作开始到相应的CLOSE文件系统操作。为了执行单个文件系统操作,可请求数据库服务器122执行一个或多个数据库事务。在执行文件系统操作之前提交一个或多个数据库事务中的每一个。因此,在知道文件系统操作的执行是否成功之前提交通过特定数据库事务对数据库124进行的改变。
因此,如在以下多个部分中的进一步详细说明的,想要查看资源的请求者可以期待查看(a)当前反映任一提交的数据库事务的资源的版本,或(b)仅反映完成的文件系统操作的资源的版本,而不反映对应于尚未完成的文件系统操作的任何提交的数据库事务。
打开提交后的改变
请求者可单独对相同的资源发布OPEN和CLOSE命令。因此,即使CLOSE命令可以相对于一个请求者关闭文件,但仍可以相对于所有请求者关闭文件。术语“最后关闭”是指导致文件对于所有请求者关闭的CLOSE文件系统操作。因此,当前由一个或多个请求者打开的任何资源还没有对资源执行最后关闭。
可在打开文件的时刻和最后关闭的时刻之间执行每一个都改变文件状态的多个数据库事务。对文件执行的改变可对文件执行最后关闭之前提交。(1)已经在数据库中提交,但(2)包括还没有执行最后关闭的文件的改变在这里被称作“打开提交后的改变”。
不一致客户端
当还没有对资源执行最后关闭并且请求者发送请求以获得资源时,请求者将接收的资源状态取决于与请求者相关的客户端类型。“不一致客户端”是期望查看资源“当前状态”的客户端。在本文中,资源的当前状态包括对资源作做的任何打开提交后的改变,但并不包括对资源所做的任何未提交改变。
例如,如果因为资源首先被打开使得两个提交事务的数据库改变了资源状态,并且还没有对资源执行最后关闭,则对资源发布请求的不一致客户端期望查看反映由两个数据库事务进行的改变的资源状态。使用NFS、FTP、或HTTP协议访问DBMS120的客户端是不一致客户端的实例。与不一致客户端相关的请求者将是不一致请求者,即,请求者期望查看资源的当前状态。
一致客户端
一致客户端是不允许查看任何打开提交后的改变的客户端。相反,一致客户端仅(a)如果资源已被打开但还没有被关闭,则在资源被打开之前,或者(b)在已对资源执行了最后关闭之后查看提交的对资源进行的改变。例如,假设已经打开了资源,但还没有对资源执行最后关闭。请求访问资源的一致客户端期望查看仅在执行OPEN操作之前的资源状态。
因此,如果因为资源被打开使得两个提交的数据库事务改变了资源状态,并且还没有执行最后关闭,则发布请求资源的一致客户端期望查看不反映由两个事务完成的改变的资源状态。为了简化说明,必须由一致客户端看到的资源状态应被称作资源的“关闭提交”版本。
使用SQL协议访问DBMS120的客户端是一致客户端的实例。与一致客户端相关的任何请求者将是一致请求者,即,请求者期望查看处于关闭提交状态的资源状态。
为了进一步举例说明,以下文件系统操作和时间点按以下顺序发生:
(1)时间t1
(2)请求者1打开文件f1
(3)请求者1提交对文件f1的改变
(4)时间t2
(5)请求者2打开文件f1
(6)请求者2提交对文件f1的改变
(7)时间t3
(8)请求者1关闭文件f1
(9)时间t4
(10)请求者2关闭文件f1
(11)时间t5
在时间t3,文件f1的一致版本是在t1处的文件,以及文件的不一致版本是时间t3处的文件。在时间t4,文件f1的一致版本是时间t1处的文件,以及文件的不一致版本是时间t4处的文件。在时间t5,文件f1的一致版本是时间t5处的文件,以及文件的不一致版本是时间t5处的版本。因为一致客户端期望查看资源的在先状态,所以该状态必须被保存直到对资源执行了最后关闭。
重构关闭提交后的版本
为了以框架200支持一致请求者和不一致请求者,框架200使用不同类型的锁,即,数据库锁和基于文件的锁。数据库锁是响应于执行数据库操作得到的锁,并且数据库锁在成功完成(提交)数据库操作时被释放。基于文件的锁是响应于执行OPEN文件系统操作得到的锁,并且基于文件的锁在执行CLOSE文件系统操作时被释放。
图4是示出了根据本发明实施例的使用数据库锁和基于文件的锁的功能步骤的流程图。在步骤410中,请求者请求包括特定资源的操作。可经由通信链路130通过客户端110向数据库服务器122发送请求来执行步骤410。在执行步骤410之后,处理前进到步骤412。
在步骤412中,进行请求者的请求类型的确定。可通过数据库服务器122执行步骤412。基于请求者类型,数据库服务器122确定哪个版本的特定资源发送给请求者。如果请求者是不一致请求者,则数据库服务器122发送当前版本的特定资源。然而,如果请求者是一致请求者,则数据库服务器122发送较老版本的特定资源,即,关闭提交后的版本的资源。
可基于请求符合的协议类型完成请求者类型的确定。如果请求符合SQL协议,则请求者是一致请求者。然而,如果请求符合NFS、FTP、或HTTP协议,则请求者是不一致请求者。在执行步骤412之后,处理前进到步骤414。
在步骤414中,为了执行请求的操作,获得对于特定资源的第一锁。第一锁是第一种类型的锁,例如,基于文件的锁。在执行步骤414之后,处理前进到步骤416。
在步骤416中,为了执行由请求操作要求的每个数据库操作,获得第二锁。第二锁是第二种类型的锁,例如,数据库锁。
在实施例中,在执行改变特定资源状态的任何数据库操作之前,将资源的临时拷贝存储在数据库124中。当对特定资源授权了基于文件的锁时,对特定资源的改变反映在资源的临时拷贝中而不在真实的资源本身中。因为资源的原始版本保持未被修改,所以可通过服务一致请求者的数据库服务器122使用原始版本。数据库服务器122可以使用服务不一致请求者的资源的临时拷贝,这是因为临时拷贝反映了已经由提交的数据库操作对资源所做的所有改变。在执行步骤416之后,处理前进到步骤418。
在步骤418中,响应于相应数据库操作的成功完成,释放数据库锁。当由数据库系统执行操作时,数据库系统提交用于执行操作的事务,并释放对在操作期间修改的所有资源上保存的数据库锁。在执行了由请求的操作要求的所有数据库操作之后,处理前进到步骤420。
在步骤420中,响应于文件系统操作的成功完成,释放基于文件的锁。具体地,当对资源执行最后关闭时,释放资源上的基于文件的锁,并且资源的临时拷贝可被建立为资源的当前版本。例如,通过拷贝对于原始拷贝的临时拷贝,然后删除临时拷贝,临时拷贝可被建立为当前版本。
在执行文件系统操作之后,资源的不一致版本和资源的关闭提交后的版本是相同的。因此,可使用资源的原始版本服务一致请求者和不一致请求者,直到资源再次被打开。
通过执行图4的步骤,基于文件的锁和数据库锁可用于使数据库服务器122能够服务一致请求者和不一致请求者。当保存资源上的基于文件的锁时,保持在执行OPEN文件系统操作之前的资源状态,由此允许数据库服务器122服务一致请求者。
管理并发的访问
当多个请求者执行包括相同资源的操作时,使用基于文件的锁同样是有利的。例如,多个请求者中的每一个都可以发布请求以对相同的文件执行文件系统操作。多于一个请求者可以打开文件,并且多于一个请求者可以改变资源的状态。
作为实例,假设第一请求者打开了文件并对文件做出改变。当第二请求者向数据库服务器122发送相同文件版本的请求时,数据库服务器122确定第二请求者的请求者类型。如果第二请求者是一致请求者,则数据库服务器122提供未反映打开了文件之后由第一请求者对文件所做的任何改变的文件的版本。如果第二请求者是不一致请求者,则数据库服务器122提供反映打开了文件之后由第一请求者对文件所做改变的文件的版本。
在以下标题为“执行事务语义”的部分中描述关于在资源作为基于文件的锁的对象时数据库服务器如何可保存资源状态的进一步信息。
执行事务语义
存在保存关于资源作为OPEN文件系统操作的对象时的资源的在先版本的信息是有利的许多原因。首先,如上所述,保存资源作为OPEN文件系统操作的对象而不是最后关闭的对象时的资源的在先版本,使数据库服务器122服务来自一致请求者的资源请求。其次,保持资源的在先版本使数据库服务器将资源恢复到在先版本。例如,当(a)请求者创建不正确版本的资源,(b)请求者创建与模式不兼容的版本的基于模式的资源,或(c)由多个请求者对资源执行的改变彼此不兼容时,有必要在各种环境中将资源恢复到在先版本。
明显地,需要从资源中去除以将资源恢复到在先状态的改变可以包括提交的改变。因此,由数据库系统用来去除由未提交的事务进行的改变的传统取消机构不足以执行必要的恢复。
本发明的实施例有利地使资源恢复到在先状态,即使已经执行了从在先状态改变资源状态的提交的数据库事务。根据本发明的实施例,通过提交的数据库事务对资源完成一个或多个改变。在提交的数据库事务改变资源的状态之后,接收到将资源恢复到由提交的数据库事务作出的改变之前的状态的请求。例如,客户端110可对数据库服务器122发布请求以将特定文件恢复到特定时间点之前的状态,例如,文件的关闭提交后的版本。
响应于接收请求,资源被恢复到特定时间点(例如,当文件被打开的时间点)之前的状态。在恢复资源的过程中,资源的当前状态停止以反映由提交的数据库事务对文件作出的改变。用于将资源恢复到在先状态的技术将在下一部分中进一步详细讨论。
资源恢复技术
各种技术可用于将资源恢复到特定时间点之前的状态。例如,使用的特定技术可依赖于资源是基于模式的资源还是不基于模式的资源。基于模式的资源是符合定义模式的资源。例如,符合给定模式的购货订单文档是基于模式的资源的实例。不基于模式的资源是不是基于模式的资源的任何资源。
以解构形式存储资源
可以构造形式通过存储整个资源(例如,将XML文档存储在数据库表的lob列中)一起来存储基于模式的资源。可选地,可有利地通过分别存储包括基于模式的资源的元素来以解构形式存储基于模式的资源。例如,描述XML文档的各个XML标签的数据及其相关数据可被存储在数据库表的列中。因为分别存储基于模式的资源的元素,所以基于模式的资源的元素可以需要在读取基于模式的资源之前被重构。
图5示出了示出用于以解构形式存储基于模式的资源的机构的资源表。图5的表包括参考列504。描述基于模式的资源的数据可被存储在资源表中或由资源表参考。例如,资源表的参考列504包括识别另一表的指针506,即,XML类型表510,其中,存储关于基于模式的资源的数据。XML类型表510自身可以参考存储基于模式的资源的其它数据元素的一个或多个其它表。例如,通过对嵌套表520的引用512示出了XML类型表510。
XML类型表510和任何嵌套表502存储关于基于模式的资源元素的数据。当请求者想要读取基于模式的资源的前100字节时,资源必须被重构以服务该请求,这是因为XML类型表510并不存储用于描述基于模式的资源的每个数据元素出现在哪个字节的信息。因此,当从基于模式的资源中读取数据时,基于模式的资源必须被重构并被存储在XML的lob列502中。如果请求者想要读取基于模式的资源的前100字节,则这种请求可容易地通过读取存储在XML的lob列502中的解构资源的前100字节由数据库服务器122执行。
如下面进一步详细说明的,可在存储在XML的lob列502中的资源的解构拷贝上执行后续操作,同时留下完整地存储在XML类型表510和任何嵌套表520中的资源的解构元。
恢复基于模式的资源
根据一个实施例,基于“在先版本信息”恢复基于模式的资源。图5是根据本发明实施例的存储用于基于模式的资源的在先版本信息的系统的方框图。在先版本信息可保存在XML类型表510和任何嵌套表520中,同时可对存储在XM的lob列502中的资源的重构拷贝执行对基于模式的资源的改变,直到对基于模式的资源执行最后关闭。
在本发明的实施例中,当对资源授权基于文件的锁时,立即在执行可改变资源状态的数据库操作之前,创建基于模式的资源的构造拷贝。例如,基于模式的资源的构造拷贝可被创建并存储在XML的lob列502中。
此后,资源的构造拷贝(存储在XML的lob列502中的资源拷贝)被作为资源的当前版本,并对资源的构造拷贝(存储在XML的lob列502中的资源拷贝)作出数据库操作所需的改变。实际上,XML的lob列502中的资源拷贝成为资源脏版(dirty version)的高速缓存。注意,基于模式的资源的解构版本仍被保持在XML类型表510中。
为了将基于模式的资源恢复为资源的解构版本,删除存储在XML的lob列502中的资源拷贝。此后,将存储在XML类型表510和任何嵌套表520中的资源的解构版本作为资源的当前版本,来代替存储在XML类型表510中的构造拷贝。
当地资源执行CLOSE文件系统操作时,对存储在XML类型表510中的资源的解构拷贝作出的改变可通过改变存储在XML类型表510和任何嵌套表520中的资源的解构版本而变得持久,以反映存储在XML的lob列502中的资源的构造拷贝。
使用瞬像时间以恢复不基于模式的资源
图6A和6B是根据本发明实施例的存储不基于模式的资源的在先版本信息的方框图。图6A和6B用于讨论用于存储不基于模式的资源的在先版本信息的三种不同方法。
根据第一种方法,如图6A示出,资源表600将不基于模式的资源存储在LOB列602中。在该方法中,当对资源执行OPEN文件系统操作时,瞬像时间被存储在资源表600的列604中。瞬像时间表示紧接着对资源执行OPEN文件系统操作时之前的逻辑时间。
在授权一个或多个数据库事务改变资源之后,数据库事务可以不是“未完成”,但因为瞬像时间,资源可被恢复为使用与资源相关的取消信息的瞬像时间的状态。未完成信息是指由DBMS120保存的、可用于“重算”或取消已执行但未授权的数据库事务。
瞬像时间和取消信息用于将一组改变应用于资源以改变资源的状态,以反映瞬像时间时的资源状态。一旦恢复了资源以反映在瞬像时间时的资源状态,就从资源表600的列604中去除瞬像时间。
在实施例中,“倒叙查询”可用于将一组改变应用于资源以改变资源的状态,从而在瞬像时间时反映资源的状态。用于执行倒叙查询的技术在2003年4月30日提交的标题为“Flashback Database”的美国专利申请序列第10/427,511号中进行了描述,其全部内容结合于此作为参考。
将高速缓存列用于恢复不基于模式的资源
如图6B所示,根据第二种方法,资源表650将不基于模式的资源存储在LOB列652中。在该方法中,当对资源执行OPEN文件系统操作时,将资源的拷贝存储在资源表650的列654中。列654被用作“高速缓存列”。具体地,存储在列654中的资源拷贝被作为资源的当前版本。当数据库事务影响对资源的改变时,对存储在列654中的资源拷贝而不是存储在列652中的原始资源作出改变。
如果对资源执行CLOSE文件系统操作,则存储在654中的资源拷贝可被存储在列652中,因此原始资源将反映对通过提交的数据库操作对资源作出的任何改变。直到执行了CLOSE文件系统操作,存储在列652中的资源的当前值反映恰好在执行OPEN文件系统操作之前的资源状态。因此,如果需要将资源恢复到恰好在执行OPEN文件系统操作之前的资源状态,则需要发生对资源表650的改变仅将去除存储在列654中的资源拷贝。在对资源执行最后关闭之前,不一致请求者可查看列654中的资源拷贝,以及一致请求者可查看存储在列652中的资源。
混合方法
由于存储空间的限制,比某一时间更早的取消信息典型地被较新的取消信息重写。因此,使用瞬像时间执行恢复(即,第一种方法)并不总是可行的。然而,当取消信息可用时,基于瞬像时间的恢复可优于高速缓存列恢复(即,第二种恢复)。
因此,在第三种(混合)方法中,除非数据库服务器122确定资源的取消信息在资源需要被恢复时不可用,否则就执行上述基于瞬像的方法。如果数据库服务器122确定资源的取消信息在资源需要被恢复时不可用,则上述的高速缓存列方法随后被执行。
如果被数据库服务器122保存的取消信息的时间总量小于可配置的时间总量,则数据库服务器122可以确定资源的取消信息在资源需要被恢复时不可用。
一致性检查
根据一个实施例,在文件关闭时检查修改文件的一致性,并且不再存在待决的OPEN文件系统操作。例如,可检查基于模式的资源,以保证基于模式的资源符合模式的规则。如果基于模式的资源不符合相应的模式,则资源可被恢复到在其被打开时的资源状态。
如上所述,如果资源是授权的基于文件的锁的对象并且请求者发布请求以将资源恢复到较早状态,或者如果资源的一致性检查失败,则如上所述,资源可被恢复到较早的状态。下面将描述基于文件的锁的进一步细节和优点。
基于文件的锁
基于文件的锁能够使数据库服务器122对保存在数据库124中的文件执行文件系统操作。资源锁222可管理对存储在数据库124中的资源的文件系统锁。基于文件的锁的性态在三个重要方面不同于用于无状态协议(例如,HTTP)的其它锁。
首先,可对一部分资源而不是仅在全部资源上授权基于文件的锁。具体地,可在资源上的字节段内授权基于文件的锁。因此,单个文件可以是多个基于文件的锁的对象,其中,每个基于文件的锁覆盖文件的不同字节段。
第二,基于文件的锁是以租用为基础的,这意味着一旦对请求者授权特定的基于文件的锁,则在特定文件锁定期满之后,在第一周期授权特定锁。然而,由请求者接收的任何通信更新第二周期的特定锁。因此,在文件系统锁定期满之前,只要请求者与数据库服务器122进行通信,请求者就可不断地更新基于文件的锁。
一旦特定文件系统锁定期满,就更新查找机构212以反映不再授权特定文件锁。可周期性地检查保存在查找机构212内的数据以保证通过请求者请求的每个锁仍然有效。
当特定请求者请求与先前授权的另一锁相抵触时,可检查先前授权的锁以保证先前授权的锁仍然有效。如果先前授权的锁不再有效,则更新存储在查找机构212中的信息以反映该锁无效(例如,可删除关于锁的信息)。同样,当特定客户端期满时,释放已对特定客户端授权的所有锁。在实施例中,因为客户端最后与框架200通信,所以客户端可在经历了时间的可配置量之后期满。因此,如果先前授权的锁与请求授权的锁相抵触,则可检查与先前授权的锁相关的客户端以验证该客户端仍然有效。如果客户端无效,则释放先前授权的锁,并且可执行请求被授权的锁。在本发明的实施例中,可通过检查客户端B树执行特定客户端是否已经期满的确定。
对于无状态协议锁的基于文件的锁的第三个区别是没有仅提供读取访问的基于文件的锁。相反,就基于文件的锁授权了读取访问来说,基于文件的锁还授权读-写访问。
在本发明的实施例中,基于文件的锁包括覆盖全部资源的第一组和覆盖部分资源(例如,资源的字节段)的第二组。图7是示出根据本发明实施例的各种基于文件的锁及其兼容性的表。图7中示出的各种基于文件的锁中的每一个都将在下面进行简要地描述。
字节-读-写基于文件的锁是对于部分资源的锁。字节-读-写基于文件的锁可用于授权对资源上的字节段的读和写访问。
字节-写基于文件的锁是对于部分资源的锁。字节-写基于文件的锁可用于授权对资源上字节段的写访问。
拒绝-读基于文件的锁是对于全部资源的锁。拒绝-读基于文件的锁可用于拒绝除授权的拒绝-读锁之外的任何请求者对资源的读访问。
拒绝-写基于文件的锁是对于全部资源的锁。拒绝-写基于文件的锁可用于拒绝除授权的拒绝-写锁之外的任何请求者对资源的写访问。
基于文件的锁与共享锁或排他锁(例如WebDAV锁)不兼容。图7描述了各种基于文件的锁的兼容性。当特定的基于文件的锁与先前授权的另一锁不兼容时,基于文件的锁将不被授权。因此,如果字节-读-写锁和字节-写锁的范围不相抵触,则可对已具有在其上授权的字节-写锁的资源授权字节-读-写锁。然而,不能在已具有在其上授权的字节-写锁的资源上授权拒绝-读锁。
实际应用簇中的基于文件的锁
例如,可使用Oracle公司的RAC10g选项,在实际应用簇(RAC)中实现数据库122。在RAC环境中,当对资源授权基于文件的锁时,数据必须被存储在描述哪个数据库服务器对资源授权基于文件的锁的数据库124中。
例如,存储在数据库中的资源可与(a)表示已对资源授权基于文件的锁的标志以及(b)识别对资源授权基于文件的锁的数据库服务器的信息相关。查找机构212将关于授权的基于文件的锁的数据保持在存储器中。如果关于授权的基于文件的锁的信息对于RAC实例中的其它节点可见,则存储在存储器中的信息必须永久地被存储或以保存数据一致性的方式传送到RAC的其它节点。如果存储在查找机构212中的信息对于除RAC存在的数据库服务器之外的RAC的其它数据库服务器不可见,则由第一数据库服务器授权的任何基于文件的锁可与第二数据库服务器的基于文件的锁相抵触。
由数据库服务器122使用的上述基于文件的锁使数据库服务器122处理对于由数据库124保存的文件的有状态请求,例如,请求的NFS操作。因此,由于数据库122可使用上述的文件系统操作锁,所以客户端110可以阻止数据一致性的方式使用NFS协议访问存储在数据库124中的文件。
实现机构
可在根据本发明实施例的计算机系统上实现客户端110、数据库服务器122、和数据库124。图8是示出了可在其上实现本发明实施例的计算机系统800的框图。计算机系统800包括总线802或用于传输信息的其它通信机构,以及用于处理信息的与总线802连接的处理器804。计算机系统800还包括主存储器806(例如,随机存取存储器(RAM)或其它动态存储装置),连接至总线802,用于存储信息和由处理器804执行的指令。主存储器806还可用于在由处理器804执行指令期间存储临时变量或其它中间信息。计算机系统800还包括连接至总线802的只读存储器(ROM)808或其它静态存储装置,用于存储静态信息或用于存储器804的指令。设置诸如磁盘或光盘的存储装置810,并将其连接至用于存储信息和指令的总线802。
计算机系统800可经由总线802连接至用于向计算机用户显示信息的显示器812,例如,阴极射线管(CRT)。包括字母数字和其它键的输入装置814连接至总线802,用于将信息和命令选择传输到处理器804。另一种类型的用户输入装置是诸如鼠标、跟踪球、或光标方向键的光标控制器816,用于将方向信息和命令选择传输到处理器804,并用于控制光标在显示器812上的移动。该输入装置通常具有在第一轴(例如,x)和第二轴(例如,y)的两个轴上的两个自由度,这使装置指定平面内的位置。
本发明涉及使用实施本文所述技术的计算机系统800。根据本发明的一个实施例,响应于执行包含在主存储器806中的一个或多个指令的一个或多个序列的处理器804,通过计算机系统800执行这些技术。这些指令可从诸如存储装置810的另一机器可读介质读入主存储器806。执行包含在主存储器806中的指令序列使得处理器804执行本文中描述的处理步骤。在可选实施例中,可以用硬连线电路代替软件指令或与软件指令相结合以实施本发明。因此,本发明的实施例不限于硬件电路和软件的任何具体组合。
本文使用的术语“机器可读介质”指的是参与提供使机器以具体方式操作的数据的任何介质。在使用计算机系统800实施的一个实施例中,例如,各种机器可读介质参与将指令提供给处理器804用于执行。这种介质可采用多种形式,包括但不限于非易失性介质、易失性介质、和传输介质。例如,非易失性介质包括诸如存储装置810的光盘或磁盘。易失性介质包括诸如主存储器806的动态存储器。传输介质包括同轴线缆、铜线和光纤,包括构成总线802的导线。传输介质还可采用声波或光波的形式,诸如在无线电波和红外数据通信中生成的那些波。
例如,机器可读介质的通常形式包括软盘、柔性盘、硬盘、磁带、或其它磁性介质、CD-ROM、DVD、或任何其它光介质、穿孔卡、纸带、任何其它具有孔式样的物理介质、RAM、PROM、EPROM、FLASH-EPROM、任何其它存储芯片或盒式磁带、下文中描述的载波,或计算机可读取的任何其它介质。
各种形式的机器可读介质可参与将一个或多个指令的一个或多个序列传送到处理器804用于执行。例如,指令可最初承载在远程计算机的磁盘上。该远程计算机可将指令加载进其动态存储器并使用调制解调器通过电话线发送这些指令。计算机系统800的本地调制解调器可接收电话线上的数据并使用红外发射器将数据转换为红外信号。红外探测器可接收红外信号中携带的数据,并且适当的电路可将数据放到总线802上。总线802将数据传送到主存储器806,处理器804从主存储器806中取得并执行指令。由主存储器806接收的指令可在处理器804执行之前或之后可选地存储在存储装置810上。
计算机系统800还包括连接到总线802的通信接口818。连接到与本地网822相连的网络链路820的通信接口818提供双路数据通信。例如,通信接口818可以是综合服务数字网络(ISDN)卡或调制解调器,用于提供到相应类型的电话线的数据通信连接。作为另一个实例,通信接口818可以是局域网(LAN)卡,用于提供到兼容LAN的数据通信连接。还可实施无线链接。在任何这样的实施中,通信接口818发送和接收承载表示各种类型信息的数字数据流的电信号、电磁信号或光信号。
网络链路820一般通过一个或多个网络向其它数据装置提供数据通信。例如,网络链路820可通过本地网822提供到主机824或者由互联网服务商(ISP)826操作的数据设备的连接。ISP826又通过现在通常称作“互联网”828的全球分组数据通信网络提供数据通信服务。本地网络822和互联网828都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号和在网路链路820上并通过通信接口818的信号(其将数字数据传送到计算机系统800和从计算机系统800传送数字数据的信号)是传输信息的载波的示例性形式。
计算机系统800可通过网络、网络链路820、和通信接口818发送消息和接收数据(包括程序代码)。在互联网实例中,服务器830可通过互联网828、ISP826、本地网822、和通信接口818传输用于应用程序的请求代码。
当代码被接收到时,所接收的代码可被处理器804执行、和/或存储在存储装置810或其它非易失性存储装置中用于以后执行。这样,计算机系统800可获得载波形式的应用程序代码。
在上述说明书中,参照许多因不同实施而不同的具体细节描述了本发明的实施例。因此,本发明以及申请人所期望的本发明的唯一和专有的标志,是以公布的权利要求的特定形式从该申请所公布的一组权利要求,包括任何后续的修改。对于包含在这样的权利要求中的术语,在此清楚阐述的任何定义都将限定权利要求中所使用的这种术语的含意。因此,在权利要求中没有明确地提到的限定特征、元件、特性、特征、优点或属性不应当以任何方式限制这种权利要求的范围。因此,说明书和附图应当看作说明性的而不是限制性的。
Claims (30)
1.一种机器执行的方法,包括:
在数据库服务器处接收请求,以对由所述数据库服务器管理的文件的一部分执行文件操作;
响应于所述接收所述请求,授权仅覆盖包含在所述文件操作中的所述文件的所述部分的锁;以及
对所述文件的所述部分执行所述文件操作。
2.根据权利要求1所述的方法,其中,所述操作涉及在所述文件的字节段内的信息,以及对应于字节的所述范围授权的所述锁。
3.根据权利要求1所述的方法,其中,对请求者授权所述锁,以及其中,所述锁拒绝除所述请求者之外的任何实体对所述文件进行读访问。
4.根据权利要求1所述的方法,其中,对请求者授权所述锁,以及其中,所述锁拒绝除所述请求者之外的任何实体对所述文件进行写访问。
5.根据权利要求1所述的方法,其中,所述部分小于所述文件。
6.根据权利要求5所述的方法,其中,所述锁授权对所述文件上的字节段进行读和写访问。
7.根据权利要求1所述的方法,其中,所述锁是第一锁,其中,所述部分是第一部分,以及其中,所述方法还包括以下步骤:
从请求者处接收用于请求对所述文件的第二部分的第二锁的第二请求;以及
通知所述请求者所述第二请求将不被执行,因为所述数据库服务器已经授权对所述文件的所述第一锁。
8.一种机器执行的方法,包括:
在数据库服务器处接收来自实体的请求,以执行请求授权特定锁的操作;
所述数据库服务器对所述实体授权特定时间周期的所述特定锁;
不从所述实体接收请求以释放所述特定锁,如果没有从所述实体接收预定时间总量的通信,则自动释放所述特定锁。
9.根据权利要求8所述的方法,其中,所述特定锁拒绝除所述实体之外的任一请求者对资源进行读访问。
10.根据权利要求8所述的方法,其中,所述特定锁拒绝除所述实体之外的任一请求者对资源进行写访问。
11.根据权利要求1所述的方法,其中,所述特定锁授权所述实体对资源上的字节段进行读和写访问。
12.根据权利要求1所述的方法,其中,所述特定锁授权所述实体对资源上的字节段进行写访问。
13.根据权利要求1所述的方法,其中,授权所述锁的所述步骤包括以下步骤:
将条目添加到B树,其中,所述条目存储识别所述文件操作所涉及的所述文件的所述部分的信息。
14.根据权利要求1所述的方法,其中,授权所述锁的所述步骤包括以下步骤:
将条目添加到B树,其中,所述条目存储识别请求所述文件操作的请求者的信息。
15.根据权利要求1所述的方法,其中,授权所述锁的所述步骤包括以下步骤:
访问B树,以确定第二锁是否已对所述文件的所述部分上授权,所述第二锁将阻止执行所述文件操作。
16.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行权利要求1中所述的方法。
17.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行权利要求2中所述的方法。
18.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行权利要求3中所述的方法。
19.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行权利要求4中所述的方法。
20.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行权利要求5中所述的方法。
21.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求6中所述的方法。
22.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求7中所述的方法。
23.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求8中所述的方法。
24.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求9中所述的方法。
25.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求10中所述的方法。
26.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求11中所述的方法。
27.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求12中所述的方法。
28.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求13中所述的方法。
29.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求14中所述的方法。
30.一种承载一个或多个指令序列的计算机可读介质,其中,当所述一个或多个指令序列被一个或多个处理器执行时,使所述一个或多个处理器执行在权利要求15中所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/013,519 | 2004-12-16 | ||
US11/013,519 US20060136508A1 (en) | 2004-12-16 | 2004-12-16 | Techniques for providing locks for file operations in a database management system |
PCT/US2005/015033 WO2006065269A1 (en) | 2004-12-16 | 2005-04-28 | Techniques for providing locks for file operations in a database management system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101111840A true CN101111840A (zh) | 2008-01-23 |
CN101111840B CN101111840B (zh) | 2013-01-16 |
Family
ID=34967486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800476318A Active CN101111840B (zh) | 2004-12-16 | 2005-04-28 | 用于在数据库管理系统中为文件操作提供锁定的技术 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20060136508A1 (zh) |
EP (1) | EP1839195A1 (zh) |
JP (1) | JP4759570B2 (zh) |
CN (1) | CN101111840B (zh) |
AU (1) | AU2005317196A1 (zh) |
CA (1) | CA2591436A1 (zh) |
WO (1) | WO2006065269A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104463010A (zh) * | 2014-10-31 | 2015-03-25 | 华为技术有限公司 | 一种文件锁实现方法及装置 |
CN106060060A (zh) * | 2016-06-22 | 2016-10-26 | 努比亚技术有限公司 | 客户端获取锁的方法及系统 |
CN110968563A (zh) * | 2018-09-29 | 2020-04-07 | 华为技术有限公司 | 一种数据存储方法、元数据服务器及客户端 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289143A1 (en) * | 2004-06-23 | 2005-12-29 | Exanet Ltd. | Method for managing lock resources in a distributed storage system |
US7809675B2 (en) * | 2005-06-29 | 2010-10-05 | Oracle International Corporation | Sharing state information among a plurality of file operation servers |
US8224837B2 (en) * | 2005-06-29 | 2012-07-17 | Oracle International Corporation | Method and mechanism for supporting virtual content in performing file operations at a RDBMS |
US7610304B2 (en) * | 2005-12-05 | 2009-10-27 | Oracle International Corporation | Techniques for performing file operations involving a link at a database management system |
US9460064B2 (en) * | 2006-05-18 | 2016-10-04 | Oracle International Corporation | Efficient piece-wise updates of binary encoded XML data |
US10296629B2 (en) * | 2006-10-20 | 2019-05-21 | Oracle International Corporation | Server supporting a consistent client-side cache |
US9697253B2 (en) * | 2006-10-20 | 2017-07-04 | Oracle International Corporation | Consistent client-side cache |
US8291310B2 (en) * | 2007-08-29 | 2012-10-16 | Oracle International Corporation | Delta-saving in XML-based documents |
US8255372B2 (en) | 2010-01-18 | 2012-08-28 | Oracle International Corporation | Efficient validation of binary XML data |
US10756759B2 (en) | 2011-09-02 | 2020-08-25 | Oracle International Corporation | Column domain dictionary compression |
US8756208B2 (en) * | 2012-07-10 | 2014-06-17 | International Business Machines Corporation | Encoded data processing |
US8966147B2 (en) | 2012-08-22 | 2015-02-24 | Wenguang Wang | Lock leasing method for solving deadlock |
US8812523B2 (en) | 2012-09-28 | 2014-08-19 | Oracle International Corporation | Predicate result cache |
US11567934B2 (en) | 2018-04-20 | 2023-01-31 | Oracle International Corporation | Consistent client-side caching for fine grained invalidations |
CN112839099B (zh) * | 2021-01-29 | 2022-05-13 | 苏州浪潮智能科技有限公司 | 一种分布式字节锁检测控制的方法和设备 |
US11921678B2 (en) * | 2022-01-28 | 2024-03-05 | Dell Products L.P. | Using a logical operation coalescer to concurrently update file system objects |
Family Cites Families (79)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63238644A (ja) * | 1987-03-26 | 1988-10-04 | Nec Corp | ロツク単位の変更方式 |
EP0398495B1 (en) * | 1989-05-15 | 1997-01-22 | International Business Machines Corporation | File lock management in a distributed data processing system |
US5285528A (en) * | 1991-02-22 | 1994-02-08 | International Business Machines Corporation | Data structures and algorithms for managing lock states of addressable element ranges |
GB2269920A (en) * | 1992-08-18 | 1994-02-23 | Clairmont | Maintaining database integrity |
US5956712A (en) * | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
US5768532A (en) * | 1996-06-17 | 1998-06-16 | International Business Machines Corporation | Method and distributed database file system for implementing self-describing distributed file objects |
US5987506A (en) * | 1996-11-22 | 1999-11-16 | Mangosoft Corporation | Remote access and geographically distributed computers in a globally addressable storage environment |
US6148377A (en) * | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
US5937406A (en) * | 1997-01-31 | 1999-08-10 | Informix Software, Inc. | File system interface to a database |
US6032216A (en) * | 1997-07-11 | 2000-02-29 | International Business Machines Corporation | Parallel file system with method using tokens for locking modes |
US6493804B1 (en) * | 1997-10-01 | 2002-12-10 | Regents Of The University Of Minnesota | Global file system and data storage device locks |
US6321374B1 (en) * | 1997-11-07 | 2001-11-20 | International Business Machines Corporation | Application-independent generator to generate a database transaction manager in heterogeneous information systems |
US6799298B2 (en) * | 1998-03-11 | 2004-09-28 | Overture Services, Inc. | Technique for locating an item of interest within a stored representation of data |
US6973455B1 (en) * | 1999-03-03 | 2005-12-06 | Emc Corporation | File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator |
US6321219B1 (en) * | 1998-08-14 | 2001-11-20 | Microsoft Corporation | Dynamic symbolic links for computer file systems |
JP4252139B2 (ja) * | 1998-12-16 | 2009-04-08 | 株式会社日立製作所 | 記憶装置システム |
US6487547B1 (en) * | 1999-01-29 | 2002-11-26 | Oracle Corporation | Database appliance comprising hardware and software bundle configured for specific database applications |
US7366708B2 (en) * | 1999-02-18 | 2008-04-29 | Oracle Corporation | Mechanism to efficiently index structured data that provides hierarchical access in a relational database system |
US6922708B1 (en) * | 1999-02-18 | 2005-07-26 | Oracle International Corporation | File system that supports transactions |
JP3763992B2 (ja) * | 1999-03-30 | 2006-04-05 | 富士通株式会社 | データ処理装置及び記録媒体 |
US6304873B1 (en) * | 1999-07-06 | 2001-10-16 | Compaq Computer Corporation | System and method for performing database operations and for skipping over tuples locked in an incompatible mode |
US6453313B1 (en) * | 1999-07-06 | 2002-09-17 | Compaq Information Technologies Group, L.P. | Database management system and method for dequeuing rows published to a database table |
US8335775B1 (en) * | 1999-08-05 | 2012-12-18 | Oracle International Corporation | Versioning in internet file system |
US7280995B1 (en) * | 1999-08-05 | 2007-10-09 | Oracle International Corporation | On-the-fly format conversion |
US6393435B1 (en) * | 1999-09-22 | 2002-05-21 | International Business Machines, Corporation | Method and means for evaluating the performance of a database system referencing files external to the database system |
JP2001101044A (ja) * | 1999-09-29 | 2001-04-13 | Toshiba Corp | トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム |
US6389420B1 (en) * | 1999-09-30 | 2002-05-14 | Emc Corporation | File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration |
EP1238335A1 (en) * | 1999-12-07 | 2002-09-11 | Data Foundation, Inc. | Scalable storage architecture |
US6564215B1 (en) * | 1999-12-16 | 2003-05-13 | International Business Machines Corporation | Update support in database content management |
US6877095B1 (en) * | 2000-03-09 | 2005-04-05 | Microsoft Corporation | Session-state manager |
US6856993B1 (en) * | 2000-03-30 | 2005-02-15 | Microsoft Corporation | Transactional file system |
JP3992263B2 (ja) * | 2000-03-30 | 2007-10-17 | 株式会社日立製作所 | データベース−ファイル連携方法 |
US7421541B2 (en) * | 2000-05-12 | 2008-09-02 | Oracle International Corporation | Version management of cached permissions metadata |
US8090811B2 (en) * | 2000-06-06 | 2012-01-03 | Panasonic Electric Works Co., Ltd. | Service provider for embedded devices using a message store |
US7024425B2 (en) * | 2000-09-07 | 2006-04-04 | Oracle International Corporation | Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system |
US6571259B1 (en) * | 2000-09-26 | 2003-05-27 | Emc Corporation | Preallocation of file system cache blocks in a data storage system |
US6907414B1 (en) * | 2000-12-22 | 2005-06-14 | Trilogy Development Group, Inc. | Hierarchical interface to attribute based database |
US7383288B2 (en) * | 2001-01-11 | 2008-06-03 | Attune Systems, Inc. | Metadata based file switch and switched file system |
US7788335B2 (en) * | 2001-01-11 | 2010-08-31 | F5 Networks, Inc. | Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system |
US6636878B1 (en) * | 2001-01-16 | 2003-10-21 | Sun Microsystems, Inc. | Mechanism for replicating and maintaining files in a spaced-efficient manner |
US6850938B1 (en) * | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
US7177866B2 (en) * | 2001-03-16 | 2007-02-13 | Gravic, Inc. | Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only |
US6772155B1 (en) * | 2001-04-04 | 2004-08-03 | Ncr Corporation | Looking data in a database system |
US7107319B2 (en) * | 2001-05-31 | 2006-09-12 | Oracle Corporation | Method and apparatus for reducing latency and message traffic during data and lock transfer in a multi-node system |
US7293028B2 (en) * | 2001-06-08 | 2007-11-06 | Sap Ag | Cache-conscious concurrency control scheme for database systems |
US6728709B1 (en) * | 2001-06-22 | 2004-04-27 | Unisys Corporation | Locking partitioned database tables |
EP1563389A4 (en) * | 2001-08-01 | 2008-06-25 | Actona Technologies Ltd | VIRTUAL DATA DISTRIBUTION NETWORK |
US6718327B1 (en) * | 2001-08-31 | 2004-04-06 | Openwave Systems Inc. | Fault-tolerant queue with autonomous client operation |
US6799188B2 (en) * | 2001-08-31 | 2004-09-28 | Borland Software Corporation | Transaction processing system providing improved methodology for two-phase commit decision |
US6874001B2 (en) * | 2001-10-05 | 2005-03-29 | International Business Machines Corporation | Method of maintaining data consistency in a loose transaction model |
US6948039B2 (en) * | 2001-12-14 | 2005-09-20 | Voom Technologies, Inc. | Data backup and restoration using dynamic virtual storage |
US7433948B2 (en) * | 2002-01-23 | 2008-10-07 | Cisco Technology, Inc. | Methods and apparatus for implementing virtualization of storage within a storage area network |
US6904431B2 (en) * | 2002-01-25 | 2005-06-07 | Openwave Systems Inc. | Algorithm for dynamic selection of data locking granularity |
US7085785B2 (en) * | 2002-02-15 | 2006-08-01 | International Business Machines Corporation | Writable file system snapshot with ditto address feature |
US7313557B1 (en) * | 2002-03-15 | 2007-12-25 | Network Appliance, Inc. | Multi-protocol lock manager |
US20030195862A1 (en) * | 2002-04-10 | 2003-10-16 | Harrell James E. | Method and system for providing SQL or other RDBMS access to native xbase application |
WO2003088002A2 (en) * | 2002-04-11 | 2003-10-23 | Linuxcare, Inc. | Managing multiple virtual machines |
US6857001B2 (en) * | 2002-06-07 | 2005-02-15 | Network Appliance, Inc. | Multiple concurrent active file systems |
US7107385B2 (en) * | 2002-08-09 | 2006-09-12 | Network Appliance, Inc. | Storage virtualization by layering virtual disk objects on a file system |
US7475142B2 (en) * | 2002-12-06 | 2009-01-06 | Cisco Technology, Inc. | CIFS for scalable NAS architecture |
US7254578B2 (en) * | 2002-12-10 | 2007-08-07 | International Business Machines Corporation | Concurrency classes for shared file systems |
US7668541B2 (en) * | 2003-01-31 | 2010-02-23 | Qualcomm Incorporated | Enhanced techniques for using core based nodes for state transfer |
US7627552B2 (en) * | 2003-03-27 | 2009-12-01 | Microsoft Corporation | System and method for filtering and organizing items based on common elements |
US7281050B2 (en) * | 2003-04-08 | 2007-10-09 | Sun Microsystems, Inc. | Distributed token manager with transactional properties |
US7139781B2 (en) * | 2003-04-29 | 2006-11-21 | International Business Machines Corporation | Managing filesystem versions |
US7571354B2 (en) * | 2003-05-09 | 2009-08-04 | Sun Microsystems, Inc. | System and method for request routing |
US20040230893A1 (en) * | 2003-05-16 | 2004-11-18 | Dethe Elza | Method and system for enabling collaborative authoring of hierarchical documents with node privileges |
US6959313B2 (en) * | 2003-07-08 | 2005-10-25 | Pillar Data Systems, Inc. | Snapshots of file systems in data storage systems |
US20050039049A1 (en) * | 2003-08-14 | 2005-02-17 | International Business Machines Corporation | Method and apparatus for a multiple concurrent writer file system |
US7349913B2 (en) * | 2003-08-21 | 2008-03-25 | Microsoft Corporation | Storage platform for organizing, searching, and sharing data |
US7401104B2 (en) * | 2003-08-21 | 2008-07-15 | Microsoft Corporation | Systems and methods for synchronizing computer systems through an intermediary file system share or device |
US20050203903A1 (en) * | 2004-03-10 | 2005-09-15 | Rajan Rajeev B. | System and method for locking and isolation in a storage platform |
US7143120B2 (en) * | 2004-05-03 | 2006-11-28 | Microsoft Corporation | Systems and methods for automated maintenance and repair of database and file systems |
US7366740B2 (en) * | 2004-05-03 | 2008-04-29 | Microsoft Corporation | Systems and methods for automatic maintenance and repair of enitites in a data model |
JP4581500B2 (ja) * | 2004-06-17 | 2010-11-17 | 株式会社日立製作所 | ディザスタリカバリシステム、プログラム及びデータベースのリカバリ方法 |
US20050289143A1 (en) * | 2004-06-23 | 2005-12-29 | Exanet Ltd. | Method for managing lock resources in a distributed storage system |
US8495266B2 (en) * | 2004-12-10 | 2013-07-23 | Hewlett-Packard Development Company, L.P. | Distributed lock |
US7627574B2 (en) * | 2004-12-16 | 2009-12-01 | Oracle International Corporation | Infrastructure for performing file operations by a database server |
US7548918B2 (en) * | 2004-12-16 | 2009-06-16 | Oracle International Corporation | Techniques for maintaining consistency for different requestors of files in a database management system |
-
2004
- 2004-12-16 US US11/013,519 patent/US20060136508A1/en not_active Abandoned
-
2005
- 2005-04-28 EP EP05741078A patent/EP1839195A1/en not_active Withdrawn
- 2005-04-28 JP JP2007546623A patent/JP4759570B2/ja active Active
- 2005-04-28 CN CN2005800476318A patent/CN101111840B/zh active Active
- 2005-04-28 AU AU2005317196A patent/AU2005317196A1/en not_active Abandoned
- 2005-04-28 CA CA002591436A patent/CA2591436A1/en not_active Abandoned
- 2005-04-28 WO PCT/US2005/015033 patent/WO2006065269A1/en active Application Filing
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104463010A (zh) * | 2014-10-31 | 2015-03-25 | 华为技术有限公司 | 一种文件锁实现方法及装置 |
CN104463010B (zh) * | 2014-10-31 | 2018-06-19 | 华为技术有限公司 | 一种文件锁实现方法及装置 |
CN106060060A (zh) * | 2016-06-22 | 2016-10-26 | 努比亚技术有限公司 | 客户端获取锁的方法及系统 |
CN110968563A (zh) * | 2018-09-29 | 2020-04-07 | 华为技术有限公司 | 一种数据存储方法、元数据服务器及客户端 |
CN110968563B (zh) * | 2018-09-29 | 2023-11-17 | 华为技术有限公司 | 一种数据存储方法、元数据服务器及客户端 |
Also Published As
Publication number | Publication date |
---|---|
JP4759570B2 (ja) | 2011-08-31 |
AU2005317196A1 (en) | 2006-06-22 |
JP2008524694A (ja) | 2008-07-10 |
CA2591436A1 (en) | 2006-06-22 |
WO2006065269A1 (en) | 2006-06-22 |
CN101111840B (zh) | 2013-01-16 |
US20060136508A1 (en) | 2006-06-22 |
EP1839195A1 (en) | 2007-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101111840B (zh) | 用于在数据库管理系统中为文件操作提供锁定的技术 | |
CN100527129C (zh) | 用于由数据库服务器执行文件操作的基础结构 | |
US7548918B2 (en) | Techniques for maintaining consistency for different requestors of files in a database management system | |
US6564215B1 (en) | Update support in database content management | |
US5649185A (en) | Method and means for providing access to a library of digitized documents and images | |
CN101663671B (zh) | 对web服务资源的访问的授权 | |
US7233959B2 (en) | Life-cycle management engine | |
US7673323B1 (en) | System and method for maintaining security in a distributed computer network | |
US8250102B2 (en) | Remote storage and management of binary object data | |
KR0126245B1 (ko) | 체크인/체크아웃모델용 록킹 메카니즘 | |
EP1625691B1 (en) | System and method for electronic document security | |
CA2407628C (en) | System and method for determining user identity fraud using similarity searching | |
US20030115322A1 (en) | System and method for analyzing security policies in a distributed computer network | |
US8533242B2 (en) | File management method in web storage system | |
CN108475288A (zh) | 一种联合数据库统一访问控制的系统、方法和设备 | |
JP2004094958A (ja) | データ管理システム、データベースアクセス方法及びセキュリティ機構 | |
US7716260B2 (en) | Techniques for transaction semantics for a database server performing file operations | |
JP2000305834A (ja) | データアクセス制御装置 | |
JP2002032248A (ja) | データベース問合せ処理におけるトランザクションの版の提供システム及び該システムにより提供された版を用いたデータベース問合せ処理システム | |
JP2003186728A (ja) | 分散管理データの共有方法 | |
WO2003083719A2 (en) | Life-cycle management engine | |
Roof et al. | Working with Device-Based Data | |
JP2000148688A (ja) | 複数種類の情報処理が可能な環境下で統一的なユーザー権限管理を行うクライアントサーバーシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |