CN101080714A - 用于由数据库服务器执行文件操作的基础结构 - Google Patents
用于由数据库服务器执行文件操作的基础结构 Download PDFInfo
- Publication number
- CN101080714A CN101080714A CNA2005800432659A CN200580043265A CN101080714A CN 101080714 A CN101080714 A CN 101080714A CN A2005800432659 A CNA2005800432659 A CN A2005800432659A CN 200580043265 A CN200580043265 A CN 200580043265A CN 101080714 A CN101080714 A CN 101080714A
- Authority
- CN
- China
- Prior art keywords
- request
- file
- requestor
- resource
- lock
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99939—Privileged access
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协议中,使用文件句柄(filehandle)来对文件执行文件系统操作,文件句柄是标识特定文件的标识符。在RFC 3010中所指定的NFS的当前版本(版本4)支持版本3之上的附加功能,比如,加强了安全性和状态操作的执行性。
目前,数据库管理系统不支持使用NFS协议来存取数据库中的数据项。因此,当用户想存取数据时,该用户就必须确认正存储该数据的存储机制类型,以确定存取该数据的合适的方式。例如,为了确定是否可用NFS协议,该用户就必须确定该数据是否关系性地(relationally)存储在数据库或文件系统中。在许多情况下,对该用户来说,确定数据实际被存储的存储机制是一项繁琐的任务。
而且,出于各种原因,需要在单一存储机制中存储尽可能多种类的数据。例如,用于存储数据的不同类型存储机制的数量最小化的过程可以说减少了维护存储机制所需要的资源量。而且,在诸如数据库等中心存储单元存储许多种类的数据提高了易用性和安全性,这是因为,数据不是存储在其中的每个机制都可执行不同的安全策略的多个机制中。
因此,需要一种用于在数据库管理系统中执行文件系统操作的方法。在本节中描述的方法是一种可被推行的方法,但不必须是以前已经被想到或推行的方法。因而,除非另外说明,不应该假定本节描述的任何方法根据它们在本节的包含内容而只限定为现有技术。
发明内容
附图说明
附图是用于实例示出而不是用于限制了本文描述的系统和方法。贯穿附图中的类似参考标号用于表示类似元素和类似特征。其中:
图1是根据本发明实施例能够处理在状态协议下所执行的请求的系统的框图;
图2是根据本发明实施例的数据库服务器的功能组件的框图;
图3是表示根据本发明的实施例来处理文件操作的功能步骤的流程图;
图4是表示根据本发明的实施例来使用数据库的锁和基于文件的锁的功能步骤的流程图;
图5是根据本发明的实施例来存储基于图表的资源的先前版本信息的框图;
图6A和图6B是根据本发明的实施例来存储非基于图表的资源的先前版本信息的框图;
图7是示出了根据本发明实施例的各种类型的基于文件的锁及其兼容性的表;以及
图8是表示实施本发明实施例的计算机系统的框图。
具体实施方式
在以下的描述中,出于说明的目的,为了提供对本发明实施例的完整理解,给出了许多特定的细节。但是,很清楚,没有这些具体细节也可以实施本发明的实施例。在其它的实例中,为了避免对本文所述的本发明实施例的不必要的误解,以框图的形式示出了公知的结构和装置。
功能概述
给出了能使数据库服务器处理在存储在数据库中的数据上执行诸如状态文件系统操作等状态操作请求的框架。“状态操作”是这样的操作,其(1)是在会话中被请求的,以及其(2)在某方式下考虑了先前在该会话中所执行的操作。某些操作的执行影响状态操作的执行。例如,执行数据库操作的结果可能是成功执行状态操作所需要的。大多数应用NFS执行的文件系统操作是状态操作。当通过数据库服务器执行时,状态文件系统操作就可跨越一个或多个数据库事务。
在实施例中,在数据库系统端接收请求。例如,该项请求可以是应用NFS协议来执行状态操作的请求。该项请求包括状态标识数据,其为标识与该项请求关联的状态信息的数据。以下更详尽描述的状态信息是描述在任一会话中由请求者先前在资源上所执行的任何操作的信息。例如,假若一个请求者在不同会话中针对资源而执行了几个状态操作,那么该资源的状态信息就会描述反映所执行的状态操作的资源状态。
当在资源上执行状态操作时,就检索与该资源关联的状态信息,致使该状态操作的执行反映先前所执行的其它任何的状态操作。基于包含在该项请求中的状态标识数据来在数据库系统中检索与该项请求关联的状态信息。然后,至少部分基于该状态信息来处理该项请求。
方便地提供了本发明的实施例以用于为在数据库管理系统端处理文件系统操作来存取诸如文件、关系数据、和对象关系数据(object-relational data)等任何由数据库管理系统维护的数据而作好准备。本文所述的框架可方便地允许遵守诸如NFS等将在数据库服务器端被处理的状态协议的请求。虽然本发明的实施例应当主要描述有关处理运用NFS协议来执行的请求,该框架可以用来处理任何状态或非状态协议。本发明的实施例可用来处理遵守NFS协议(包括版本4或以后所开发的任何版本)的请求。
架构概述
图1为根据本发明的实施例能够处理执行文件系统操作的请求的系统100的框图。系统100包括客户端110、数据库管理系统(DBMS)120、和通信链路130。客户端110的用户可发送指定了执行一个或多个文件系统操作的请求到DBMS 120。出于说明的目的,将给出其中遵循NFS版本(如版本4)的请求的实例。
可以通过能够发送请求到DBMS 120的任何介质或机制来执行客户端110。客户端110可发送状态请求到DBMS 120。本文所用的“状态请求”是用于执行状态操作的请求。通常,应用诸如NFS的状态协议来发送状态请求。客户端110的非限制性的、说明性的实例包括在对通信链路130来说可访问的装置上执行的应用程序。虽然便于说明图1中只示出了一个客户端,但系统100可包括任何数量的客户端110,其每个都与DBMS 120通过通信链路130进行通信。
可通过能够同时发送多个请求的介质或机制来执行客户端110。例如,客户端110可与在装置上执行的应用程序相对应,并且该应用程序可以包括多个处理进程,其每个都可传送请求到DBNS120。因此,为了避免混乱,术语“请求者”在本文被用来指任何发送请求到DBMS 120去的实体。因此,请求者可以对应于客户端110、在客户端110上执行的处理进程、或由客户端110生成的处理进程。
DBMS 120是便于电子数据存储和检索的软件系统。DBMS 120包括:数据库服务器122和数据库124。应用一种允许数据库服务器122处理任何状态请求(例如,针对在数据库124中所维护的文件执行文件操作的请求)的框架来执行数据库服务器122。
可以在正被模拟为多线程服务器的多进程单线程环境中执行数据库服务器122。其中的每个进程都能够执行操作的进程池驻留在数据库服务器122端。当数据库服务器122收到请求时,数据库服务器122就可分配进程池中的任一进程来处理所收到的请求。在多进程单线程环境中执行数据库服务器122就允许数据库服务器122扩展(scale)来支持大量的客户端110。
可以通过提供用于在客户端110和DBMS 120之间交换数据的任何介质或机制来执行通信链路130。通信链路的实例包括,但不限于,诸如局域网(LAN)、广域网(WAN)、以太网、或互联网等网络,或者,一个或多个地球、人造卫星、或无线链路。
框架
图2为根据本发明实施例的数据库服务器122的功能组件的框图。如上所述,应用一种允许数据库服务器122在维护于数据库124中的文件上处理状态请求的框架200来执行数据库服务器122。另外,相同的框架200可允许数据库服务器122处理无状态请求,诸如维护于数据库124中的数据上以HTTP或FTP协议所执行的请求。而且,如下所说,框架200可以被构造来包括:支持新的无状态协议或状态协议的、或添加新功能到现有的由框架200所支持的协议中去的附加组件。
下边讨论数据库服务器122的框架200中的每个组件,以及将给出随后在题为“应用框架处理文件操作”的那节中的、运用框架200来处理示例性状态请求的说明。
可以用图2中未示出的另外的组件来执行框架200,这些组件提供了状态或无状态请求所需的附加功能。例如,扩展234是指可被插接到框架200中的组件,框架200允许其自身支持新的无状态或状态协议、或添加新功能到由其自身支持的现有协议中去。为了插接扩展组件234到框架200中,协议解释器210被构造来在合适的时间用合适的信息调用扩展组件234。
协议解释器
协议解释器210通过通信链路130接收被发送到DBMS 120去的信息包。可以使用任何能够通过通信链路130从客户端110接收信息包的、以及能够按如下所述处理信息包的软件或硬件组件,来执行协议解释器210。协议解释器210一旦接收信息包就标识与该信息包关联的信息包类型,并且发送该信息包到被构造来读取该信息包类型的多个信息包的组件。举例来说,如果协议解释器210通过检查该信息包的报头确定该信息包包含有NFS请求,那么,协议解释器210就发送该信息包到NFS信息包读取器224。在NFS信息包读取器224读取含有该NFS请求的信息包后,NFS信息包读取器224就把与在该信息包内所指定的单个文件系统操作有关的信息发送回协议解释器210以便进一步处理。
协议解释器210包含查找机制212。可以使用能够为DBMS 120的请求者存储状态信息的任何软件或硬件组件来执行查找机制212。查找机制可把状态信息存储在易失存储器中,并且可使用诸如B-树和散列表(其便于状态信息的检索)等任何机制来执行该查找机制。在以下的题为“维护状态信息”的节中给出了查找机制212的示例性实施例的另外的细节。
协议解释器210被配置来处理由协议解释器210收到的信息包所请求的操作。协议解释器210可以被配置来执行由收到的信息包所请求的操作,或者在如下进一步的细节中所说明的那样,协议解释器210可以与框架200的一个或多个组件进行通信以执行由协议解释器210收到的信息包所请求的操作。
输出器
可以使用能够执行输出操作的任何软件或硬件组件执行输出器220。输出允许请求者好象目录树就驻留在请求者那里(实际上该目录树正驻留在服务器端)一样查看该目录树的一部分。
在实施例中,在框架200成功地执行输出操作以后,框架200传送如下到该输出操作的请求者:(a)标识被输出到该请求者的目录文件夹的信息,以及(b)标识该请求者是否已经读和/或写访问所输出的目录文件夹的信息。当请求者通过输出操作接收对目录文件夹的存取的时候,该请求者就可以查看包括任何子文件夹在内的、该请求者存取的目录文件夹的所有内容。
在实施例中,输出器220可维护与以下有关的信息:(a)哪些请求者已输出了目录文件夹,以及(b)与任何所输出的目录文件夹关联的存取权限。可以把目录文件夹输出到指定的客户端110(如,输出目录文件夹到指定的IP地址或域名)或到一个或多个客户端,例如,通过输出目录文件夹到IP掩码就可输出目录文件夹到一组相关联的装置。
资源锁
可以使用能够锁定资源的任何软件或硬件组件来进行资源锁(Resource locker)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信息包读取器228被配置来读取和解析包含在该HTTP信息包内的HTTP操作信息,以及随后传送HTTP操作信息到协议解释器210来处理。
虽然图2示出了用于信息包类型的三种不同类型(即NFS、FTP、和HTTP信息包)的信息包读取器,其它的实施例可以包括用于另外类型的信息包的另外的信息包读取器。在这种方式下,框架可包括能够读取任何无状态或状态协议的组件。
权限验证器
可以使用能够验证特定的请求者是否具有足够的权限级别执行特定的文件系统操作的任何软件或硬件组件来实施权限验证器230。每次协议解释器210执行文件系统操作时,协议解释器210都可指令权限验证器230来确定特定的请求者是否具有足够的权限级别执行特定的文件系统操作。以下将参照图3的步骤318更详细地讨论如何确定特定的用户是否有足够的权限级别执行特定的文件系统操作。
授权器
可以使用能够确定发送由协议解释器210所接收的特定请求的请求者实际上是否是在该项特定请求中所标识的同一个请求者来实施授权器232。这样,可以在执行该请求中指定的任一操作之前,由授权器232验证该请求者的身份。每次协议解释器210接收请求时,协议解释器210都可指令授权器232来确定发送由协议解释器210所接收的特定请求的请求者是否是在特定请求中所标识的同一个请求者。以下将参照步骤316更详细地阐述如何确定特定的请求是否是已由特定的客户端110所发送的。
维护状态信息
在NFS协议中,在已经“打开”、但还未“关闭”的文件上执行文件系统操作。在请求者在文件上执行其它的文件系统操作以前,请求者请求执行打开文件系统操作以打开该文件。在请求者在该文件上完成了所有需要的文件系统操作以后,请求者请求执行关闭文件系统操作以关闭该文件。
由数据库服务器所执行的文件系统操作可以跨越一个或多个数据库事务。结果,在文件打开和文件关闭的时刻之间可以在该文件上执行其每个都改变文件状态的一个或多个数据库事务。
因为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上的锁所进行的请求,该项请求就将包含先前响应于在文件ABC上执行打开文件系统操作的数据库服务器122而被发送到请求者XYZ的状态标识信息。框架200可使用包含在该项请求中的状态标识以利用查找机制212来检索相应的状态信息。
因此,如上所述,框架200响应于执行某些状态文件系统操作来生成状态标识数据,并且所生成的状态标识数据被传送到该文件系统操作的请求者。此后,该请求者通过在该请求中包括该状态标识数据(其允许框架200使用该状态标识数据来检索该文件的状态信息)可在相同的文件上执行附加的状态文件系统操作。
当在打开文件上执行文件系统操作时,与该文件关联的状态信息就被更新以反映该文件的新的操作状态。参照所更新的状态信息来生成新的状态标识数据。此后,框架200传送该新的状态标识数据到该请求者。这样,在该请求者和框架200之间就只有一组状态标识数据被交换。在该框架成功地执行了状态文件系统操作以后,从框架200所传送来的状态标识数据标识与其已为该状态文件系统操作的主题的资源相关联的最近的状态信息。
如在下一节中所述,框架200可在查找机制212中存储状态信息,以及可使用该状态标识数据来检索被存储在查找机制212中的状态信息。
维护状态信息
根据一个实施例,使用查找机制212来维护状态信息。在一个实施例中,应用多个B-树来实施查找机制212。多个B-树存储在处理状态文件系统操作请求中所使用的状态信息。例如,多个B-树可存储请求者数据、文件数据、和锁定数据。请求者数据是标识被登记来发送文件系统操作的请求者的数据。文件数据是标识哪些文件已被哪些请求者所打开的数据。锁定数据是标识哪些文件上的哪些锁已被授权给哪些请求者的数据。
在一个实施例中,多个B-树包括:“客户端B-树”(“clientB-tree”)、“现有客户端B-树”(“client_exists B-tree”)、“请求者B-树”(“requestor B-tree”)、“打开文件B-树”(“open_files B-tree”)、“打开B-树”(“opens B-tree”)、“锁请求者B-树”(“locks_requestorB-tree”)、以及“授权锁B-树”(“granted_locks B-tree”)。这些B-树的每一种存储状态信息都可存储状态信息,并将在下面进一步地详细描述。
本发明的其它实施例可应用不同的B-树集来实施查找机制212。例如,上述的几个B-树(如,现有客户端B-树)存储了还被存储在其它B-树中的信息,因此,上述所有的B-树对查找机制212的某些实施来说都不是必需的。然而,因为可以使用第一环境下的第一关键字更高效地存取该信息、以及使用第二环境下的第二关键字更高效地存取该信息,于是就可以把相同或相似的信息方便地存储在多于一个的B-树中。
在本发明的其它实施例中,应用多个散列表而不是多个B-树来执行查找机制212。执行该查找机制212的多个散列表存储与此后描述的信息类似的信息。本发明的其它实施例中还可以运用其它的机制来执行查找机制212。
客户端B-树
客户端B-树是维护关于客户的信息的B-树。已向框架200登记的每个客户端110都将被反映在客户端B-树中的索引条目内。客户端110通过发送建立客户标识符的请求来向框架200登记,这一点以下将进一步详细阐述。客户端B-树的关键字是先前由数据库服务器分配给客户端的客户标识符。客户标识符唯一地标识向框架200登记的特定的客户端110。客户端B-树的每个节点都存储包括有客户标识符和客户端提供的标识符(如该客户端的网络地址)在内的关于特定客户的信息。
现有客户端B-树
与客户端B-树类似,现有客户端B-树维护关于客户的信息。虽然客户端B-树和现有客户端B-树都维护关于客户的信息,现有客户端B-树的关键字是客户端提供的标识符。例如,该客户端提供的标识符可以是该客户端的网络地址。
现有客户端B-树可用于基于客户端提供的标识符来确定特定的客户端110是否已经向框架200登记。现有客户端B-树的每个索引条目也都存储包括客户标识符和客户端提供的标识符在内的、与特定的客户端有关的信息。
请求者B-树
请求者B-树是维护有关请求者信息的B-树。请求者B-树的关键字既反映与请求者关联的客户标识符也反映唯一标识该请求者的请求者标识符。请求者B-树可用于确定与特定客户端110关联的所有请求者,其可能在某一打开文件系统操作的处理过程中或当恢复已变得不可操作的客户端时要用到。
该请求者B-树的每个索引条目都存储有关于请求者的信息。例如,与特定的请求者对应的请求者B-树的索引条目可存储有关的信息,即,哪个客户与该请求者关联、何时曾收到来自该请求者的最新通信信息、该请求者打开了哪些文件、以及何种与该请求者关联的状态信息。
打开文件B-树
打开文件B-树是维护已经打开的文件的信息的B-树。打开文件B-树的关键字是文件的文件句柄。打开文件B-树可用于确定是否有可能在特定文件上执行文件系统操作。打开文件B-树的每个索引条目都可存储关于打开文件的信息。这种信息可包括:诸如在所打开的文件上的基于文件的锁的数量、在所打开的文件上的基于文件的锁的类型、标识与所打开的文件关联的状态信息为何的状态标识数据、用于所打开的文件的对象标识符。
打开B-树
打开B-树是维护已经被打开的文件的信息的B-树。打开B-树的关键字是状态标识数据。通过遍历所述打开B-树,人们就可以定位与由用作所述打开B-树的关键字的状态标识数据所标识的状态信息关联的所述打开文件的信息。
例如,假定客户端已经打开了特定文件。为该客户端进行维护的状态信息将指示该客户端已经打开了该特定文件。状态信息将要被分配给一组状态标识数据。该状态标识数据可用于遍历所述打开B-树以找到指示该特定文件为打开的索引条目。
所述打开B-树的每个索引条目都存储下列与一打开文件相关的信息:诸如标识与所述打开文件关联的状态信息的状态标识数据、曾打开所述打开文件的请求者、该文件是否已打开以用于读或写、所述打开文件是否已被修改、以及是否拒绝了除已打开所述打开文件的请求者之外的其他任何请求者读或写。
为了打开文件,就生成状态标识数据以标识所述打开文件。该状态标识数据:(a)被传送到曾请求文件打开的请求者,以及(b)被用于添加条目到所述打开B-树以反映该文件已经被打开了。
锁请求者B-树
锁请求者B-树是维护关于锁请求者信息的B-树。锁请求者B-树的关键字是状态标识数据。锁请求者B-树的每个索引条目都包含诸如客户标识符、请求者标识符、以及锁所有者标识符等关于锁的请求者的信息。锁所有者标识符唯一地标识被授权锁的特定请求者。由框架200来分配客户标识符和请求者标识符,而该请求者提供锁所有者标识符。
授权锁B-树
授权锁B-树是维护关于被授权的锁的信息的B-树。授权锁B-树的关键字是文件句柄。授权锁B-树被用于快速确定特定文件上已被授权了哪些基于文件的锁(如果有的话)。
当协议解释器210指令资源锁222执行请求特定锁的授权的文件系统操作时,资源锁222就可存取查找机制212的一个或多个B-树。为了说明,假定协议解释器210接收在文件上的特定锁的授权的请求,此后,协议解释器210指令资源锁222处理该文件系统操作。资源锁222可通过存取授权锁B-树来初始确定是否有冲突锁已经被授权到该文件。资源锁222可使用由该文件系统操作所标识的该文件的文件句柄来遍历所述授权锁B-树。如果授权锁B-树中存在用于该文件句柄的条目,对该条目进行的检查将通知资源锁222是否有冲突锁已经被授权到该文件。
如果资源锁222确定还没有冲突锁被授权到该文件,那么资源锁222就可:(a)生成新的状态标识数据来标识该资源这一新状态,以及(b)添加条目到授权锁B-树以反映所请求的锁的授权。资源锁222可使用为该资源所新近生成的新状态标识数据以把新条目添加到授权锁B-树,并且在此后,删除已被先前的状态标识数据所引用的锁B-树中的先前条目。锁B-树中的新条目包含对在该资源上所执行的所有先前状态操作的引用,因此不需要存储由所述先前的状态标识数据所引用的条目。
使用框架来处理文件操作
图3是表示根据本发明实施例用于处理文件系统操作的步骤的流程图。通过执行图3的步骤,可以用DBMS 120来执行诸如状态NFS操作等状态操作。
总的来说,该框架维护关于该框架执行的操作的状态信息。一旦执行状态操作,该框架就把对应于操作状态的状态标识数据传送回请求者。在状态操作的后续请求中,请求者将该状态标识数据发送回该框架。该框架然后就使用该状态标识数据作为关键字来标识应用于该后续请求中的操作的状态信息。
获得框架生成的客户标识符
参看图2,起始在步骤310,在数据库服务器端接收第一请求以建立请求者的客户标识符。可由通过接收含有所述第一请求的、由客户端110通过通信链路130所发送的信息包的协议解释器210来执行步骤310。
协议解释器210可接收各种信息包类型的信息包。虽然协议解释器210被配置来标识所接收的信息包的信息包类型,协议解释器210不需要被配置来读取每种信息包类型。例如,协议解释器210可以通过检查包含在信息包的报头内的信息来确定所接收的信息包的信息包类型。一旦协议解释器210确定了所接收到的信息包的信息包类型,协议解释器210发送该信息包到负责读取那种信息包类型的信息包的组件。
出于说明的目的,应当假定在步骤310中所接收到的信息包为包含建立请求者的客户标识符的请求的NFS信息包。建立客户标识符是一项NFS操作。在这些情况下,协议解释器将发送该信息包到NFS信息包读取器224以读取该信息包。NFS信息包读取器224读取和解析该信息包,以及把标识所请求的文件系统操作(即,建立客户标识符)的数据发送回协议解释器210。
在接收标识该文件系统操作的数据以后,协议解释器210处理该文件系统操作。在本实例中,协议解释器210处理建立客户标识符的请求。作为处理该项请求的一部分,协议解释器210例如查阅查找机制212以确定:(a)迄今为止是否已经为请求者建立了客户标识符,以及(b)如果还没有为该请求者建立客户标识符,那么就确定何种客户标识符应与该请求者关联。
在一实施例中,数据库服务器基于客户端提供的标识符(如,客户端的网络地址)来遍历现有客户B-树以确定是否已经为特定的请求者建立了客户标识符。如果还没有为该请求者建立客户标识符,那么数据库服务器就可以为该客户生成客户标识符。在为该客户生成了客户标识符以后,数据库服务器就可添加索引条目到客户B-树和现有客户B-树以存储有关被分配给该请求者的新客户标识符的信息。
在执行步骤310以后,处理过程就行进到步骤312。在步骤312中,在以上步骤310中已建立的客户标识符被传送到该请求者。可以由通过通信链路130传送包含有客户标识符的信息到该请求者去的协议解释器210来执行步骤312。在一实施例中,请求者可通过与数据库服务器122交换附加的通信信息来用数据库服务器122验证所接收到的客户标识符以验证客户标识符。在步骤312执行以后,处理过程就行进到步骤314。
接收复合请求
在步骤314中,接收执行文件系统操作的第二请求。可以由接收包含第二请求的、由客户端110通过通信链路130发送的信息包的协议解释器210执行步骤314。第二请求包括客户标识符。
为了说明复合请求的处理过程,假定在步骤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中所接收到的请求是否已由包含在该请求中的客户标识符所标识的客户发送出来。在一个实施例中,每次收到一个请求,都要对该项请求进行验证以确认请求者的身份。可以由与授权器232通信的协议解释器210来执行步骤316以使得授权器232验证该项请求。授权器232在验证过程中可使用包含在该项请求中的客户标识符。在授权器232验证了在步骤314中所接收到的请求以后,授权器232传送验证处理结果到协议解释器210。授权器232使用包括Kerberos、LIPKEY、和SPKM-3的标准库和协议来验证该请求者。
如果在步骤314中所收到的请求没有经过授权器232验证,那么协议解释器210发送通信信息到发送第二请求(在步骤314中收到的)的请求者以通知该请求者第二请求没有经过验证。一旦第二请求被验证,那么处理过程就行进到步骤318。
确定所请求的操作是否被授权
在步骤318中,做出判断以确定请求者是否有足够的权限级别执行当前的文件系统操作。由与权限验证器230通信的协议解释器210执行步骤318来指令验证器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检索状态信息的协议解释器来执行步骤320。在步骤320中被检索的状态信息包括执行当前的文件系统操作必需的任何状态信息。在步骤320执行以后,处理过程就行进到步骤322。
执行所请求的文件系统操作
在步骤322中,在所选定的数据库会话中基于合适的状态信息来处理当前的文件系统操作。在一个实施例中,由协议解释器210自身来执行步骤322。在另一个实施例中,协议解释器210可与框架200的其它的组件通信以指令其它的组件执行当前的文件系统操作。在当前的文件系统操作已处理后,处理过程就行进到步骤324。
更新状态信息
在步骤322中,在会话中执行文件系统操作。根据文件系统操作的执行来改变由该会话所使用的状态。在本实例中,表示该会话状态的状态信息被称为“所更新的状态信息”。所更新的状态信息反映了由当前的文件系统操作的处理过程所生成的状态变化。例如,所更新的状态信息反映了其为文件系统操作主题的文件是否已经被打开以及是否在该文件上已授权了任何锁。因此,在已经针对该文件执行了当前的文件系统操作以后,所更新的状态信息反映了该文件的当前状态。
在步骤324中,存储在查找机制212中的信息被更新以反映与当前的文件系统操作相关联的所更新的状态信息。在实施例中,一个或多个包含查找机制212的B-树被更新以指示该会话的新状态。包含查找机制212的B-树可以通过以下方式被更新:(a)生成新的状态标识数据以标识所更新的状态信息,以及(b)更新或添加条目到合适的查找机制212的B-树中以反映所更新的状态信息。
例如,假定在步骤322中,在步骤322中被处理的当前的文件系统操作是在特定文件的第一个100字节上所执行的基于文件的锁的操作。资源锁222可通过存取授权锁B-树来初始确定是否有冲突锁已经被授权到该文件上。资源锁222可使用在当前的文件系统操作中所标识的文件的文件句柄来遍历该授权锁B-树。如果在授权锁B-树中存在该文件句柄的条目,则检查该条目将通知资源锁222该文件上是否已被授权有冲突锁。
如果资源锁222确定还没有冲突锁被授权到该文件,那么资源锁222:(a)生成新的状态标识数据以标识该资源的新状态,以及(b)添加条目到授权锁B-树以反映所请求的锁的授权。具体来说,资源锁222可使用该资源的所新近生成的新状态标识数据来添加新条目到授权锁B-树,以及随后,删除由先前的状态标识数据所已引用的锁B-树中的先前条目。授权锁B-树中的新条目除了包含在该资源上所授权的先前锁以外,还包含对在该文件的第一个100字节上所授权的基于文件锁的引用,因此不需要存储由先前的状态标识数据所引用的条目。
在步骤324执行以后,处理过程就行进到步骤326。
复合请求中所指定的迭代操作
每个请求都可以是指定了一个或多个待执行的文件系统操作的复合请求。在步骤326中,如果在步骤314中所接收到的请求为复合请求,并且还有复合请求中所指定的另外的未被处理的文件系统操作,那么处理过程就行进到步骤318,其中步骤314的第二请求中所指定的下一个未被处理的文件系统操作变为“当前的文件系统操作”。在这种方式下,由框架200依次处理在复合请求中所指定的每个文件系统操作。
在步骤314的第二请求中所指定的所有文件系统操作都被处理完毕以后,处理过程就行进到328。
向请求者提供结果和经修正的状态标识符
在步骤328中,执行在步骤314的请求中所指定的所有的文件系统操作的结果被传送到有通信联络的请求者。该通信信息可包含标识已被分配到其曾为被成功执行的文件系统操作的主题的特定资源的状态信息的任何状态标识数据。可以由协议解释器210通过把处理复合请求的每个文件系统操作的结果以及响应于执行状态文件系统操作所生成的任何状态标识数据发送到该请求者来执行步骤328。例如,如果该请求者已经请求了该请求者先前打开的文件上的特定字节范围上的读写锁的授权,则协议解释器210可通过发送包括标识该资源的新状态的新状态标识数据的通信信息(即,该读写锁被授权到特定文件的特定字节范围上)到该请求者执行步骤328。注意:响应于状态文件系统操作的成功处理、而不是响应于无状态文件系统操作的成功处理,新的状态标识信息就被传送到该请求者。
在NFS协议中,处理在复合请求中所指定的多个文件系统操作的结果可以单一通信信息方式被传送到该请求者。因此,在步骤328中传送到该请求者的状态标识数据可以被包括在复合请求中所指定的每个被成功执行的状态文件系统操作的状态标识信息的单一通信信息以所述通信信息方式发送。
如果框架200不能够处理复合请求中的特定文件系统操作,那么单一通信信息被传送到该请求者。该通信信息包括对以下进行描述的信息:(a)包括任何新状态标识信息的、在已被处理的复合请求中所指定的文件系统操作的处理结果,以及(b)指示不能被执行的文件系统操作的信息。
应用框架来处理无状态事务
框架200还可处理无状态请求,诸如,无状态文件系统操作或遵守无状态协议的请求。当协议解释器210接收含有无状态请求的信息包时,协议解释器210就可传送该信息包到组件以读取和解析该信息包。例如,协议解释器210发送包含有FTP请求的信息包到FTP信息包读取器226以及协议解释器210发送包含有HTTP请求的信息包到HTTP信息包读取器228。
在读取和解析了无状态请求以后,FTP信息包读取器226和HTTP信息包读取器228就传送标识所述无状态请求的信息到协议解释器210。协议解释器210可依次执行所述无状态请求或与框架200的其它组件进行通信以执行所述无状态请求,例如,可要求锁222来锁定资源。因为该项请求是无状态的,一旦该项请求被成功执行,就不需要分配状态信息到该项请求。
文件系统操作和数据库事务之间的关系
当客户想要写文件时,该客户可请求执行一个打开文件系统操作,继而是多个写文件系统操作,以及随后的一个关闭文件系统操作。出于本节的目的,从所述打开文件系统操作到其相应的关闭文件系统操作,单一文件系统操作涉及多个NFS操作。为了执行单一文件系统操作,数据库服务器122可被要求来执行一个或多个数据库事务。在文件系统操作执行以前提交所述一个或多个数据库事务的每一个。因此,在已知该文件系统操作的执行是否将要成功以前,通过提交特定的数据库事务来对数据库124做出改变。
因此,如在下几节进一步详细说明的那样,想要查看资源的请求者可期望查看:或是(a)当前反映任何所提交的数据库事务的资源的版本,或是(b)只反映所完成的文件系统操作的、而不反映与还未被完成的文件系统操作对应的任何所提交的数据库事务的资源的版本。
打开所提交的修改
请求者可独立地发送打开和关闭命令到相同资源上。因此,即使一关闭命令可相对于某一个请求者关闭文件,该文件相对于所有的请求者仍旧可是没有关闭的。术语“最后关闭”是指生成相对于所有的请求者都关闭的文件的一关闭文件系统操作。因此,任何当前被一个或多个请求者所打开的资源还没有在该资源上执行最后关闭。
可以在文件被打开的时刻和最后关闭的时刻之间执行每个都改变文件状态的多个数据库事务。可以在该文件上执行最后关闭之前提交在该文件上所作的修改。以下修改在本文称为“打开提交的修改”(“open-committed changes”):(1)已经在数据库中被提交、但(2)涉及还不具有最后关闭的文件的修改。
不一致客户
当还没有在资源上执行最后关闭并且请求者发送获取该资源的请求时,该请求者应该接收的资源的状态依赖于与该请求者关联的客户类型。“不一致客户”是指期望查看该资源的“当前状态”的客户。在这种环境下,该资源的当前状态包括对该资源所做的任何打开提交的修改,但不包括任何对该资源所作的未被提交的修改。
例如,如果两个数据库提交事务自从资源已首次打开而还没有在该资源上执行最后关闭的期间改变了该资源的状态,向该资源发送请求的不一致客户就期望查看反映了由该两个数据库事务所作的改变的资源的状态。使用NFS、FTP、或HTTP协议存取DBMS 120的客户是不一致客户的实例。与不一致客户关联的请求者将为不一致请求者,即,该请求者将期望查看该资源的当前状态。
一致客户
一致客户是指不被允许来查看任何打开提交的改变的客户。相反,一致客户只能查看在以下时间在资源上所作的被提交的修改:(a)如果该资源已经被打开但还没有关闭则在该资源打开之前,或(b)已经在该资源上执行最后关闭以后。例如,假定已经打开资源,但还没有在该资源上执行最后关闭。请求存取该资源的一致客户期望查看仅在执行打开操作之前的该资源的状态。
因此,如果两个被提交的数据库事务自从该资源被打开而还没有执行最后关闭这一期间已经改变了资源的状态,那么向该资源发送请求的一致客户就期望查看不反映由该两个事务所作的改变的资源的状态。为便于说明,必须由一致客户查看的资源的状态应当被称为该资源的“关闭提交的”(“closed-committed”)版本。
使用SQL协议存取DBMS 120的客户为一致客户的实例。与一致客户关联的任何请求者都将是一致请求者,即,该请求者将期望查看在关闭提交状态下的该资源的状态。
为了进一步说明,以下的文件系统操作和时间点以下列次序出现:
(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使用不同类型的锁,即,数据库锁和基于文件的锁。数据库锁是响应于执行数据库操作而被获得的锁,当成功完成(提交)数据库操作时,就释放数据库锁。基于文件的锁是响应于执行一打开文件系统操作而被获得的锁,以及,当执行一关闭文件系统操作时,就释放基于文件的锁。
图4是示出了根据本发明的实施例使用数据库锁和基于文件的锁的功能步骤的流程图。在步骤410中,请求者请求涉及特定资源的操作。可由客户端110通过通信链路130发送请求到数据库服务器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能为一致请求者和不一致请求者这两者提供服务。当在资源上维护基于文件的锁时,在执行所述打开文件系统操作之前的资源状态就被保存,从而允许数据库服务器122为一致请求者提供服务。
管理并发存取
当多个请求者执行涉及相同资源的操作时,基于文件的锁的使用是同样方便的。例如,多个请求者可每个都发送在同一个文件上执行文件系统操作的请求。多于一个的请求者可打开文件,以及多于一个的请求者可对该资源的状态作出修改。
为了说明,假定第一个请求者已打开文件并且修改了该文件。当第二个请求者为同一个文件的版本发送请求到数据库服务器122时,数据库服务器122确定第二个请求者的请求者类型。如果第二个请求者是一致请求者,那么数据库服务器122提供不反映自从该文件已被打开期间由第一个请求者在该文件上所作的任何改变的文件版本。如果第二个请求者是非一致请求者,那么数据库服务器122提供反映自该文件打开始起由第一个请求者在该文件上所作的改变的那个文件的版本。
关于当该资源是基于文件的锁的主题时数据库服务器可怎样维护资源的状态的进一步的信息在以下的题为“执行事务语义”的节中描述。
执行事务语义
关于一旦该资源成为打开文件系统操作的主题则为什么可以方便地维护该资源的先前版本的信息有许多原因。首先,如上所述,一旦该资源成为打开文件系统操作的主题但还没有成为最后关闭的主题,维护该资源的先前版本就允许数据库服务器122为来自一致请求者的资源请求提供服务。其次,维护该资源的先前版本就允许该数据库服务器将该资源还原到先前的版本。在各种情况下,可能需要将资源还原到先前版本,比如在以下情况下:(a)请求者创建资源的错误版本,(b)请求者创建与图表(schema)不兼容的基于该图表的资源的版本,或(c)由多个请求者在资源上所执行的改变彼此不相兼容。
重要的是,需要从该资源中去掉以还原该资源到先前状态的改变包括所提交的修改。结果,数据库系统用来去除由未被提交的事务所产生的改变的传统取消(undo)机制对执行所需的还原是不足够的。
即使已经改变了该资源的状态的被提交的事务已经执行,本发明的实施例也可方便地将资源还原到先前状态。根据本发明的实施例,被提交的数据库事务在资源上作了一个或多个改变。在被提交的数据库事务已经改变了该资源的状态以后,接收请求以还原该资源到由所提交的数据库事务所做的改变之前的状态。例如,客户端110可发送请求给数据库服务器122以还原特定的文件到在特定的时间点以前的状态(比如该文件的关闭提交的版本)。
响应于接收该请求,该资源被还原到在特定的时间点(比如该文件已被打开的时间点)以前的状态。在还原该资源的过程中,该资源的当前状态停止来反映由所提交的数据库事务已在该文件上做出的改变。用于还原资源到先前状态的技术将在下一节中进一步详细讨论。
资源还原技术
可以应用各种技术将资源还原到在特定时间点以前的状态。例如,所使用的特定技术可依赖于该资源是否是基于图表的资源或非基于图表的资源。基于图表的资源是遵守被限定的图表的资源。例如,遵守给定的图表的购买订单文档是基于图表的资源的实例。非基于图表的资源是不基于图表的资源的资源。
以解构形式存储资源
可以通过将整个资源存储在一起以结构化形式存储基于图表的资源,例如,在数据库表的大对象(LOB)列中存储XML文档。另外,通过分别存储那些包括基于图表的资源的元素并以解构的形式方便地存储基于图表的资源。例如,描述XML文档的单个XML标志的数据及其关联的数据可存储于数据库表的列中。因为可以分别存储基于图表的资源的元素,在读取基于图表的资源之前就可需要重构基于图表的资源的元素。
图5示出了表示用于以解构的形式存储基于图表的资源的机制的资源表。图5的表包含引用列504。描述基于图表的资源的数据可存储于资源表中或由该资源表所引用。例如,该资源表的引用列504包含标识另一个表(即XML类型表510)的指针506,在该表其中存储与基于图表的资源关联的数据。XML类型的表510自身可引用一个或多个存储该基于图表的资源的其它数据元素的其它表。例如,XML类型表510使用对嵌套表520的引用512来表示。
XML类型表510以及任何嵌套表502存储关于基于图表的资源的元素的数据。当请求者想要读取基于图表的资源的第一个100字节时,必须重构该资源来为该项请求提供服务,这是因为XML类型表510不存储描述基于图表的资源的每个数据元素都出现在哪个字节的信息。结果,当从基于图表的资源读取数据时,必须重构基于图表的资源并将其存储在XML大对象列502中。如果请求者想要读取基于图表的资源的第一个100字节时,那么可以通过读取存储在XML大对象列502的重构资源的第一个100字节来由数据库服务器122轻松地执行这种请求。
以下将进一步详尽阐述,可以在存储在XML大对象列502中的资源的重构副本上执行后续操作,同时保持存储在XML类型表510、以及任何嵌套表520中的资源的解构元素(deconstructedelement)的完整性。
还原基于图表的资源
根据一个实施例,基于“先前的版本信息”还原基于图表的资源。图5是根据本发明的实施例存储基于图表的资源的先前版本信息的系统的框图。先前版本信息保存在XML类型表510和任何嵌套表520中,同时可以在存储于XML大对象列502中的资源的重构副本上执行对基于图表的资源所作的修改,一直到在基于图表的资源上执行最后关闭。
在本发明的实施例中,当基于文件的锁被授权在资源上时,紧接着可改变该资源的状态的数据库操作执行之前,创建基于图表的资源的构造副本。例如,可创建基于图表的资源的构造副本并存储在XML大对象列502中。
此后,该资源的构造副本(存储在XML大对象列502中的资源的副本)被当作该资源的当前版本,并且在该资源的构造副本(存储在XML大对象列502中的资源的副本)上作出该数据库操作所需要的修改。实际上,在XML大对象列502中的该资源的副本变为该资源的脏版本的缓存区。注意:基于图表的资源的解构版本仍旧在XML类型表510中进行维护。
为了把基于图表的资源还原到该资源的解构副本,就要删除存储于XML大对象列502中的资源的副本。随后,存储在XML类型表510以及任何嵌套表520中的资源的解构版本取代存储于XML类型表510中的构造副本而作为该资源的当前版本。
当在该资源上执行一关闭文件系统操作时,可通过改变存储在XML类型表510、以及任何嵌套表520中的资源的解构版本来使得对存储在XML类型表510中的资源的解构副本上所作的改变成为永久,以反映存储在XML大对象列502中的资源的构造副本。
使用快照时间来还原非基于图表的资源
图6A和6B是根据本发明的实施例存储非基于图表的资源的先前版本的框图。图6A和6B将被用来讨论用于存储非基于图表的资源的先前版本信息的三种不同的方法。
根据图6A中所示的第一种方法,资源表600存储在大对象列602中存储非基于图表的资源。在这种方法中,当在该资源上执行一打开文件系统操作时,快照时间被存储在资源表600的列604中。快照时间指示紧接着在该资源上执行所述打开文件系统操作之前的逻辑时间。
在一个或多个数据库事务提交了对该资源的改变以后,数据库事务也许不再是“未完成的”,但是通过自快照时间开始使用的与该资源关联的取消信息就可将该资源还原到该快照时间的状态。取消信息是指由DBMS 120所维护的、可以被用作“回卷”或取消已经被执行但尚未提交的数据库事务的信息。
快照时间和取消信息被用于应用一组对该资源进行的改变,以改变该资源的状态来反映在快照时间的时刻该资源的状态。一旦该资源被还原以反映该资源在快照时间的时刻的状态,该快照时间就从该资源表600的列604中被去除掉。
在实施例中,“闪回查询”(flashback query)可被用于应用一组对该资源进行的改变,以改变该资源的状态来反映在快照时间的时刻该资源的状态。执行闪回查询的技术描述在2003年4月30日提交的题为“闪回数据库”的美国专利申请序列第10/427,511号中,其完整内容结合于本文进行阐述以作参考。
使用高速缓存列来还原非基于图表的资源
根据图6B所示的第二个方法,资源表650在LOB列652中存储非基于图表的资源。在这种方法中,当在该资源上执行一打开文件系统操作时,该资源的副本就被存储在资源表650的列654中。列654被用作“高速缓存列”。具体来说,存储在列654中的资源的副本被当作该资源的当前版本。当数据库事务改变了该资源时,该项改变就在存储于列654中的资源的副本上作出、而不是在存储于列652中的原始资源上作出。
如果在该资源上执行一关闭文件系统操作,那么存储在654中的该资源的副本就可被存储在列652中,因此该原始资源将反映由所提交的数据库操作在该资源上所作的任何改变。直到执行所述关闭文件系统操作,存储在列652中的资源的当前值反映了紧接在所述打开文件系统操作执行之前该资源的状态。因此,如果需要还原该资源到紧接在所述打开文件系统操作执行之前资源的状态,那么对需要出现的资源表650进行的仅有改变就是删除存储于列654中的资源的副本。在该资源上执行所述最后关闭之前,不一致请求者可查看列654中的资源的副本,而一致请求者则可查看存储在列652中的资源。
混合方法
由于存储空间的限制,通常使用更新的取消信息来覆盖早于某一时间的取消信息。结果,使用快照时间来执行还原(即第一种方法)并不总是可行的。然而,当取消信息可用时,基于快照时间的还原可优选于高速缓存列的还原(即第二种还原)。
结果,在第三种(混合)方法中,除非数据库服务器122确定该资源的取消信息在可能需要还原该资源时不可用,否则就执行以上所讨论的基于快照的方法。如果数据库服务器122确定该资源的取消信息在可能需要还原该资源时不可用,那么随后执行以上所讨论的高速缓存列方法。
如果被数据库服务器122所维护的取消信息的时间量小于可配置的时间量,数据库服务器122就可确定该资源的取消信息在可能需要还原该资源时不可用。
一致性检查
根据一个实施例,在关闭该文件并且没有更多未决的打开文件系统操作时就检查更新的文件的一致性。例如,可检查基于图表的资源以确保基于图表的资源遵循该图表的规律。如果基于图表的资源不遵循其相应的图表,那么就可将该资源还原回其被打开时该资源的状态。
如上所述,如果资源是被授权的基于文件的锁的主题,并且,或是请求者发送将该资源还原回较早状态的请求或是如果该资源未能通过一致性检查,那么,就可将该资源还原到如上所述的较早的状态。以下将给出基于文件的锁的进一步的细节和优势。
基于文件的锁
基于文件的锁使得数据库服务器122在数据库124中所维护的文件上执行文件系统操作。资源锁222可管理存储于数据库124中的资源上的文件系统锁。基于文件的锁的行为在三个重要方面不同于用于诸如HTTP的无状态协议的其它锁。
首先,基于文件的锁可被授权到资源的一部分上,而不是恰好被授权到资源的整体上。特别地,基于文件的锁可被授权到资源上的字节范围上。因此,单个文件可以是多个基于文件的锁的主题,其中,每个基于文件的锁都覆盖该文件的不同字节范围。
其次,基于文件的锁为基于租用的,其意思是:一旦特定的基于文件的锁被授权到请求者,该特定锁被授权的时间在该特定锁到期以后的第一个时间周期。然而,由该请求者所接收的任何通信信息更新针对第二时间周期的特定锁。因此,只要请求者与数据库服务器122进行通信并在该文件系统锁到期之前,该请求者就可持续更新基于文件的锁。
一旦特定的文件系统锁到期,查找机制212就被更新以反映该特定锁不再被授权。可以周期性地检查在查找机制212中所维护的数据
以确保请求者所请求的每个锁都仍然是有效的。
当特定请求者请求与先前被授权的锁相冲突的另一锁时,就可检查先前所授权的锁以确保先前授权的锁仍然有效。如果所述先前授权的锁不再有效,那么就更新存储于机制212中的信息以反映该锁是无效的(例如,关于可能被删除的锁的信息)。还有,当特定客户端已到期时,已经被授权到特定客户端的所有锁就都被释放。在实施例中,客户端在自该客户与框架200最后通信时起可配置的时间量耗尽以后可能到期。因此,如果先前授权的锁与被请求授权的锁冲突,那么可检查与所述先前授权的锁关联的客户端以确认该客户端仍然有效。如果该客户端不是有效的,那么就释放所述先前授权的锁,并且可执行被请求授权的锁。在本发明的实施例中,通过检查客户B-树来确定特定客户端是否已经到期。
基于文件的锁与无状态协议锁的第三个差别是没有只提供读取存取的基于文件的锁。相反,基于文件的锁不仅授权读存取,还授权写存取。
在本发明的实施例中,基于文件的锁包括覆盖整个资源的第一集,以及覆盖部分资源(比如该资源的字节范围)的第二集。图7是示出了根据本发明的实施例的各种类型的基于文件的锁以及其兼容性。图7示出的各种类型的基于文件的锁的每一个都将在下面作简短描述。
字节读写基于文件的锁是在该资源的一部分上的锁。所述字节读写基于文件的锁可用来在资源的字节范围上授权读和写存取。
字节写基于文件的锁是在该资源的一部分上的锁。所述字节写基于文件的锁可用来在资源的字节范围上授权写存取。
拒绝读基于文件的锁是在整个资源上的锁。所述拒绝读基于文件的锁可用来拒绝除被授权所述拒绝读锁的请求者之外的任何请求者读存取资源。
拒绝写基于文件的锁是在整个资源上的锁。所述拒绝写基于文件的锁可用来拒绝除被授权所述拒绝写锁的请求者之外的任何请求者写存取资源。
基于文件的锁不兼容于锁共享的锁或锁独占的锁(比如WebDAV锁)。图7描述了各种基于文件的锁的兼容性。当特定的基于文件的锁与先前被授权的另一锁不兼容时,那么基于文件的锁将不被授权。因此,如果字节读写锁的范围和字节写锁的范围不冲突,字节读写锁就可以被授权到其上已经被授权了字节写锁的资源上。然而,拒绝读锁不能被授权到其上已经被授权了字节写锁的资源上。
在真正应用群集中的基于文件的锁
可以在真正应用群集(RAC)中执行数据库122,比如通过使用Oracle公司的RAC 10g选项来执行。在RAC环境中,当基于文件的锁被授权到资源上时,数据必须存储于描述了哪些数据库服务器已授权基于文件的锁到该资源上的数据库124。
例如,存储在数据库中的资源可与以下相关联:(a)表示基于文件的锁已经被授权到该资源上的标志以及(b)标识已授权基于文件的锁到该资源上的数据库服务器的信息。查找机制212维护与存储器中被授权的基于文件的锁有关的数据。如果与所授权的基于文件的锁有关的信息对RAC环境中的其它节点是可见的,那么存储在存储器中的信息在维持数据一致性的方式下必须是永久存储的或者是可传送到RAC的其它节点的。如果存储在查找机制212中的信息对除其所驻留的数据库服务器之外的RAC的其它数据库服务器是不可见的,那么任何由第一个数据库服务器所授权的基于文件的锁都可能与第二个数据库服务器的基于文件的锁冲突。
上述由数据库服务器122所使用的基于文件的锁允许数据库服务器122处理诸如被请求的NFS操作的、在由数据库124所维护的文件上的状态请求。结果,在数据库服务器122可运用上述的文件系统操作锁时,客户端110就可按破坏数据一致性的方式使用NFS协议存取存储在数据库124中的文件。
实施机制
根据实施例,客户端110、数据库服务器122、以及数据库124的每一个都可在计算机系统上进行实施。在一个实施例中,图2的处理过程200包括一组由一个或多个处理器执行的指令。在一个实施例中,图1中的应用程序和可共享接口111包括一组由一个或多个的处理器执行的指令。图3示出一个在其中执行指令的可能实施例。计算机系统800包括:总线802,以便于信息交换;以及与总线802连接的一个或多个处理器804,以用于处理信息。计算机系统800还包括连接到总线802的诸如随机存取存储器(RAM)或其他动态存储装置的主存储器806,其用于对信息和将被处理器804执行的指令进行存储。主存储器806还可用于在处理器804执行指令期间存储临时变量或其他中间信息。计算机系统800还可包括连接到总线802的只读存储器(ROM)808或其他静态存储装置,它们用于为处理器804存储静态信息和指令。提供诸如磁盘或光盘的存储装置810,并连接到总线802,用于存储信息和指令。
计算机系统800可经由总线802连接到用于将信息显示给计算机用户的显示器812。包括字母数字和其他键的输入装置814连接到总线802,用于将信息和命令选择传输到处理器804。另一种用户输入装置是诸如鼠标、跟踪球或光标方向键的光标控制器816,其用于将方向信息和命令选择传输到处理器804,并用于控制在显示器812上的光标移动。该输入装置通常具有在第一轴(例如x)和第二轴(例如y)这两个轴上的两个自由度,这就允许所述装置在一个平面内指定位置。
在计算机系统800中,总线802可以是允许信息、信号、数据等在各种组件之间交换的任何机制和/或介质。例如,总线802可以是一组携带电信号的导线。总线802也可以是在一个或更多的组件之间传送无线信号的无线介质(例如空气)。总线802还可以是连接一个或多个组件的网络连接。使信息、信号、数据等能够在各种组件之间交换的任何机制和/或介质都可以用作总线802。总线802还可以是这些机构/介质的组合。例如,处理器804可以和存储装置810进行无线通信。在这种情况下,从处理器804和存储装置810的立场来看,总线802将会是诸如空气的无线介质。再者,处理器804可以和ROM 808进行电容性地(capacitively)通信。进一步来说,处理器804可以经由网络连接和主存储器806进行通信。在这种情况下,总线802将会是网络连接。再进一步说,处理器804可以经由一组导线和显示器812进行通信。在这种情况下,总线802将会是这一组导线。因此,取决于所述各种组件如何互相通信,总线802就可以采取不同的形式。如图3中所显示的总线802在功能上代表能够使信息、信号、数据等在各种组件之间交换的全部机构和/或所有介质。本发明涉及用于执行本文所述技术的计算机系统800的使用。根据本发明的一个实施例,通过计算机系统800来执行这些技术,以响应于执行含在主存储器806中的一个或多个指令的一个或多个序列处理器804。这种指令可以从诸如存储装置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都使用携带数字数据流的电信号、电磁信号或光信号。将数字数据传送到计算机系统800和从计算机系统800传送数字数据的信号,即,通过各种网络的信号、在网路链路820上的信号和通过通信接口818的信号,是传输信息的载波的示例性形式。
计算机系统800能够通过网络、网络链路820和通信接口818发送消息和接收数据(包括程序代码)。在互联网实例中,服务器830可通过互联网828、ISP 826、本地网822和通信接口818传输对应用程序进行请求的代码。
当代码被接收到时,所接收的代码就可以由处理器804执行并存储在存储装置810或其他非易失性存储装置中以用于今后执行。这样,计算机系统800可获得以载波形式的应用程序代码。
在这点上,应该注意到,尽管已经参考具体实施例描述了本发明,但是不应解释为本发明受到这样的限制。在不脱离本发明精神的情况下,得益于本公开的本领域普通技术人员可以对本发明进行各种修改。因此,本发明不应被用于示出本发明的具体实施例所限制,而仅由公布的权利要求及其等同物所限制。
Claims (30)
1.一种机器执行的方法,包括以下步骤:
在数据库系统端接收执行文件系统操作的请求,其中,所述请求包括状态标识数据;
基于所述状态标识数据,在所述数据库系统中检索与所述请求关联的状态信息;以及
至少部分基于所述状态信息来处理所述请求。
2.根据权利要求1所述的方法,其中所述的检索与所述请求关联的状态信息的步骤包括:
使用所述状态标识数据作为查找机制中的关键值来检索所述状态信息。
3.根据权利要求1所述的方法,其中,所述查找机制是从由B-树和散列表所组成的组中选出的一个成员。
4.根据权利要求1所述的方法,其中,所述请求是请求者发布的,以及所述方法还包括以下步骤:
响应于处理所述请求,更新所述状态信息来反映在资源上所述文件系统操作已经被执行以后所述资源的操作状态,其中,所更新的状态信息用第二状态标识数据进行标识;以及传送所述第二状态标识数据到所述请求者。
5.根据权利要求1所述的方法,其中,所述第二状态信息反映了响应于处理所述请求而由所述请求者所打开的文件。
6.根据权利要求1所述的方法,其中,所述第二状态信息反映了响应于处理所述请求而被授权给所述请求者的文件上的新锁,以及其中,所述第二状态信息反映了先前被授权给所述请求者的任何锁。
7.根据权利要求1所述的方法,其中,所述新锁覆盖了所述文件的指定字节范围,其中所指定的字节范围不跨越所有的所述文件。
8.根据权利要求1所述的方法,其中,所述请求是第二请求,以及所述方法还包括以下步骤:
在接收所述第二请求之前,在所述数据库系统端接收第一请求以便为请求者建立客户标识符;以及传送所述客户标识符到所述请求者,其中,所述第二请求包括所述客户标识符。
9.根据权利要求1所述的方法,其中,所述请求对特定请求者进行标识,以及所述方法还包括以下步骤:
在所述的检索与所述请求关联的状态信息的步骤之前,确定已发布所述请求的请求者是否实际就是在所述请求中被标识的特定请求者。
10.根据权利要求1所述的方法,其中,所述请求由请求者发送,以及所述方法还包括以下步骤:
在执行由所述请求所请求的特定操作之前,确定所述请求者是否具有足够的权限级别来执行所述特定操作。
11.根据权利要求1所述的方法,其中,所述请求由请求者发送,以及其中,所述处理所述请求的步骤还包括以下步骤:
更新在所述数据库系统中的数据库服务器端所维护的请求者数据以反映所述请求者,其中,所述请求者数据对被登记来发布文件系统操作的请求者进行标识。
12.根据权利要求1所述的方法,其中所述的请求由请求者发布,其中所述的文件系统操作是打开文件的操作,以及其中所述的处理所述请求的步骤还包括以下步骤:
更新在所述数据库系统中的数据库服务器端所维护的文件数据以反映所述请求者已经打开了所述文件。
13.根据权利要求1所述的方法,其中所述的请求由请求者发送,其中所述的文件系统操作是把文件的一部分进行锁定的操作,以及其中所述的处理所述请求的步骤还包括以下步骤:
更新在所述数据库系统中的数据库服务器端所维护的锁定数据以反映所述请求者已经锁定的文件的那一部分。
14.一种机器执行的方法,包括以下步骤:
在数据库系统端从请求者处接收请求以在由所述数据库系统所维护的文件的一部分上执行操作,其中,所述操作要求锁被授权在所述部分上;
通过查询由所述数据库系统所维护的多棵B-树来确定所述请求者是否被授权所述锁,以检查先前是否已经有任何冲突锁被授权;以及
一旦确定所述请求者被授权所述锁,就更新所述多棵B-树以反映所述锁被授权给所述请求者。
15.根据权利要求14所述的方法,还包括以下步骤:发送标识所述请求者已经被授权的所有锁的请求者状态信息。
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 (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/014,354 US7627574B2 (en) | 2004-12-16 | 2004-12-16 | Infrastructure for performing file operations by a database server |
US11/014,354 | 2004-12-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101080714A true CN101080714A (zh) | 2007-11-28 |
CN100527129C CN100527129C (zh) | 2009-08-12 |
Family
ID=36013304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005800432659A Active CN100527129C (zh) | 2004-12-16 | 2005-12-06 | 用于由数据库服务器执行文件操作的基础结构 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7627574B2 (zh) |
EP (1) | EP1825409B1 (zh) |
JP (1) | JP4842279B2 (zh) |
CN (1) | CN100527129C (zh) |
AU (1) | AU2005316812B2 (zh) |
CA (1) | CA2587529C (zh) |
WO (1) | WO2006065587A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011157215A1 (en) * | 2010-06-15 | 2011-12-22 | Usm China/Hong Kong Limited | Context level protocols and interfaces |
CN102388384A (zh) * | 2009-02-17 | 2012-03-21 | 阿玛得斯两合公司 | 允许在新键入的数据发布之前验证新键入的数据的大型生产数据库中的大量更新的方法 |
CN103814362A (zh) * | 2011-09-30 | 2014-05-21 | 国际商业机器公司 | 事务处理系统、方法和程序 |
US8843460B2 (en) | 2009-02-17 | 2014-09-23 | Amadeus S.A.S. | Method allowing validation of large volume of updates in a large production database of new entered data prior to their release |
CN108885622A (zh) * | 2016-04-06 | 2018-11-23 | 华为技术有限公司 | 多主同步复制优化的系统和方法 |
CN111260341A (zh) * | 2020-05-06 | 2020-06-09 | 武汉中科通达高新技术股份有限公司 | 一种交通违法数据审核方法、计算机设备及可读存储介质 |
CN111324573A (zh) * | 2020-02-13 | 2020-06-23 | 苏州浪潮智能科技有限公司 | 一种网络文件系统状态管理方法与系统 |
CN111448559A (zh) * | 2017-12-28 | 2020-07-24 | 卓普网盘股份有限公司 | 客户端同步更新的有效管理 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136508A1 (en) * | 2004-12-16 | 2006-06-22 | Sam Idicula | Techniques for providing locks for file operations in a database management system |
US7809848B1 (en) * | 2005-03-15 | 2010-10-05 | Oracle America, Inc. | System and method for aggregating NFS requests |
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 |
US7392335B2 (en) * | 2006-02-10 | 2008-06-24 | Oracle International Corporation | Anticipatory changes to resources managed by locks |
US7600063B2 (en) * | 2006-09-15 | 2009-10-06 | Oracle International Corporation | Techniques for improved read-write concurrency |
US7664781B2 (en) * | 2006-12-11 | 2010-02-16 | Simdesk Technologies | File operations with persistent file locking techniques |
US20080243847A1 (en) * | 2007-04-02 | 2008-10-02 | Microsoft Corporation | Separating central locking services from distributed data fulfillment services in a storage system |
US8433693B2 (en) * | 2007-04-02 | 2013-04-30 | Microsoft Corporation | Locking semantics for a storage system based on file types |
US9110970B2 (en) * | 2008-07-25 | 2015-08-18 | International Business Machines Corporation | Destructuring and restructuring relational data |
US8943087B2 (en) * | 2008-07-25 | 2015-01-27 | International Business Machines Corporation | Processing data from diverse databases |
US8972463B2 (en) * | 2008-07-25 | 2015-03-03 | International Business Machines Corporation | Method and apparatus for functional integration of metadata |
US9015136B2 (en) * | 2010-01-22 | 2015-04-21 | Microsoft Technology Licensing, Llc | Storing temporary state data in separate containers |
US8626713B2 (en) * | 2010-12-08 | 2014-01-07 | International Business Machines Corporation | Multiple contexts in a redirect on write file system |
US20140164477A1 (en) * | 2012-12-06 | 2014-06-12 | Gary M. Springer | System and method for providing horizontal scaling of stateful applications |
US20170031881A1 (en) * | 2015-07-31 | 2017-02-02 | Cheng Shiu University | Method for creating web program and corresponding table interface according to column comment |
US11457488B2 (en) * | 2018-05-15 | 2022-09-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Concurrent ID allocation in a service-based architecture |
US20210334263A1 (en) * | 2018-07-12 | 2021-10-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Detecting and addressing clashing transactions in a service-based architecture |
US11422716B2 (en) | 2020-04-08 | 2022-08-23 | Samsung Electronics Co., Ltd. | Systems and method for distributed read/write locking with network key values for storage devices |
JP7072275B2 (ja) * | 2020-09-02 | 2022-05-20 | 株式会社ビジュアル・プロセッシング・ジャパン | ファイルシステムとデータベース間でデータを伝達する、プログラム及び情報処理装置で用いる方法 |
US11698884B2 (en) * | 2020-10-29 | 2023-07-11 | EMC IP Holding Company LLC | File level incremental continuous data protection |
US11134119B1 (en) * | 2021-03-30 | 2021-09-28 | Dropbox, Inc. | Intent tracking for asynchronous operations |
Family Cites Families (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69029760T2 (de) | 1989-05-15 | 1997-07-17 | Ibm | Dateiverriegelung in einem verteilten Dateisystem |
CA2067633C (en) * | 1991-07-24 | 1996-10-01 | Eric Jonathan Bauer | Method and apparatus for accessing a computer-based file system |
GB2269920A (en) | 1992-08-18 | 1994-02-23 | Clairmont | Maintaining database integrity |
JPH0798669A (ja) | 1993-08-05 | 1995-04-11 | Hitachi Ltd | 分散データベース管理システム |
US5513314A (en) | 1995-01-27 | 1996-04-30 | Auspex Systems, Inc. | Fault tolerant NFS server system and mirroring protocol |
US6029160A (en) * | 1995-05-24 | 2000-02-22 | International Business Machines Corporation | Method and means for linking a database system with a system for filing data |
US5956712A (en) | 1995-06-07 | 1999-09-21 | International Business Machines Corporation | Byte range locking in a distributed environment |
WO1997016956A1 (en) | 1995-11-06 | 1997-05-15 | Chang Kyu Whang | A sprinkler for exterminating vermin of crops |
US5737523A (en) * | 1996-03-04 | 1998-04-07 | Sun Microsystems, Inc. | Methods and apparatus for providing dynamic network file system client authentication |
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 |
DE69805437T2 (de) | 1997-10-21 | 2002-12-12 | British Telecomm Public Ltd Co | Informationsmanagementsystem |
US6799298B2 (en) | 1998-03-11 | 2004-09-28 | Overture Services, Inc. | Technique for locating an item of interest within a stored representation of data |
US6088694A (en) * | 1998-03-31 | 2000-07-11 | International Business Machines Corporation | Continuous availability and efficient backup for externally referenced objects |
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 |
US6487469B1 (en) | 1998-11-13 | 2002-11-26 | Texas Instruments Incorporated | System and method for integrating schedule and design environments |
US6393456B1 (en) | 1998-11-30 | 2002-05-21 | Microsoft Corporation | System, method, and computer program product for workflow processing using internet interoperable electronic messaging with mime multiple content type |
US6532488B1 (en) | 1999-01-25 | 2003-03-11 | John J. Ciarlante | Method and system for hosting 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 | 富士通株式会社 | データ処理装置及び記録媒体 |
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 |
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 |
US7280995B1 (en) | 1999-08-05 | 2007-10-09 | Oracle International Corporation | On-the-fly format conversion |
US8335775B1 (en) | 1999-08-05 | 2012-12-18 | Oracle International Corporation | Versioning in internet file system |
US6549916B1 (en) * | 1999-08-05 | 2003-04-15 | Oracle Corporation | Event notification system tied to a file system |
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 |
US6496944B1 (en) | 1999-10-06 | 2002-12-17 | International Business Machines Corporation | Method for database assisted file system restore |
US6493742B1 (en) | 1999-12-13 | 2002-12-10 | Weddingchannel.Com, Inc. | System and method for providing internet accessible registries |
US6564215B1 (en) | 1999-12-16 | 2003-05-13 | International Business Machines Corporation | Update support in database content management |
US6587873B1 (en) | 2000-01-26 | 2003-07-01 | Viaclix, Inc. | System server for channel-based internet network |
US6877095B1 (en) * | 2000-03-09 | 2005-04-05 | Microsoft Corporation | Session-state manager |
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 |
US7043472B2 (en) | 2000-06-05 | 2006-05-09 | International Business Machines Corporation | File system with access and retrieval of XML documents |
US8090811B2 (en) * | 2000-06-06 | 2012-01-03 | Panasonic Electric Works Co., Ltd. | Service provider for embedded devices using a message store |
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 |
US6959416B2 (en) | 2001-01-30 | 2005-10-25 | International Business Machines Corporation | Method, system, program, and data structures for managing structured documents in a database |
US6850938B1 (en) | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
US6625604B2 (en) * | 2001-03-09 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Namespace service in a distributed file system using a database management system |
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 |
WO2002082312A2 (en) * | 2001-04-06 | 2002-10-17 | International Business Machines Corporation | A method for standardized file-based access to databases, enterprise java beans and content management systems |
US6782396B2 (en) * | 2001-05-31 | 2004-08-24 | International Business Machines Corporation | Aligning learning capabilities with teaching capabilities |
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 |
US7117216B2 (en) | 2001-06-07 | 2006-10-03 | Sun Microsystems, Inc. | Method and apparatus for runtime merging of hierarchical trees |
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 |
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 |
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 |
US7007027B2 (en) * | 2002-12-02 | 2006-02-28 | Microsoft Corporation | Algorithm for tree traversals using left links |
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 |
WO2004055675A1 (ja) | 2002-12-18 | 2004-07-01 | Fujitsu Limited | ファイル管理装置、ファイル管理プログラム、ファイル管理方法およびファイルシステム |
US7668541B2 (en) * | 2003-01-31 | 2010-02-23 | Qualcomm Incorporated | Enhanced techniques for using core based nodes for state transfer |
US7325130B2 (en) * | 2003-03-21 | 2008-01-29 | International Business Machines Corporation | Method for guaranteeing freshness of results for queries against a non-secure data store |
US7499925B2 (en) * | 2003-03-27 | 2009-03-03 | Microsoft Corporation | File system for displaying items of different types and from different physical locations |
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 |
US7424671B2 (en) | 2003-05-16 | 2008-09-09 | Justsystems Canada Inc. | Methods and systems for enabling collaborative authoring of hierarchical documents |
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 |
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 |
US7349913B2 (en) * | 2003-08-21 | 2008-03-25 | Microsoft Corporation | Storage platform for organizing, searching, and sharing data |
US20050086384A1 (en) | 2003-09-04 | 2005-04-21 | Johannes Ernst | System and method for replicating, integrating and synchronizing distributed information |
US7441041B2 (en) | 2003-11-29 | 2008-10-21 | Microsoft Corporation | Network download regulation method and system |
US20050203903A1 (en) | 2004-03-10 | 2005-09-15 | Rajan Rajeev B. | System and method for locking and isolation in a storage platform |
US7376642B2 (en) * | 2004-03-30 | 2008-05-20 | Microsoft Corporation | Integrated full text search system and method |
US7366740B2 (en) | 2004-05-03 | 2008-04-29 | Microsoft Corporation | Systems and methods for automatic maintenance and repair of enitites in a data model |
US7143120B2 (en) * | 2004-05-03 | 2006-11-28 | Microsoft Corporation | Systems and methods for automated maintenance and repair of database and file systems |
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 |
US20060041719A1 (en) * | 2004-08-18 | 2006-02-23 | Chui Jimmy P F | Multi-tier data storage system |
US8495266B2 (en) | 2004-12-10 | 2013-07-23 | Hewlett-Packard Development Company, L.P. | Distributed lock |
US7506009B2 (en) | 2005-01-28 | 2009-03-17 | Dell Products Lp | Systems and methods for accessing a shared storage network using multiple system nodes configured as server nodes |
-
2004
- 2004-12-16 US US11/014,354 patent/US7627574B2/en active Active
-
2005
- 2005-12-06 WO PCT/US2005/044134 patent/WO2006065587A1/en active Application Filing
- 2005-12-06 EP EP05848788.5A patent/EP1825409B1/en active Active
- 2005-12-06 JP JP2007546744A patent/JP4842279B2/ja active Active
- 2005-12-06 AU AU2005316812A patent/AU2005316812B2/en active Active
- 2005-12-06 CA CA2587529A patent/CA2587529C/en active Active
- 2005-12-06 CN CNB2005800432659A patent/CN100527129C/zh active Active
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102388384A (zh) * | 2009-02-17 | 2012-03-21 | 阿玛得斯两合公司 | 允许在新键入的数据发布之前验证新键入的数据的大型生产数据库中的大量更新的方法 |
CN102388384B (zh) * | 2009-02-17 | 2014-05-14 | 阿玛得斯两合公司 | 允许在新键入的数据发布之前验证新键入的数据的大型生产数据库中的大量更新的方法 |
US8843460B2 (en) | 2009-02-17 | 2014-09-23 | Amadeus S.A.S. | Method allowing validation of large volume of updates in a large production database of new entered data prior to their release |
WO2011157215A1 (en) * | 2010-06-15 | 2011-12-22 | Usm China/Hong Kong Limited | Context level protocols and interfaces |
CN103814362A (zh) * | 2011-09-30 | 2014-05-21 | 国际商业机器公司 | 事务处理系统、方法和程序 |
CN103814362B (zh) * | 2011-09-30 | 2016-06-15 | 国际商业机器公司 | 用于分布式kvs系统的处理方法和系统 |
CN108885622A (zh) * | 2016-04-06 | 2018-11-23 | 华为技术有限公司 | 多主同步复制优化的系统和方法 |
US11704336B2 (en) | 2017-12-28 | 2023-07-18 | Dropbox, Inc. | Efficient filename storage and retrieval |
CN111448559A (zh) * | 2017-12-28 | 2020-07-24 | 卓普网盘股份有限公司 | 客户端同步更新的有效管理 |
CN111465930A (zh) * | 2017-12-28 | 2020-07-28 | 卓普网盘股份有限公司 | 客户端同步中的违反解决 |
US11657067B2 (en) | 2017-12-28 | 2023-05-23 | Dropbox Inc. | Updating a remote tree for a client synchronization service |
US11669544B2 (en) | 2017-12-28 | 2023-06-06 | Dropbox, Inc. | Allocation and reassignment of unique identifiers for synchronization of content items |
CN111448559B (zh) * | 2017-12-28 | 2023-09-12 | 卓普网盘股份有限公司 | 客户端同步更新的有效管理 |
US11782949B2 (en) | 2017-12-28 | 2023-10-10 | Dropbox, Inc. | Violation resolution in client synchronization |
US11836151B2 (en) | 2017-12-28 | 2023-12-05 | Dropbox, Inc. | Synchronizing symbolic links |
CN111465930B (zh) * | 2017-12-28 | 2023-12-12 | 卓普网盘股份有限公司 | 客户端同步中的违反解决的方法、系统和计算机可读介质 |
CN111324573A (zh) * | 2020-02-13 | 2020-06-23 | 苏州浪潮智能科技有限公司 | 一种网络文件系统状态管理方法与系统 |
CN111324573B (zh) * | 2020-02-13 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种网络文件系统状态管理方法与系统 |
CN111260341B (zh) * | 2020-05-06 | 2020-07-28 | 武汉中科通达高新技术股份有限公司 | 一种交通违法数据审核方法、计算机设备及可读存储介质 |
CN111260341A (zh) * | 2020-05-06 | 2020-06-09 | 武汉中科通达高新技术股份有限公司 | 一种交通违法数据审核方法、计算机设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100527129C (zh) | 2009-08-12 |
WO2006065587A1 (en) | 2006-06-22 |
US20060136376A1 (en) | 2006-06-22 |
JP2008524707A (ja) | 2008-07-10 |
CA2587529A1 (en) | 2006-06-22 |
EP1825409A1 (en) | 2007-08-29 |
AU2005316812B2 (en) | 2010-08-19 |
AU2005316812A1 (en) | 2006-06-22 |
CA2587529C (en) | 2011-07-12 |
JP4842279B2 (ja) | 2011-12-21 |
US7627574B2 (en) | 2009-12-01 |
EP1825409B1 (en) | 2019-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101080714A (zh) | 用于由数据库服务器执行文件操作的基础结构 | |
CN1253789C (zh) | 双向元目录代理方法 | |
CN100347696C (zh) | 企业业务过程管理的方法和系统 | |
CN1146786C (zh) | 用于自动修改数据库存取方法的方法 | |
CN100337233C (zh) | 事务文件系统 | |
CN1269056C (zh) | 多台网络存储器的虚拟一元化方法及装置 | |
CN1300727C (zh) | 管理多个分布式dbms上的保存点的方法和系统 | |
CN1220953C (zh) | 通过多个外部登记从主登记检索明码口令 | |
CN1365472A (zh) | 用于注册与应用有关的域名的共享注册系统 | |
CN1801146A (zh) | 用于确定访问控制的方法和装置 | |
CN101048732A (zh) | 面向对象的数据集成服务体系结构 | |
CN1620098A (zh) | 文档集合处理 | |
US20080275880A1 (en) | Access control for elements in a database object | |
CN1327195A (zh) | 用于访问在一个网络上的信息的方法和系统 | |
CN1698033A (zh) | 有效管理企业的可配置组件的系统和方法 | |
CN1820266A (zh) | 用于将应用程序与基于项的存储平台接口的系统和方法 | |
CN1518699A (zh) | 信息图像利用系统、信息图像管理装置、信息图像管理方法、用户信息图像、程序、和记录介质 | |
CN1613047A (zh) | 文件系统外壳 | |
CN1578949A (zh) | 数据对象导向的储存系统 | |
CN1318168A (zh) | 网站开发的系统和方法 | |
CN1820245A (zh) | 用于基于项目的存储平台中的数据建模的系统和方法 | |
JP2008547118A (ja) | 異種アプリケーションのための統一権限付与 | |
CN1759397A (zh) | 对数据的函数应用的结果进行结构化索引 | |
CN1585948A (zh) | 用于系统整合的应用程序视窗部件 | |
CN1786955A (zh) | 用于管理相互相关的数据对象的方法和系统 |
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 |