CN100465914C - 对多节点系统中的检查点队列进行管理 - Google Patents
对多节点系统中的检查点队列进行管理 Download PDFInfo
- Publication number
- CN100465914C CN100465914C CNB2007100872607A CN200710087260A CN100465914C CN 100465914 C CN100465914 C CN 100465914C CN B2007100872607 A CNB2007100872607 A CN B2007100872607A CN 200710087260 A CN200710087260 A CN 200710087260A CN 100465914 C CN100465914 C CN 100465914C
- Authority
- CN
- China
- Prior art keywords
- data item
- node
- write
- subclauses
- clauses
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- 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/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
-
- 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/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
-
- 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/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99954—Version management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于管理一个系统中的缓存区的方法,该系统具有多个缓存区,其中多个缓存中可以具有同一数据项的不同拷贝。具体的说,提供了用于对在这种数据项上执行的磁盘写入操作进行协调的方法,以确保数据项的较旧版本不会改写较新版本,并且减少故障之后进行恢复所需要的处理量。并且提供了各种方法,其中使用了一个主管来与多个缓存区进行协调,以便将数据项写入永久性存储器。此外还提供了技术方法来管理那些与缓存区相关联的检查点,其中使用检查点来确定一个位置,在出现故障时,对恢复日志进行的处理始于这个位置。
Description
本申请是申请号为02806161.6、申请日为2003年3月7日、发明名称为“对多节点系统中的检查点队列进行管理”的发明专利申请的分案申请。
相关申请;优先权声明
本专利申请涉及2001年3月7日提交的美国临时专利申请60/274,270并且要求享有该专利申请的优先权,所述专利申请的名称是METHODS TO PERFORM DISK WRITES IN ADISTRIBUTED SHARED DISK SYSTEM NEEDINGCONSISTENCY ACROSS FAILURES,其内容在此全面引入作为参考。
技术领域
本发明涉及磁盘写入操作的执行,尤其涉及对多个系统中的脏数据项的写入进行协调,其中这些系统允许一个数据项的脏数据版本驻留在多个节点的缓存区中。
背景技术
一种改进数据库系统中的可扩展性的方法是允许多个节点同时读取和修改共享存储器中的数据。每个节点都具有一个缓存区,以便将数据保持在易失主存储器中,并且使用非易失共享磁盘存储器来进行备份。一个全局锁管理器(GLM)或一个分布式锁管理器(DLM)用来维持节点之间的缓存区相关性。为了提供从清除主存储器内容的节点故障中进行的恢复,使用了通用的预写式日志(WAL)协议。出于性能原因,每个节点都具有一个记录各种改变的私有重做日志。而为了减少节点故障之后需要在重做日志中被扫描的改变的数量,通常会采用递增或周期性的检查点,由此确保不必将检查点之前对数据项所做的全部改变重新应用于非易失存储器中的数据项。
并发控制
在运行于相同或不同节点的事务之间执行的并发控制是借助于全局事务页级锁或行级锁来实施的。事务系统可以使用强制策略或非强制性策略,在强制策略中,经过事务修改的数据项(例如页面/数据块)在提交事务的过程中写入到稳定存储器中,而在非强制策略中,只有重做日志中的事务变化是在提交事务时强制执行的。将强制策略与页级锁一起使用,这意味着数据块仅仅由一个节点(实际上仅仅由一个事务)进行修改,并且在任何时刻都只能在一个系统缓存区中变脏。在所有其他组合中(也就是行级锁与强制策略一起,页级锁与非强制策略一起,以及行级锁与非强制策略一起),可以在多个系统中修改这些数据项并且还需要一种缓存区一致机制。
最普通的范例是具有非强制数据项管理策略的行级锁。出于说明目的,以下给出的例子是在使用了具有非强制数据项管理策略的行级锁的系统环境中提供的。然而,这里描述的技术并不局限于这种环境。
检查点队列
在提交事务时,反映事务所进行的改变的数据必须保存在永久性存储器中。在某些系统中,在提交的时候必须持续保存那些指示事务所进行的改变的重做记录,但是可以延迟那些经过修改的数据项自身的实际写入。那些(1)包含变化和(2)没有持续保存的数据项称为“脏数据项”。通常,节点中的脏数据项越多,如果节点出现故障,则恢复时间也就越长。因此,为了确保恢复时间不会长到难以接受,节点可以保持一个检查点队列。
检查点队列包含了标识脏数据项的条目。队列中的条目是根据持续保存的重做日志中的相应重做记录顺序来排列的。如果发生故障,则必须从一条重做记录开始而对重做日志进行处理,其中该记录与位于检查点队列头部的条目相对应。
在把一个脏数据项写入永久性存储器时,对应于这个数据项的条目将从检查点队列中删除。在从检查点队列中删除位于检查点队列头部的条目时,在重做日志内部,恢复处理开始的位置必须开始改变而导致检查点“提前”。检查点在重做日志中提前的越多,在出现故障时,从故障中恢复所要完成的工作也就越少。因此,节点通常会尝试将那些由位于检查点队列头部的条目所标识的脏数据项写入永久性存储器。然而,如在下文更详细描述的那样,在多个节点的缓存区中有可能存在同一数据项的多个脏数据版本,这时,协调脏数据项的写入尤为重要。
经由共享的永久性存储器的数据项转移
在多个系统同时修改数据项时,需要一种机制来协调已修改数据项关于稳定的共享永久性存储器写入。在某些系统中使用了稳定的共享永久性存储器作为介质,以便将经过修改的数据项从一个节点转移到另一个节点,由此简化这个问题。当节点中一个脏数据项需要在一个不同节点加以修改的时候,在将页面锁授予这个希望修改脏数据项的节点之前,数据项首先写入到共享的永久存储器中。当一个不同节点需要读取所修改数据项的当前版本时,相同的写入永久性存储器和读取永久性存储器的序列将会得到使用。
经由互连的数据项转移
在使用非易失存储器作为介质,由此在节点之间转移数据项的系统中,没有必要协调不同节点之间的脏数据项写入。每个节点可以使用常规机制来写出脏数据项及执行检查点。
在某些系统中,当请求节点仅仅需要所修改数据项的一个一致性快照版本时,经过修改的数据项将会发送到请求节点,而不会将该数据项写入永久性存储器。因此,通过这种一致性控制机制,尽管不同节点中的多个事务可以在提交事务之前使用行级锁来修改同一数据项,但是任何数据库的数据项都只在一个节点缓存区中是脏的。因此,在节点出现故障时,只需要从节点的检验点记录开始扫描该节点的重做日志,一直扫描到其重做日志末端,由此即可恢复数据库。此外,当多个节点发生故障时,可以扫描每个节点的重做日志并且按序应用这些重做日志,由此恢复数据库,也就是说,不需要合并来源于多个重做日志的改变。
然而,为了提高从一个具有排他锁并且有可能修改了数据项的节点向一个请求相同数据项以供排他使用或是请求现有版本以供读取的节点进行数据项转移的等待时间,较为理想的是把数据项从一个节点的主存储器直接转移到另一个节点的主存储器,而不先将数据项写入永久性存储器。当把脏数据项从一个节点转移到另一个节点时,称为过去镜像(past image)(PI)的数据项的一个拷贝既可保留在发送节点中,也可以不在发送节点中保留。
当节点准许转移脏数据项而不需要将其存入永久存储器时,必须在不同节点之间对脏数据项的写入进行协调。如果没有进行协调,则转移了脏数据项的节点可能希望通过把脏数据项写入永久存储器来使其检查点提前。然而,如果其他某些节点已经将数据项的更新版本写入了永久存储器,则将脏数据项写入永久存储器有可能会破坏数据完整性。
此外,除非把脏数据项写入磁盘,否则检查点不能提前。如果一个节点并未保持那些由该节点发送到其他节点的数据项的脏数据版本,则这个节点必须以某种方式来与另一个节点协调写入操作。
此外,对于一个可扩缩的系统来说,由系统执行的写入磁盘操作的数目不应该是系统节点数目的一个函数。相反,写入磁盘操作的数目应该只反映了对系统内部数据项的实际改变。
基于上文,较为理想的是提供那些对系统中的脏数据项写入进行协调的技术方法,在这些系统中,同一数据项的脏数据版本有可能位于一个以上的易失存储器之中。
发明内容
由此提供了用于管理一个系统中的缓存区的技术方法,该系统具有多个缓存区,这些缓存区可以包含同一数据项的不同拷贝。具体的说,提供了技术方法,用于协调在这种数据项上执行的磁盘写入操作,由此确保数据项的旧版本不会改写新版本,并且减少故障之后进行恢复所需要的处理量。并且提供了各种方法,其中使用了一个主管(master)来与多个缓存区器进行协调,以便将数据项写入永久性存储器。这种方法包括但不局限于直接写入方法、间接写入方法、基于拥有者的方法以及基于角色的方法。此外还提供了技术方法来管理那些与缓存区相关联的检查点,其中使用检查点来确定发生故障时开始处理恢复日志的位置。
附图说明
本发明是借助实例来描述的,但这并不作为限制,在附图的图形中,相同的参考数字代表相同的部件,其中:
图1是描述如何根据本发明一个实施例而在直接写入方法中协调磁盘写入操作的框图;
图2是描述如何根据本发明一个实施例而在间接写入方法中协调磁盘写入操作的框图;
图3a是描述根据本发明的一个实施例,当全局变脏标记为假时,如何在基于拥有者的写入方法中协调磁盘写入操作的框图;
图3b是描述根据本发明的一个实施例,当全局变脏标记为真时,如何在基于拥有者的写入方法中协调磁盘写入操作的框图;
图3c是描述根据本发明的一个实施例,当写入请求并非来自拥有者时,如何在基于拥有者的写入方法中协调磁盘写入操作的框图;
图4a是描述根据本发明一个实施例,当模式为本地的时候,如何在基于角色的写入方法中协调磁盘写入操作的框图;
图4b是描述根据本发明的一个实施例,当模式为全局的时候,如何在基于角色的写入方法中协调磁盘写入操作的框图;
图4c是描述根据本发明的一个实施例,当请求并非来自排他锁持有者的时候,如何在基于角色的写入方法中协调磁盘写入操作的框图;
图4d是描述根据本发明一个实施例,当转移是在写入操作过程中执行的时候,如何在基于角色的写入方法中协调磁盘写入操作的框图;
图5是一个描述检查点队列的框图;
图6是一个描述检查点队列的框图;
图7是一个对具有合并条目的检查点队列进行描述的框图;
图8是一个描述检查点队列的框图,其中条目分批处理到二进制文件中;以及
图9是一个描述可以实施本发明实施例的计算机系统的框图;
具体实施方式
以下描述一种用于协调数据项写入的方法和设备。在以下描述中,基于说明的目的而对许多细节进行了阐述,以便提供关于本发明的全面理解。然而很明显,本发明可以在不具备这些特定细节的情况下实施。在其他情况下,为了避免不必要地造成本发明不清楚,众所周知的结构和设备将以框图形式显示。
对使用一个永久性存储器作为介质用于转移的系统进行优化
在使用永久性存储器作为介质而在两个节点之间转移数据的系统中,可以修改数据库缓存区的写入子系统而将更高优先级提供给其他节点正在等待读写的写入数据项,由此减少数据项从一个节点转移到另一个节点所需要的等待时间。这个操作可以通过为那些需要写入的脏数据项提供一个单独队列(一个“侦测(ping)队列”)而得以实现,因为其他节点正在等待读取或修改这些脏数据项。当锁管理器(这个锁管理器可以是分布式锁管理器DLM或是全局锁管理器GLM)向保持节点发送一个消息来请求保持节点释放它对数据项的封锁时,脏数据项可以根据要求而被移动到侦测队列。
根据另一种方法,可以在每个数据项头部或是数据项控制块中保持一个“强制写入”计数,由此减少数据项从一个节点转移到另一个节点所需要的等待时间。只要执行写入而把数据项转移到另一个节点,强制写入计数就会递增。永久性存储器的写入子系统保持了脏数据项的一个高优先级队列,其中这些脏数据项的强制写入计数要高于某个阈值。这个队列则用于使那些数据项的写入比节点间未曾经常共享的其他脏数据项更为频繁。此外,在预期到这些数据项上的封锁需要释放的情况下,由于数据库缓存区的写入子系统急切写出了脏数据项,因此这将会改善节点之间转移封锁的等待时间。
然而,即使在以这种方式进行优化时,那些使用共享的永久性存储器作为介质而在节点之间转移数据项的系统也要遭受到与把数据项写入永久性存储器相关联的开销。以下描述的技术涉及这种系统,其中包括脏数据项在内的数据项可以在节点之间转移,而不需要首先写入永久性存储器。
正确性和可扩缩性
在那些允许在缓存区之间转移脏数据项,而不需要首先将其存入永久性存储器的系统中,出于正确性和可扩缩性的考虑,需要对各个不同节点的缓存区中的脏数据项写入进行协调。正确性需要在节点完成一个检查点(也就是记录一个起始点,从这个起始点开始,在出现故障之后,有可能应用那些来自其重做日志的变化)的时候,包含那些在检查点之前提交的改变的每个数据项的一个版本都已写入了非易失永久性存储器。此外,两个节点不能同时将一个数据项写入永久性存储器(因为它们可能会攻击相互的变化),并且节点不准使用数据项的一个较旧版本来改写一个较新版本。
可扩缩性需要将数据项写入永久性存储器的操作覆盖尽可能多的改变,即使这些改变是由不同节点造成的。基于有效性原因,数据库系统有可能希望限制那些需要扫描并有可能在节点故障之后重新使用的重做日志数量。因此数据库写入数量可以与对数据项做出的改变数量成正比,但是不和做出这些改变的节点的数目成正比。
功能概述
由此提供了不同的技术方法来协调脏数据项相对于系统永久性存储器的写入,其中这些系统允许同一数据项的脏数据版本保留在多个缓存区中。根据一种技术,这种协调是使用一个指派给该数据项的主管来完成的。根据一个实施例,用于协调数据项脏数据版本写入的主管与指派为管理封锁的实体是相同实体,其中所述封锁是对数据项访问加以控制。在这个实施例中,主管通常是锁管理系统的一个组件,例如归属于分布式锁管理系统或全局锁管理系统的一个锁管理器。
在一个实施例中,一个想要把脏数据项写入永久性存储器的节点会将一个写入永久性存储器的请求发送到分配给该数据项的主管。主管可以(1)授予请求节点执行写入的权限,或者(2)向请求节点告知另一个节点已经向永久性存储器中写入了一个至少与请求节点所保存脏数据版本一样新的版本。
在另一个实施例中,作为响应,主管也可以发送一个“执行写入”的消息,以便要求请求节点之外的一个节点将至少与请求节点中保存的脏数据版本一样新的数据项版本写入永久性存储器。当另一个节点向主管发送了一个“确认写入”的消息来指示已经执行了写入之后,主管会发送一个“写入通知”消息,以便向请求节点告知另一个节点已经把至少与请求节点所保存脏数据版本一样新的一个数据项版本写入了永久性存储器。
一旦将数据项的某个特定版本写入了永久性存储器,那么与这个特定版本相同或是比它旧的数据项的脏数据版本将会因为写入了这个特定版本而遭到覆盖。所覆盖的数据项版本不再需要(并且不应该)写入永久性存储器。在这里提到的包含所覆盖版本的节点称为“感兴趣的”节点。
除了向请求节点告知已经把数据项写入永久性存储器之外,主管还可以发送写入通知消息来向所有的感兴趣的节点告知已经将数据项写入了永久性存储器。在接收到已经将数据项写入永久性存储器的确认时,其他感兴趣的节点的写入通知消息可以立即发送,也可以延迟到某些其他事件之前再进行发送。
在另一个实施例中,每当各个节点想要把脏数据项写入永久性存储器的时候,这些节点都需要对主管进行询问,为了避免这种情况,主管可以向一个节点授权数据项的“所有权权限”。当一个节点拥有数据项所有权权限的时候,该节点可以随意将数据项写入永久性存储器,而不需要向数据项主管发送写入请求消息。所有权权限可以隐含地与排他锁的所有权一起授予,也可以从排他锁的授予中分离并且独立于排他锁的授予。
根据一个实施例,为数据项保持了一个“全局变脏”的标志。如果一个节点将数据项的脏数据版本转移到另一个节点,则将会把全局变脏的标志设定为“真”。当拥有者将一个数据项写入永久性存储器时,如果全局变脏的标志设定为“真”,则拥有者会向主管发送一个写入确认消息。然后,主管可以向感兴趣的节点发送写入通知消息。另一方面,如果将全局变脏的标志设定为“假”,则当拥有者写入数据项时,该拥有者无需向主管发送一个写入确认消息。
直接写入方法
根据直接写入的方法,把脏数据项写入永久性存储器的操作是使用一个指派给该数据项的主管来协调的。特别地,一个想要把脏数据项写入永久性存储器的节点会向指派给该数据项的主管发送一个写入请求消息。而这个主管可以(1)授予请求节点执行写入的权限,或者(2)向请求节点告知另一个节点已将一个至少与请求节点保存的脏数据版本一样新的数据版本写入了永久性存储器。
更具体地说,当从一个节点缓存区中侦测出一个脏数据项时,也就是说,当另一个节点需要相同数据项的一个当前版本,以便进行读取(S锁)或写入(X锁)时,发送节点缓存区中的数据项状态将会改变为PI。而数据项仍旧保留在脏数据队列或检查点队列中。在侦测出一个干净的数据项时,该数据项既可标记为自由,也可以保留在缓存区中,从而满足一致性快照的读取。
在侦测出数据项时,数据项主管记录了数据项版本号。通常,这个版本号是一个日志序列号(LSN),一个系统提交号(SCN)或一个全局性唯一时戳,该时戳可用于与重做日志中发生了变化的数据项的版本相关联。由于数据项仍处于脏数据队列或检查点队列之中,因此检查点或缓存区的写入子系统最终需要写出PI(或是它的某些后继者)。
根据直接写入方法,一个消息发送到主管,该主管返回数据项较新版本的一个状态已经写入或者向请求节点授予写入权限。来自其它节点的同一数据项的其他写入请求将会排队,直到写入节点用一个写入完成状态来响应锁管理器。在将一个PI写入永久性存储器之后,数据项主管会把PI版本号记录为当前在永久性存储器上的版本。
参考图1,该图是描述一个使用了直接写入方法的系统的框图。节点1、2和3在其缓存区中分别保存了某个特定数据项的版本V1、V2及V3。假设V3>V2>V1,其中A>B意味着A是一个比B新的数据项版本。
主管100即为指派给数据项的主管。在图1描述的方案中,节点1和3向主管100发送写入请求。为了防止多个节点同时写入相同数据项,举例来说,主管100可以为每个数据项包含一个写入请求队列。为数据项接收的写入请求保存在写入请求队列中,并且这些写入请求依次由主管进行处理。在所述实例中,主管100首先对来自节点3的写入请求进行处理,而来自节点1的写入请求则保持在写入请求队列中。主管100向节点3发送一个准许节点3把V3写入永久性存储器的写入执行消息,由此对节点3的写入请求做出响应。
在同意节点3的写入请求的同时,主管100不会向任何其他节点授予写入永久性存储器的权限。因此,来自节点1的写入请求会在写入请求队列中保持挂起。
在节点3已将V3写入永久性存储器之后,节点3会向主管100发送一个写入确认消息,该消息指示写入永久性存储器的操作已经完成,并且节点3已经释放了写入永久性存储器的权限。由于V3比V1和V2更新,因此V1和V2将会因为V3的写入而被覆盖。
然后,主管100继续处理队列中的下一个写入请求。在本实例中,主管100对来自节点1的写入请求进行处理。节点1的写入请求是一个要求写入V1的请求。由于V1已经由V3的写入所覆盖,因此,主管100向节点1发送一个指示V1已被覆盖的写入通知消息。响应于这个写入通知消息,节点1从它的检查点队列中删除关于V1的条目,而不会将V1写入永久性存储器。由于节点1现在知道V1已被覆盖,因此节点1不需要在存储器中保持V1的一个拷贝。
根据一个实施例,节点2包含了由于写入V3而被覆盖的V2,在节点2向主管100发送一个关于V2的写入请求之前,不会向该节点发送一个写入通知消息。
间接写入方法
在使用直接写入方法的情况下,每个节点为节点检查点队列中的每个条目发送一个写入请求消息。在某些情况下,节点会接收一个响应于这个写入请求的写入执行消息。当接收到一个写入执行消息时,请求节点必须执行一个写入操作。在其他情况下,请求节点会接收一个响应于写入请求的写入通知。当接收到一个写入通知消息时,请求节点不需要执行写入操作。
间接写入方法尝试提高与写入通知消息一起应答的写入请求所占有的百分比。为此目的,相对于要求执行写入操作的节点而言,主管100是有选择的。特别地,主管100可以通过向一个节点发送一个写入执行消息而对来自另一个节点的写入请求消息做出响应。可以基于多种因素来选择写入执行消息所发至的节点,其中包括缓存区中保存的数据项版本的新近状态。根据一个实施例,主管100总是将写入执行消息发送到包含数据项当前版本的节点,而不会考虑发送写入请求的节点。
更具体的说,根据一个实施例,主管将写入请求转发到具有过去镜像中的最高版本的节点,或者优选将其转发到排他锁(X)的持有者(该持有者具有数据项的当前版本)。将写入请求转发到最高PI,而不是排他锁持有者,这就允许对当前数据项不断进行修改。
在将一个数据项写入永久性存储器的时候,该数据项是不能修改的;因此,为了写入一个有可能会受到进一步修改的当前数据项,有必要将其封锁来防止修改,或者对其进行“克隆”,从而对一个不同的拷贝进行修改。封锁通常不合乎需要;如果克隆是可行的,则较为优选的是把写入请求指引到具有当前数据项(也就是X锁或S锁)的节点。
通过将数据的当前版本写入永久性存储器,这使得永久性存储器能够进行写入,以便覆盖尽可能多的变化。在完成了永久性存储器写入的时候,具有写入完成状态以及所写入数据项版本号的一个消息将会发送到主管。主管记录永久性存储器上的版本号,并将写入通知消息发送到具有数据项PI版本的所有节点,其中该数据项现在将因为永久性存储器的写入而受到覆盖。当一个节点接收到一个写入通知时,如果其脏数据队列或检查点队列上的所有数据项在检验点记录之前已经写入了永久性存储器,或是由于写入了其他节点中的相同数据项而从主管那里接收到写入通知,则该节点可以使其检验点记录恰当提前并且释放PI数据项。在写入一个数据项的时候,主管在逻辑上保持一个写入请求队列,但是只需要记录所接收的最高写入请求的版本号。
例如,在图2描述的方案中,节点3并未将一个关于V3的写入请求消息发送到主管100。然而,响应于来自节点1并要求写入数据项版本V1的写入请求消息,主管100选择节点3作为写入数据项的节点。节点3通过写入数据项版本V3并将一个写入确认消息发送到主管100来做出响应。然后,主管100把一个写入通知消息发送到节点1。
由于选择节点3来将V3写入永久性存储器,因此V1和V2都会被覆盖。与之相反,如果(根据直接写入方法)主管100已经授权节点1写入V1,则V2和V3不会受到覆盖。在将V2、V3写入永久性存储器的时候,必须执行分离的写入操作。
间接写入方法还向那些未曾发送写入请求消息的节点以及发送了写入请求消息的节点优先发送写入通知消息,由此尝试减少必需发送到主管100的写入请求消息的数目。举例来说,在图2描述的方案中,在使用间接写入方法的情况下,即使节点2并未发送一个关于V2的写入请求,主管100还是会将一个写入通知消息发送到节点2。根据一个实施例,主管100会把写入通知消息发送到所有的感兴趣的节点。
当一个感兴趣的节点收到一个写入通知时,该节点从它的检查点队列中删除关于该数据项相应版本的条目。在使用间接写入方法的情况下,在为检查点队列中的很多条目发送写入请求之前,很多条目都可以借助这种方式而被删除。因此,节点发送的写入请求消息数量明显少于其位于检查点队列中的条目数量。
基于拥有者的写入
在间接写入方法和直接写入方法中,即使数据项仅仅在一个节点缓存区中变脏,写入请求消息也会发送到数据项主管。在许多数据库系统中,可以通过在节点之间对内部永久性存储器进行分区(例如为每个节点分离数据项的自由列表)或者借助于把事务路由到节点的应用等级而在节点之间划分数据库工作集的一个显著部分。在这种系统中,数据项只在一个节点缓存区中频繁变脏。基于拥有者的写入方法免除了在这些情况下发送写入请求的需要。
基于拥有者的写入方法导致了由当前指定为数据项“拥有者”的节点所进行的数据项的所有写入。与直接写入或间接写入的方法相反,当数据项拥有者希望得到将要写入的数据项的一个版本时,该拥有者允许将这个数据项写入永久性存储器,而不会将写入请求消息发送到数据项主管。此外还可以使用不同因素来选择充当数据项拥有者的节点。根据一个实施例,数据项拥有者是基于以下规则来选择的:
(1)如果向节点授予了关于数据项的排他锁,则认为该节点即为数据项持有者;
(2)如果不存在排他锁拥有者,也就是说,存在多个共享锁(S)的持有者,则具有数据项的最近排他锁的节点将会选为数据项拥有者;以及
(3)如果数据项未曾由任何节点变脏,则该数据项的拥有者是不存在的。
在一个作为数据项拥有者的节点中,即使数据项不会在该节点变脏,该数据项也会链接到节点的脏数据队列或是检查点队列。
在数据项拥有者把数据项写入永久性存储器之后,该拥有者确定数据项是否“全局变脏”。如果由拥有者之外的任何节点所进行的任何修改都没有被该节点存入永久性存储器,则这个数据项是全局变脏的。如果数据项是全局变脏的,则拥有者会把一个写入确认消息发送到主管。然后主管可以向感兴趣的节点发送写入通知。如果数据项不是全局变脏的,则拥有者不需要向主管发送一个写入确认消息。
可以使用不同的技术方法来使数据项拥有者能够确定是否数据项是全局变脏的。根据一个实施例,一个全局变脏的标志与数据项相关联。当节点把数据项的一个脏数据版本发送到永久性存储器而不是写入永久性存储器的时候,发送节点会把这个数据项的全局变脏标志设定为“真”。为了确定数据项是否是全局变脏的,所述拥有者只需要调查那些与这个数据项相关联的全局变脏标志。如果写入永久性存储器的数据项的版本是(1)数据项的当前版本或者(2)最新的PI版本,则在将数据项写入永久性存储器之后,拥有者会把全局变脏标志设定为“假”。
可以使用多种方式来保存一个数据项的全局变脏标志。例如,当数据项是数据库系统中的一个数据项时,全局变脏标志可以存入(1)保存数据项的数据块的数据块头部,(2)数据项的数据项控制块,(3)当授予数据项的新拥有者等等进行封锁时,在一个本地锁管理器中的锁结构。
参考图3a,该图描述了一种方案,在这个方案中,数据项拥有者(节点3)希望将一个数据项写入永久性存储器,其中全局变脏标志设定为“假”。在图3a中可以看出,在这些情况下,节点3不需要从主管100那里索要权限。另外,节点3无需向主管100告知已经执行了写入永久性存储器的操作。
参考图3b,该图描述了一种方案,在这个方案中,数据项拥有者(节点3)想要把一个数据项写入永久性存储器,其中全局变脏标志设定为“真”。在所述方案中,节点1和2具有数据项的脏数据版本V1和V2,这两个版本比节点3中保存的版本V3旧。与图3a所示方案相似,在这种方案中,节点3无需请求权限以便将V3写入永久性存储器。然而,由于全局变脏标志是“真”,因此在将V3写入永久性存储器之后,节点3会把一个写入确认消息发送到主管100。然后,主管100把写入通知消息发送到节点1和2。在将V3写入永久性存储器之后,节点3把全局变脏标志设定为“假”。
参考图3c,该图描述了一种方案,其中一个并非数据项拥有者的实体(节点1)想要将数据项写入永久性存储器。在这个方案中,节点1把一个写入请求消息发送到主管100。然后,主管100把一个写入执行消息发送到数据项拥有者(节点3)。节点3把V3写入永久性存储器,并将全局变脏标志设置为“假”,此外该节点还向主管100发送一个写入确认消息。然后,主管100向感兴趣的节点(节点1和2)发送写入通知消息。
基于角色的方法
基于拥有者的方法免除了在将数据项写入永久性存储器之前由数据项拥有者从数据项主管那里获取权限的需要。然而,为了消除两个节点同时尝试将数据项写入永久性存储器的可能性,在数据项当前拥有者将数据项写入永久性存储器的时候,数据项所有权是不准改变的。因此,在那些把排他锁持有者当作拥有者的系统中,在数据项的当前拥有者将数据项写入永久性存储器的时候,排他锁是不能传递到另一个节点的。结果,在将数据项写入永久性存储器之前,为将权限修改到一个希望修改数据项的并发节点而进行的转移将会延迟。这种延迟降低了系统的整体性能。另外,对于数据项拥有者而言,即使拥有者没有弄脏数据项,但是拥有者仍需在其脏队列中链接该数据项,这也是不合乎需要的。
基于角色的方法从(2)将数据项写入永久性存储器而不发送写入请求的权限中分离了(1)数据项中的排他锁的所有权。由于一个数据项中的排他锁的所有权与把数据写入永久性存储器而不发送写入请求的权限相分离,因此,即使在进行写入永久性存储器操作的时候,数据项排他锁的所有权也可以在节点之间转移。
根据基于角色的方法,为每个锁都指派了一个锁角色。如果数据项仅仅有可能会在一个节点缓存区中变脏,则这个锁角色是“本地的”。因此在整个系统中,当首次将数据项的一个封锁授予一个节点时,这个封锁是与本地角色一起授予的。由具有本地角色的一个锁进行封锁的数据项既可以由保持封锁不受主管干涉的节点写入永久性存储器,也可以由该节点从永久性存储器中读取。
当一个数据项因为一个来自不同节点的封锁请求而被从节点缓存区中侦测出时,如果数据项在保持节点缓存区中是脏的,则关于该封锁的角色将会转换成“全局”。否则,与数据项一起转移的锁将会仍由本地角色封锁。因此,只有在多节点系统中存在至少一个关于数据项的PI时,一个数据项才需要受到全局角色封锁。
当一个PI数据项或全局角色中的一个当前数据项需要写入永久性存储器时,其保持节点会把一个具有所要写入数据项的版本号的写入请求消息发送到主管。主管可以将写入请求转发到具有当前数据项的节点(X锁的持有者)或是版本号大于或等于所要写入PI的版本号的任何PI。在完成写入的时候,主管会把写入通知发送到所有节点,其中所述节点具有由写入永久性存储器的数据项版本所覆盖的PI。
由于在全局角色中具有排他锁的节点还需要将它的写入永久性存储器操作与主管进行协调,因此,即使由排他锁封锁的数据项正被写入,也可以将所述排他锁转移到另一个节点。出于同样理由,除非节点上的数据项变脏,否则节点不会把数据项链接到它的检查点队列或是脏队列。在脏数据项受到本地角色封锁而被写入的同时,在侦测出一个脏数据项时,锁角色将会切换成全局,正在进行的写入也会传递到主管。
参考图4a,该图描述了一种方案,其中本地模式锁的持有者(节点3)希望将数据项的一个版本写入永久性存储器。由于节点3拥有的锁处于本地模式,因此节点3会把数据项写入永久性存储器,而不会从主管100那里索取许可。并且节点3还不需要向主管100告知已经将该数据项写入了永久性存储器。
参考图4b,该图描述了一种方案,其中全局模式锁的持有者(节点3)希望将数据项的一个版本V3写入永久性存储器。由于封锁模式是全局性的,因此另一个节点有可能正在写入数据项。
因此,节点3将一个写入请求消息发送到主管100。响应于这个写入请求消息,主管100选择一个节点来写出数据项。优选地,主管100选择具有至少与版本V3一样新的数据项版本的一个节点。在当前实例中,V3即为数据项的当前版本。因此,主管100向节点3回送一个写入执行消息。
响应于写入执行消息,节点3将V3写入永久性存储器,并且将一个写入确认信息回送到主管100。然后,主管100将一个写入通知消息发送到感兴趣的节点(节点1和2)。
如果写入永久性存储器的数据项版本即为当前版本,则将数据项写入永久性存储器的节点还把封锁从全局模式转换成本地模式。这个转换可以在将当前版本写入永久性存储器的时候执行。根据节点在数据项上保持一个排他锁这一事实,将当前版本写入永久性存储器的节点能够确定节点正在写入当前版本。在当前实例中,V3即为当前版本,因此,在将V3写入永久性存储器之后,节点3会把模式从全局转换成本地。
参考图4c,该图描述了一种方案,其中,未曾保持数据项当前版本的节点(节点1)请求将数据项写入永久性存储器。图4c显示的事件顺序与图4b的那些相同,只不过写入请求消息来源于节点1而不是节点3。
如图4b所示,与基于拥有者的方法相比,在基于角色的方法中,数据项排他锁的拥有者仍须寻求授权而在封锁处于全局模式时写入来源于主管100的数据项。然而,与基于拥有者的方法不同,一个数据项(及其排他锁)可以从一个节点转移到另一个节点,而不需要等待写入永久性存储器的操作结束。
举例来说,图4d描述了与图4c相同的方案,只不过一个节点(节点4)已经请求了该数据项的排他所有权。即使节点3响应于写入执行消息而正将V3写入永久性存储器,节点3也能将数据项转移到节点4。在具有排他性写入封锁的情况下,节点4可以继续修改数据项来创建版本V4。然而,由于模式是全局的,因此节点4无法将V4写入永久性存储器。
在图4c中,一旦从节点3接收到写入确认信息,那么主管100会向节点4发送一个转换到本地的消息。响应于转换到本地的消息的接收,节点4将模式从全局转换成本地。当把模式转回本地之后,在没有主管100的任何许可的情况下,节点4可以将数据项写入永久性存储器并从永久性存储器中读取数据项。
在一个替换实施例中,响应于写入确认消息,主管100并不发送一个转换到本地的消息。在没有转换到本地的消息的情况下,在节点4,排他锁模式保持为全局。由于模式是全局,因此,如果节点4希望将V4写入永久性存储器,则节点4会将一个写入请求发送到主管100。响应于写入请求消息,主管100可以将一个转换到本地的消息发送到节点4。在将模式转换成本地之后,节点4在没有得到进一步许可的情况下写入V4。
延迟的写入通知
在以上给出的情况中已经提及:将写入通知消息发送到感兴趣的节点是可以立即执行的,该发送也可服从于某些或全部感兴趣的节点。根据一个实施例,在执行写入永久性存储器操作的时候,一个写入通知消息仅仅立即发送到那些已经请求写入一个PI的节点,其中所述PI由已执行的写入所覆盖。举例来说,在图1中,主管100立即将一个写入通知消息发送到节点1,而不是节点2。
永久性存储器上的数据项版本号稍后可以使用各种技术中的任何一种而从主管那里发送到其他感兴趣的节点。举例来说,位于永久性存储器的数据项的版本号可以作为(1)新的封锁请求的封锁许可消息,或者(2)当数据项当前版本需要发送到另一个节点时的侦测(ping)消息的一部分而被传达。因此,当另一个感兴趣的节点需要写入或替换其PI时,它们只与本地锁管理器进行通信即可丢弃它们的PI。
分批处理的消息
用于减少主管与所关注节点之间所传递消息数目的另一种技术包括将往返于主管的写入请求消息以及写入通知消息分批处理成较少的更大消息,从而减少消息数量。举例来说,如果节点1希望将其检查点队列提前三个条目,则节点1可以将一个单独的写入请求消息发送到主管100,该消息标识的是必须写入永久性存储器的所有三个数据(及其相应的版本)。同样,如果节点1关注到已经完成的三个写入永久性存储器的操作,则主管100可以将一个单独的写入确认消息发送到节点1,该消息识别的是已经写入永久性存储器的三个数据项(及其相应的版本)。
检查点队列:管理相同数据项的多个过去镜像
在以上给出的方案中,假设每个节点的缓存区都具有每个数据项的最多一个PI。实际上,在将数据项某个版本写入永久性存储器之前,数据项可以经由多个节点而循环若干次。较为正确的是在每次把脏数据项用侦测队列发送到另一个节点的时候都创建一个PI,并且在节点缓存区的脏数据队列或检查点队列的不同位置具有关于若干PI的条目。
举例来说,图5描述了一种方案,其中节点的检查点队列500具有某个特定数据项(数据项5)的三个条目。特别地,检查点队列500具有一个头部502、一个尾部504以及与数据项5的版本V1、V6和V8相对应的三个条目506、508和510。同样,图6描述了一种方案,其中另一个节点的检查点队列600具有数据项5的两个条目。特别地,条目606和608对应于数据项5的版本V3和V7。
出于说明目的,假定检查点队列500是节点A(未示出)的检查点队列,并且检查点队列600是节点B(未示出)的检查点队列。
数据项主管是与最新PI版本号一起更新的,其中该PI是将脏数据项转移到另一个节点之后才创建的。因此,当节点A创建数据项5的V1并将数据项5转移到另一个节点时,数据项5的主管将会更新,以便指示节点A具有V1。当节点A随后创建数据项5的V6并将数据项5转移到另一个节点时,数据项5的主管将会更新,以便指示节点A具有V6。同样,当节点A随后创建数据项5的V8并将数据项5转移到另一个节点时,数据项5的主管将会更新,以便指示节点A具有V8。
然而,在将PI或是一个更近的版本写入永久性存储器之前,这个PI将会占用缓存区中的存储器,并且这个PI是不能替换的。因此,当一个脏数据项移出缓存区时,如果已经存在一个PI,则新创建的PI可以与先前的PI合并(或是将其替换)。但是,与所合并PI相关联的检查点条目必须与合并中包含的最早版本的条目保持在脏数据队列或检查点队列中的相同位置,这是因为一个检查点不能够考虑完整直到在创建第一PI时对数据项进行的改变将会反映在数据项的永久性存储器版本上。此外,在合并中的最新版本由写入磁盘的操作覆盖之前,合并条目是不能从检查点队列中删除的。
例如,图7描述了检查点队列500,其中与数据项5的版本V1、V6和V8相对应的条目506、508以及510合并为单个条目702。由于条目506是合并中包含的最早条目,因此单个条目702位于条目506占据的位置。
部分覆盖的合并条目
在对一个数据项的PI进行合并时,当把数据项的一个版本写入一个不同节点的永久性存储器时,该版本有可能覆盖合并PI中反映的某些而非全部变化。举例来说,如果节点B把数据项5的V7写入永久性存储器,则只有与合并条目702的V1和V6相关联的变化将会受到覆盖。而与V8相关联的变化则不会受到覆盖。
当永久性存储器版本完全覆盖了所合并PI中包含的变化时,涉及PI的条目可以丢弃,检查点可以超过PI中进行的最早变化而得以提前。举例来说,如果已经将数据项5的V9写入了永久性存储器,则可以丢弃合并条目702。
另一方面,当永久性存储器写入仅仅覆盖了所合并PI的某些变化时,所合并PI的条目不能被丢弃。举例来说,即使将V7写入永久性存储器这个操作能够允许从检查点队列500中删除那些没有经过合并的条目506和508,但是它并不允许从检查点队列500中删除合并条目702。
尽管不能丢弃与受到部分覆盖的所合并PI相对应的条目,但是可以在脏数据队列或检查点队列中将这个条目移动到对应于某个版本的条目的位置,其中所述版本位于写入到永久性存储器的版本之后。举例来说,在将数据项5的V7写入永久性存储器之后,在检查点队列500中,条目702可以移动到与数据项5(也就是条目510)的V8相对应的条目的位置。这允许检查点在第一条目还没有受到写入磁盘操作覆盖之前得以继续进行,而不会受到与所合并PI的条目的阻拦。
避免创建部分覆盖的合并条目
在某些系统中,脏队列或检查点队列是作为一个链接列表来执行的。在CPU使用方面,对链接列表进行扫描并将一个合并条目插入队列中的正确位置,这种操作有可能是非常昂贵的。可以执行一个存储器内部索引来简化这个操作,但在把数据项链接到检查点队列的时候,这将会造成额外的开销。
根据一个实施例,通过避免创建部分覆盖的已移动条目,可以免除对那些受到部分覆盖的合并条目进行移动所涉及的开销。具体地说,当一个合并操作有可能创建一个将会部分覆盖的合并条目时,该合并操作不会执行。
根据一个实施例,在(1)将数据项一个版本写入永久性存储器,以及(2)在节点之间转移数据项时,主管会把当前正在写入永久性存储器的数据项的版本号(“正被写入”的版本号)传递到该数据项正在移至的节点(“接收”节点)。接收节点由此知道不对等同或是早于正被写入版本的任何数据项版本以及晚于正被写入版本的任何数据项版本进行合并。
再次参考图5和6,假定节点A对写入数据项5的V6进行处理。在完成写入操作之前,节点A将数据项5发送到节点B,并且节点B修改数据项5的接收版本来创建数据项5的V7。主管向节点B告知:数据项5的V6是在主管向节点B发送一个侦测队列时写入永久性存储器的。因此,节点B不会对数据项5的V7以及数据项5的V3进行合并,因为由此产生的合并数据项仅仅会因为V6的写入而受到部分覆盖。由于写入V6完全覆盖了V3,因此在结束了V6的写入之后,节点B可以丢弃V3并从队列600中删除条目606。
因此,在进行写入永久性存储器的操作中,和那些至少与正被写入版本一样旧的版本相关联的PI及条目可以相互合并,并且,与那些比正被写入版本更新的版本相关联的PI和条目可以相互合并。然而,对于那些至少与正被写入版本一样旧的版本以及那些比正被写入版本更新的版本而言,与这两种版本分别相关的PI不应该进行合并。
在一个最近版本持有者总是执行写入永久性存储器的操作的系统中,通过使用这种技术,确保了不会有合并PI受到写入永久性存储器操作的部分覆盖。具体地说,当一个节点被侦测而发送一个经历过写入永久性存储器操作的数据项时,该节点不会将数据项的新版本与旧版本相互合并。如果数据项没有经历过写入永久性存储器的操作,则接收到的数据项将是最新版本,并且此后不会有其他节点要求将数据项的更早版本写入永久性存储器。
一种避免写入对局部变化造成覆盖的替换方法是启发式的确定何时创建新的检查点队列条目,而不是合并现有的检查点队列条目。举例来说,假设存在对应于数据项3的版本V7的检查点队列条目。有可能会有必要确定是否为数据项3的新版本创建一个新条目或是将新版本与现有版本相合并。举例来说,对于是否合并所进行的判断可以启发性的基于对现有条目进行的首次变化相对于(1)重做日志中存在的最新变化以及(2)对脏队列或检查点队列开头数据项进行的最早变化到底有多长时间。这种启发式方法估计了与现有条目相关联的PI不久将被写入(或是因为写入而受到覆盖)的可能性,并且能使节点扩展检查点,使之超过PI中的首次变化。
举例来说,如果重做日志中的最新变化对应于远远晚于V7的一个时间,并且处于检查点队列开头的数据项与接近V7的一个时间相关联,则存在一个较高概率而使一个与现有条目相关联的PI不久即被写入(或是由一次写入所覆盖),因此应该为新版本产生一个单独条目。另一方面,如果重做日志中的最新变化对应于一个接近V7的时间,并且处于检查点队列开头的数据项对应于一个远远早于V7的时间,则存在一个较低的可能性而使一个与现有条目相关联的PI不久即被写入(或是由一次写入所覆盖)。因此,新版本应该合并到现有条目中。
单个节点故障的检查点队列
如上所述,在重做日志内部,位于检查点队列开头的条目确定了故障之后必须开始恢复处理的位置。对于一个精确恢复来说,较为安全的是从对应于检查点队列开头的条目的位置开始处理重做日志,而不考虑此次故障涉及了群集内部多少节点。
根据一个实施例,提供了一种检查点机制来为每个节点追踪两个检查点:一个多重故障检查点和一个单独故障检查点。多重故障检查点指示了包括该节点的多节点故障之后开始处理节点恢复的位置。单独故障检查点指示了节点的单个节点故障之后开始处理节点重做日志的位置。
如在下文将要描述的那样,在不允许从多重故障检查点队列中删除条目的情况下,可以从单个故障检查点队列中删除条目。因此,单独故障检查点通常要比多重故障检查点提前很多。由于单独故障检查点被提前很多,因此保持单独故障检查点只会产生从单个节点故障中进行恢复而必须执行的较少工作。
相对于提前检查点而言,当节点将一个脏数据项转移到另一个节点时,该节点的多重故障检查点不会改变。由于数据项是脏的,因此在多重故障检查点队列中存在一个关于该数据项的条目。在转移了脏数据之后,该条目保持在多重故障检查点的队列中。
与之相反,在把脏数据项转移到另一个节点时,与脏数据项相关联的条目是从单独故障检查点队列中删除的。因为只要转移节点出现故障,那么对脏数据项所做的改变就不会丢失,所以从单独故障检查点队列中删除所转移脏数据项的条目是非常安全的。仅仅响应于转移节点的故障,转移节点所进行的改变是在发送到接收节点的数据项版本中反映出来的。在这些情况下,确保将改变存入永久性存储器的责任是与数据项一起转移的。因此,即使接收节点并没有对数据项进行任何进一步的修改,接收节点也必须任选其一(1)确保将转移节点所做的改变(或是关于这些变化的重做)写入了永久性存储器,或者(2)将脏数据项(以及责任)转移到另一个节点。
将脏数据项转移到另一个节点,这使得转移节点能够从它的单个节点故障的检查点队列删除关于所转移数据项的条目。因此,想要将其单个节点故障的检查点队列提前的节点只须将与其单个节点故障的检查点队列开头的条目相对应的脏数据项转移到另一个节点。即使是在接收脏数据项的节点从不请求数据项的情况下,也可以为此目的而执行脏数据项的转移。
这两个检查点可以使用各种方法来加以实现,并且本发明并不局限于任何特定实施。举例来说,单独故障的检查点队列以及多重故障的检查点队列可以作为两个完全独立的队列来加以保持。作为选择,可以保持条目的单独“组合”队列,以便适合单独故障的检查点队列和多重故障的检查点队列。在使用一个组合队列的时候,在组合队列内部,可以使用一个指针来识别哪个条目位于单独故障的检查点队列开头。在从多重故障的检查点队列中删除条目的时候,这些条目是从组合队列中删除的。在从单个故障的检查点队列中删除条目的时候,它们是据此标记的,但是这些条目并没有从组合队列中删除。
基于二进制文件的分批处理
根据基于二进制文件的分批处理方法,在一个节点中保持了两个独立的检查点队列:一个全局变脏的检查点队列和一个本地变脏的检查点队列。节点的本地变脏的检查点队列包含了对应于那些仅仅在该节点中变脏的数据项的条目。节点的全局变脏检查点队列包含了对应于那些在其它节点中也已变脏的数据项的条目。
根据一个实施例,在全局变脏的检查点队列中的条目合并为“二进制文件”。每个二进制文件都与一定的时间范围相关联,并且包含了关于数据项版本的条目,其中这些数据项首先在这个时间范围内变脏。因此,如果合并条目对应于数据项在时间T7、T9和T12变脏时产生的数据项版本,则合并条目将会落入与包含T7的时间范围相对应的二进制文件,这是因为T7是由该条目覆盖的“首次变脏时间”。
举例来说,图8描述了节点X的全局变脏的检查点队列800,该队列分成了二进制文件812、814以及816。二进制文件812与时间范围T15到T25相关联并且包含了与那些在T15与T25之间具有首次变脏时间的全局变脏数据项相对应的条目。二进制文件814与时间范围T16到T35相关联并且包含了与那些在T16与T35之间具有首次变脏时间的全局变脏的数据项相对应的条目。二进制文件816与时间范围T36到T45相关联并且包含了与那些在T36与T45之间具有首次变脏时间的全局性脏数据项相对应的条目。
根据一个实施例,每个二进制文件都指派了一个版本号。举例来说,二进制文件的版本号可以是二进制文件中任何一个条目的首次变脏时间值。举例来说,二进制文件812包含条目805、806以及807,这三个条目分别与数据项1的V1、数据项5的V1以及数据项8的V3相关联。假设数据项1的V1、数据项5的V1以及数据项8的V3分别是在时间T17、T19以及T23首次变脏的。在这种情况中,T23是二进制文件812中任何一个PI的最高的首次变脏时间。因此将会把版本号T23指派给二进制文件812。
根据一个实施例,通过使永久性存储器的写入子系统基于逐个二进制文件而不是基于逐个条目来向主管发布写入请求,由此减少了写入请求消息的数目。举例来说,为使检查点队列800提前,节点X向主管发送一个单独的写入请求消息,以便写入那些与二进制文件812中的所有条目相对应的数据项。写入请求消息只须借助版本号T23(而不是二进制文件内部的特殊条目)即可识别二进制文件812。响应于写入请求,主管将写入执行消息发送到全部数据项的当前锁持有者,其中对于具有一个PI的这些数据项来说,它们的首次变脏时间小于或等于写入请求中指定的版本号。在当前实例中,主管将写入执行消息发送到所有数据项的当前锁持有者,对于具有一个PI的这些数据项来说,它们的首次变脏时间小于或等于T23。
当每个节点完成了将最早在T23或者T23之前发生变化的所有脏数据项写入磁盘时,该节点向主管发送一个写入确认信息。当主管从写入执行消息所发至的所有节点接收到写入确认信息时,主管会向所有节点发送写入通知消息,以便向其告知所请求的写入已经完成。作为响应,每个节点可以清空对应的二进制文件。举例来说,当节点X被告知首次变脏时间在T23或T23之前的全部数据项已经写入磁盘时,该节点X可以清空二进制文件812。清空二进制文件812可以通过(1)丢弃所有那些没有覆盖掉T23之后所作改变的条目,以及(2)将覆盖T23之后所作改变的二进制文件812内部的那些条目移动到其他二进制文件。举例来说,如果条目806是一个覆盖了T19与T40时所作改变的合并条目,则在清空二进制文件812的时候,条目806移动到了二进制文件814。
根据一个实施例,主管追踪(1)PI的首次变脏时间,以及(2)与PI的最后改变(“最后变脏时间”)相关联的版本号。举例来说,对于合并条目702而言,主管知道合并条目对应于版本V8(合并条目中的最新版本)以及版本V1(合并条目中的最早版本)。在这种实施例中,当节点从主管那里接收到一个具有二进制文件版本号的写入通知时,它会(1)丢弃最后变脏时间小于或等于二进制文件版本号的二进制文件中的所有条目,以及(2)将最后变脏时间大于二进制文件版本号的二进制文件中的所有条目移动到队列中的下一个二进制文件,由此清空二进制文件。在这个方案中,当存在一次部分覆盖了PI中所包含变化的写入时,由于与最终得到的合并PI相对应的条目很容易移动到它的恰当二进制文件在旧的PI二进制文件中,当因为脏数据项转移到另一个节点而创建一个新PI时,新PI的条目总是可以替换掉若有的较旧PI的条目。
基于二进制文件的分批处理通常更适于那些使用全局主管而不是分布式锁管理器的多节点系统。发送到当前锁持有者的消息易于进行批量处理,因为它们是同时产生的。实质上,主管还为全局变脏的数据项追踪永久性存储器的版本号,而不是追踪永久性存储器上的数据项版本号以及那些处于写入过程中的数据项的版本号,这非常类似于检验点记录对那些涉及节点中所有脏数据项的变化进行追踪。
恢复
对在多节点系统中执行的写入磁盘操作进行追踪,这一点是非常重要的。举例来说,对于判定哪个条目可以从检查点队列中删除以及确定是否数据项的过去镜像可以写入磁盘和/或从缓存区中释放(“刷新”)来说,这种信息是非常重要的。具体地说,如果已经将数据项的新近版本写入磁盘,则决不应该将数据项的先前一个版本写入磁盘。此外,在将数据项的更近版本写入磁盘的时候,可以从缓存区刷新数据项的PI版本。
在某种情况下,是否成功执行了写入磁盘操作有可能是不清楚的。举例来说,如果将数据项写入磁盘的节点在写入操作过程中出现了故障,则是否在故障发生成功完成了写入操作的前后有可能是不清楚的。同样,如果某个数据项的主管驻留的节点发生故障,则这个故障可能会导致与数据项有关的信息损失。这种信息可能包含了用于指示写入到磁盘的数据项的最近版本的信息。
在发生了一种不清楚是否成功执行了写入磁盘操作的情况时,可以通过扫描磁盘上的数据项来确定其版本,由此可能解决这个问题。然而,作为恢复操作一部分的扫描磁盘将会耗费大量时间和资源,并且有可能过度延迟数据的有效性。
根据本发明的一个方面,可以通过以下手段来免除扫描磁盘上的数据项的需要:(1)如果不清楚是否已将数据项的某个特定版本写入磁盘并且恢复信息(例如重做日志)指示已经将这个特定版本写入了磁盘,则引起恢复处理去假设特定数据项已经成功写入了磁盘,以及(2)将较早缓存的所有数据项版本都标记为“怀疑”。在恢复操作之后,系统可以借助相反的假设来继续进行。具体地说,系统是基于数据项特定版本没有写入磁盘这个假设而继续进行的。然而,在将数据项的任何怀疑版本写入磁盘之前,该系统会读取驻留在磁盘上的数据项版本。如果数据项的磁盘版本更近,则不会执行写磁盘操作,并且主管将被告知磁盘上的是哪个版本。可选地,主管然后将写入通知消息发送到保持了由磁盘上的版本所覆盖的版本的全部节点。另一方面,数据项被恢复。
同样,当一个节点请求数据项的当前版本时,不能向该请求节点提供数据项的怀疑版本,这是因为磁盘中可能包含了数据项的更近版本。取而代之的是,从磁盘中读取数据项的磁盘版本。如果从磁盘中读取的数据项版本是最近版本,则该版本将会提供给请求节点。如果数据项的磁盘版本不是最近版本,则将会根据出现故障的节点的重做日志所保持的恢复信息来创建最近的版本。
不保留过去镜像而对检查点进行管理
在以上给出的许多情况中,假设每个节点都被配置成保留一个PI,直到该PI受到写入磁盘操作所覆盖。然而,根据本发明的一个实施例,并没有保留这种PI。
具体地说,每个节点保持一个全局变脏的检查点队列以及一个本地变脏的检查点队列。与本地变脏的检查点队列中的条目相关联的脏数据项将会保留,直到它由写入磁盘操作所覆盖。然而,与全局变脏的检查点队列相关联的PI无需以这种方式加以保留。
在这个实施例中,如上所述,执行写入磁盘操作的权限受到数据项上保持的封锁模式的束缚。具体地说,如果(1)节点持有数据项的排他锁,或者(2)不存在持有数据项的排他锁的节点,并且一个节点是保持排他锁的最新节点,那么该节点有权为一个数据项执行写入磁盘的操作。
由于一个节点将会具有本地变脏的所有数据项的排他锁,因此该节点能将那些与本地变脏的队列相关联的数据项写入磁盘,而不需要主管介入。该节点还可以具有一个数据项的排他锁或者已拥有最近的排他锁,其中这个数据项与全局变脏的队列中的条目相关联,并且该节点由此可以将这个数据项写入磁盘,而不需要主管介入。
由于从缓存区中侦测出脏数据项时,节点并未保持一个PI,因此需要专门的恢复处理。具体地说,在数据项转移过程中或是因为节点故障而使数据项的当前版本丢失时,该系统把来自所有节点并经过合并的重做日志中的变化应用于永久性存储器上的数据项,以便重新产生数据项的当前版本。在每个重做日志内部,开始恢复处理的位置是通过一个与该节点相关联的检查点而得到确定的。除非数据项版本中包含了永久性存储器的检查点之前在节点中进行的变化,否则不能认为节点中的检查点完结。因此,在将一个脏数据项被侦测出发送到另一个节点,而不是在任何检查点队列中都保持数据项过去镜像的时候,数据项本身可以丢弃,并且数据项头部或控制块链接到全局变脏的队列。
全局变脏的队列是借助与条目相关联的首次变脏时间来进行排序的,并且它与本地变脏的队列相似,只不过没有为每个条目保持相关的真实数据项(也就是说,节点缓存区中并没有数据项内容)。节点中的检查点低于出于本地变脏队列开头的条目的首次变脏时间以及处于全局变脏队列开头的条目的首次变脏时间。
当一个节点想要将其检查点提前时,该节点可以在没有主管介入的情况下写入本地变脏队列中的数据项(因为绝不存在两个节点同时写入同一数据项的可能性)或是将一个写入请求发送到主管,以便在拥有者的节点写出数据项,其中该数据项对应于全局变脏队列中数据项头部的一个更近的版本。
根据一个替换实施例,在每个节点中保存了两个检验点记录(每一个都对应于每个队列)。第一检验点记录指示的是时间TX,其中在节点缓存区中,在TX之前对当前变脏的数据项所做的全部改变都记录在永久性存储器的数据项版本上。第二检验点记录包括数据项列表以及在这个节点中进行的首次变化的版本号,在这个节点中,这个版本号曾经变脏,但是此后已被侦测出,并且并未写入永久性存储器。一旦侦测出脏数据项,那么缓存区将会无法追踪脏数据项,但是仍旧在主管之中保持将封锁开启(也就是说,在出现一个写入通知之前,锁定是不会关闭的)。
在出现节点故障时,扫描出现故障的节点上的重做日志的起始位置是通过确定(1)第一检查点记录所确定的日志中的位置(称之为本地检查点记录)以及(2)第二检查点记录中由数据项列表进行的最早变化所确定的日志中的位置(它可以认为是全局检查点记录的特定节点部分)中的较少的一方来进行计算。
在恢复过程中,对于全局检查点记录到节点的本地检查点记录之间的日志部分的可能恢复而言(假设全局检查点记录是在本地检验点记录之后),只有那些对应于全局检查点记录中的数据项的日志记录需要被考虑。一旦到达了本地检验点记录,那么在到达日志末尾之前,需要为可能的恢复而对所有日志记录加以考虑。
这个方案优于现有方法,因为它把第二检验点记录中的数据项列表限制到了仅仅那些先前在这个节点已经变脏的数据项(与整个系统中的所有脏数据项相反)。第二,可以独立于其他节点来写入每个节点的全局检查点记录(也就是说,不需要协调全局主管或是GLM检查点)。最终,在恢复过程中需要扫描的各个节点的重做日志部分总是比较短的,因为不需要从整个系统中最早的未写入变化开始扫描每个节点的重做日志。
此外,在具有全局缓存区的情况下,现有永久性存储器写入协议假设对一个同步的全局时钟进行访问,其中将来自时钟的数值用作日志序列码(LSN)。这里给出的技术方法无需访问一个同步的全局时钟。此外,现有技术需要一个保持封锁一致性的全局主管(GLM)以及群集中的脏数据项的恢复序列号。此外,现有技术无法轻易扩展到那些主管分布在几个节点的系统(DLM)。
硬件综述
图9是描述可以执行本发明一个实施例的计算机系统900的数据项框图。计算机系统900包括一条总线902或是用于传递信息的其他通信机制,并且包括一个与总线902耦合并用于处理信息的处理器904。计算机系统900还包含一个主存储器906,例如随机访问存储器(RAM)或是其它动态存储设备,这个存储设备与总线902耦合,用于保存信息以及处理器904所要执行的指令。在运行处理器904所执行指令的过程中,主存储器906还可用于保存临时变量或是其它中间信息。计算机系统900还包括一个只读存储器(ROM)908或其它静态存储设备,它与总线902耦合,用于保存静态信息和涉及处理器904的指令。此外还提供了诸如磁盘或光盘这种存储设备910,它与总线902耦合,用于保存信息和指令。
计算机系统900可以经由总线902而与阴极射线管(CRT)这类显示器912相连,从而将信息显示给计算机用户。包括字母数字及其他按键的输入设备914与总线902相连,以便将信息和命令选择传达到处理器904。另一种用户输入设备是光标控制916,例如鼠标、轨迹球或光标方向键,用于将方向信息和命令选择传递给处理器904以及控制显示器912上的光标移动。这种输入设备通常在第一轴(例如x)和第二轴(例如y)这两个轴上具有两个自由度,由此设备能够确定一个平面上的位置。
本发明涉及使用计算机系统900来执行这里所描述的技术方法。根据本发明的一个实施例,处理器904执行主存储器906中包含的一个或多个指令的一个或多个序列,计算机系统900对此做出响应,由此执行这些技术方法。这些指令可以从诸如存储设备910等等的另一种计算机可读介质读入主存储器906。通过执行主存储器906中包含的指令序列,处理器904执行这里描述的处理步骤。在替换实施例中,硬布线电路可用于取代软件指令或是与之组合,由此实现本发明。因此,本发明的实施例并不局限于硬件电路和软件的任何一种特定组合。
这里使用的术语“计算机可读介质”是指任何一种参与向处理器904提供指令以供执行的介质。这种介质可以采取很多形式,其中包括但不局限于:非易失介质、易失介质和传输介质。举例来说,非易失介质包括光盘或磁盘,例如存储设备910。易失介质包括动态存储器,例如主存储器906。传输介质包括同轴电缆、铜线和光纤,其中包括了构成总线902的线路。传输介质还可以采取声波或光波的形式,例如无线电波和红外数据通信中产生的信号。
举例来说,计算机可读介质的通用形式包括:软盘、软磁盘、硬盘、磁带或任何其它磁介质、CD-ROM或任何其它光学介质、穿孔卡、纸带纸条或具有孔洞图案的任何其它物理介质、RAM、PROM和EPROM、FLASH-EPROM、其它任何存储芯片或盒式磁带机、如下所述的载波或是计算机可以读取的其它任何介质。
不同形式的计算机可读介质可以涉及向处理器904传递用于实施的一个或多个指令的一个或多个序列。举例来说,最初可以在远程计算机磁盘上携带指令。远程计算机可以将指令加载到它的动态存储器中,并且使用调制解调器经由电话线来发送指令。计算机系统900本地的调制解调器可以在电话线上接收数据并使用红外发射机来将数据转换成红外信号。红外检测器可以接收红外信号中携带的数据,而恰当的电路则可将数据安插到总线902上。总线902将数据传送到主存储器906,处理器904从主存储器906中检索并执行指令。在由处理器904执行之前或之后,主存储器906接收的指令可以随意保存在存储设备910中。
计算机系统900还包括一个与总线902相连的通信接口918。通信接口918提供了一个与网络链路920耦合的双向数据通信,其中网络链路920与本地网络922相连。举例来说,通信接口918可以是一个向对应类型的电话线路提供数据通信连接的综合业务数字网(ISDN)网卡或调制解调器。作为另一个实例,通信接口918可以是一个LAN网卡,它向兼容的LAN提供数据通信连接。此外还可以实施无线链路。在任何一种这类实施中,通信接口918都会收发电、电磁或光信号,这些信号传送的是那些代表不同类型信息的数字数据流。
网络链路920通常经由一个或多个网络来向其它数据设备提供数据通信。举例来说,网络链路920可以经由本地网络922而将一个连接提供给计算机主机924或是互联网服务供应商(ISP)926运作的数据设备。ISP 926进而又经由现在通常称为“互联网”的全球分组数据通信网络928来提供数据通信业务。本地网络922和互联网928都使用了传送数字数据流的电、电磁或光信号。经由不同网络的信号以及网络链路920上经由通信接口918的信号传送的是那些往返于计算机系统900的数字数据,而这些信号即为传送信息的载波的示范性形式。
计算机系统900可以经由一个或多个网络、网络链路920以及通信接口918来发送消息和接收数据,其中包括了程序代码。在互联网实例中,服务器930可以经由互联网928、ISP 926、本地网络922以及通信接口918来发送一个用于应用程序的被请求码。
接收到的代码可以在接收时由处理器904执行和/或存入存储设备910或其它非易失存储器以供稍后执行。这样,计算机系统900可以得到载波形式的应用码。在前述说明中,本发明是参考其特定实施例而被描述的。然而很明显,可以对本发明进行各种修改和变化,而不脱离本发明较宽的实质和范围。因此,说明书以及附图仅仅被看作是说明性的,它们并不具有限制意义。
Claims (5)
1.一种管理涉及到多节点系统的一个或多个节点出现故障之后从何处开始进行恢复的信息的计算机执行方法,所述方法包括以下步骤:
在所述多节点系统的某个特定节点中,同时保持一个单独故障队列,其中位于所述单独故障队列的头部处的条目指示的是在所述节点出现故障之后,在恢复日志中开始进行恢复的位置,以及
一个多重故障队列,其中位于所述多重故障队列的头部处的条目指示的是当所述多节点系统中的所述节点以及一个或多个其他节点出现故障之后,在恢复日志中开始进行恢复的位置;
响应于正被写入永久性存储器的脏数据项,从所述单独故障队列和所述多重故障队列的每个中删除一个涉及所述数据项的条目;以及
响应于发送到所述多节点系统的另一节点而没有首先写入永久性存储器的脏数据项,在不从所述多重故障队列中删除涉及所述数据项的条目的情况下,从所述单独故障队列中删除一个涉及所述数据项的条目。
2.根据权利要求1所述的方法,还包括步骤:将脏数据项发送到另一个节点,以便在其他节点没有请求所述脏数据项的情况下,允许从所述单独故障队列中删除涉及所述数据项的所述条目。
3.根据权利要求1所述的方法,还包括步骤:
在一个单独节点故障之后,在与单独故障队列相关联的所述恢复日志中的一个位置开始应用所述恢复日志;以及
在发生多节点故障之后,在与多重故障队列相关联的所述恢复日志中的一个位置开始应用所述恢复日志。
4.根据权利要求1所述的方法,还包括步骤:
所述单独故障队列和所述多重故障队列是由一个单独的组合队列来实施的;以及
从所述单独故障队列中删除一个涉及所述数据项的条目而不从所述多重故障队列中删除涉及所述数据项的条目的步骤包括:在不从所述组合队列中删除涉及所述数据项的条目的情况下,在所述组合队列中对涉及所述数据项的条目加以标记。
5.根据权利要求1所述的方法,其中所述单独故障队列和所述多重故障队列是作为两个独立的队列而加以实施的。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US27427001P | 2001-03-07 | 2001-03-07 | |
US60/274,270 | 2001-03-07 | ||
US10/092,247 | 2002-03-04 | ||
US10/091,618 US7200623B2 (en) | 1998-11-24 | 2002-03-04 | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028061616A Division CN1315055C (zh) | 2001-03-07 | 2002-03-07 | 对多节点系统中的检查点队列进行管理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101025705A CN101025705A (zh) | 2007-08-29 |
CN100465914C true CN100465914C (zh) | 2009-03-04 |
Family
ID=26784150
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028061624A Expired - Lifetime CN1311365C (zh) | 2001-03-07 | 2002-03-06 | 分布式共享磁盘系统中的磁盘写操作 |
CNB2007100872607A Expired - Lifetime CN100465914C (zh) | 2001-03-07 | 2002-03-07 | 对多节点系统中的检查点队列进行管理 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB028061624A Expired - Lifetime CN1311365C (zh) | 2001-03-07 | 2002-03-06 | 分布式共享磁盘系统中的磁盘写操作 |
Country Status (6)
Country | Link |
---|---|
US (3) | US7200623B2 (zh) |
JP (1) | JP4293790B2 (zh) |
CN (2) | CN1311365C (zh) |
AU (1) | AU2002335503B2 (zh) |
CA (1) | CA2438262C (zh) |
WO (1) | WO2002071229A2 (zh) |
Families Citing this family (121)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7930278B2 (en) | 1998-02-13 | 2011-04-19 | Oracle International Corporation | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US7200623B2 (en) | 1998-11-24 | 2007-04-03 | Oracle International Corp. | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US7065540B2 (en) * | 1998-11-24 | 2006-06-20 | Oracle International Corporation | Managing checkpoint queues in a multiple node system |
US7237075B2 (en) * | 2002-01-22 | 2007-06-26 | Columbia Data Products, Inc. | Persistent snapshot methods |
US6988165B2 (en) * | 2002-05-20 | 2006-01-17 | Pervasive Software, Inc. | System and method for intelligent write management of disk pages in cache checkpoint operations |
US7337290B2 (en) * | 2003-04-03 | 2008-02-26 | Oracle International Corporation | Deadlock resolution through lock requeing |
US7376744B2 (en) * | 2003-05-09 | 2008-05-20 | Oracle International Corporation | Using local locks for global synchronization in multi-node systems |
US7647595B2 (en) * | 2003-10-29 | 2010-01-12 | Oracle International Corporation | Efficient event notification in clustered computing environments |
US7543001B2 (en) * | 2004-06-17 | 2009-06-02 | International Business Machines Corporation | Storing object recovery information within the object |
US7739244B2 (en) * | 2004-10-14 | 2010-06-15 | Oracle International Corporation | Operating logging for online recovery in shared memory information systems |
US7484048B2 (en) * | 2005-04-27 | 2009-01-27 | Red Hat, Inc. | Conditional message delivery to holder of locks relating to a distributed locking manager |
US7865684B2 (en) * | 2005-06-27 | 2011-01-04 | Ab Initio Technology Llc | Managing message queues |
US7421542B2 (en) * | 2006-01-31 | 2008-09-02 | Cisco Technology, Inc. | Technique for data cache synchronization |
US7921090B2 (en) * | 2006-06-09 | 2011-04-05 | Oracle International Corporation | Cluster delta push |
KR20090102789A (ko) | 2006-12-06 | 2009-09-30 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법 |
US7778986B2 (en) * | 2007-08-29 | 2010-08-17 | International Business Machines Corporation | Securing transfer of ownership of a storage object from an unavailable owner node to another node |
JP2009080674A (ja) * | 2007-09-26 | 2009-04-16 | Hitachi Ltd | 制御装置、アクセス制御方法、及びストレージノード |
US7853571B2 (en) * | 2007-09-28 | 2010-12-14 | Symantec Corporation | Techniques for file system recovery |
CN101136783B (zh) * | 2007-10-15 | 2010-06-02 | 中兴通讯股份有限公司 | 一种网管系统配置数据的备份、恢复方法及装置 |
US7836226B2 (en) * | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US20090158298A1 (en) * | 2007-12-12 | 2009-06-18 | Abhishek Saxena | Database system and eventing infrastructure |
CN101217571B (zh) * | 2008-01-18 | 2010-07-28 | 清华大学 | 用于多副本数据网格系统中的写/读文件操作的方法 |
US7979626B2 (en) * | 2008-05-13 | 2011-07-12 | Microsoft Corporation | Flash recovery employing transaction log |
US7934080B2 (en) * | 2008-05-28 | 2011-04-26 | Oracle America, Inc. | Aggressive store merging in a processor that supports checkpointing |
US7991775B2 (en) * | 2008-08-08 | 2011-08-02 | Oracle International Corporation | Global checkpoint SCN |
KR20110066940A (ko) * | 2008-10-06 | 2011-06-17 | 인터내셔널 비지네스 머신즈 코포레이션 | 복수의 어플리케이션 서버에 의해 공유 데이터를 액세스하는 시스템 |
US8443062B2 (en) | 2008-10-23 | 2013-05-14 | Microsoft Corporation | Quorum based transactionally consistent membership management in distributed storage systems |
US8510334B2 (en) * | 2009-11-05 | 2013-08-13 | Oracle International Corporation | Lock manager on disk |
CN102065192B (zh) * | 2009-11-18 | 2013-12-04 | 中国移动通信集团安徽有限公司 | 一种话单排重方法和装置 |
CN101741911B (zh) * | 2009-12-18 | 2014-04-30 | 中兴通讯股份有限公司 | 基于多副本协同的写操作方法、系统及节点 |
JP4995296B2 (ja) * | 2010-03-11 | 2012-08-08 | 株式会社日立製作所 | 計算機システムおよびキャッシュ制御方法 |
US9389926B2 (en) | 2010-05-05 | 2016-07-12 | Red Hat, Inc. | Distributed resource contention detection |
US8229961B2 (en) | 2010-05-05 | 2012-07-24 | Red Hat, Inc. | Management of latency and throughput in a cluster file system |
US20110302265A1 (en) * | 2010-06-03 | 2011-12-08 | Microsoft Corporation | Leader arbitration for provisioning services |
US8255637B2 (en) * | 2010-09-27 | 2012-08-28 | Infinidat Ltd. | Mass storage system and method of operating using consistency checkpoints and destaging |
US8489829B2 (en) | 2010-12-01 | 2013-07-16 | International Business Machines Corporation | Reduction of communication and efficient failover processing in distributed shared memory-based application |
US8885702B2 (en) | 2011-10-17 | 2014-11-11 | Google Inc. | Rate-distortion-complexity optimization of video encoding guided by video description length |
GB2502288A (en) | 2012-05-22 | 2013-11-27 | Ibm | Modifying the order of checking virtual machines for cached disc data |
WO2014101108A1 (zh) * | 2012-12-28 | 2014-07-03 | 华为技术有限公司 | 分布式存储系统的缓存方法、节点和计算机可读介质 |
GB2510426A (en) * | 2013-02-05 | 2014-08-06 | Ibm | Workload balancing in a distributed database |
KR20150132099A (ko) * | 2013-03-20 | 2015-11-25 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 서로 다른 계층 레벨의 메모리 노드를 가진 메모리 시스템에서의 데이터 캐싱 |
US9767178B2 (en) | 2013-10-30 | 2017-09-19 | Oracle International Corporation | Multi-instance redo apply |
US9794078B2 (en) * | 2014-03-05 | 2017-10-17 | Ricoh Company, Ltd. | Fairly adding documents to a collaborative session |
EP2940537B1 (en) * | 2014-04-30 | 2019-03-20 | ABB Schweiz AG | Method and system for multi-cycle replication |
JP2015225603A (ja) * | 2014-05-29 | 2015-12-14 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム |
US9563521B2 (en) * | 2014-07-21 | 2017-02-07 | Oracle International Corporation | Data transfers between cluster instances with delayed log file flush |
US20160212198A1 (en) * | 2015-01-16 | 2016-07-21 | Netapp, Inc. | System of host caches managed in a unified manner |
CN104657227B (zh) * | 2015-02-04 | 2018-04-03 | 深圳市锐明技术股份有限公司 | 硬盘写操作失败时的处理方法及系统 |
US9563522B2 (en) * | 2015-03-31 | 2017-02-07 | Oracle International Corporation | Data recovery for a relational database management system instance in a heterogeneous database system |
US9703634B2 (en) | 2015-03-31 | 2017-07-11 | Oracle International Corporation | Data recovery for a compute node in a heterogeneous database system |
CN106294206B (zh) * | 2015-05-21 | 2022-04-29 | 广州华多网络科技有限公司 | 一种缓存数据处理方法以及装置 |
CN109376156B (zh) * | 2015-06-08 | 2021-09-21 | 南京航空航天大学 | 读取具有存储感知的混合索引的方法 |
CN106293892B (zh) * | 2015-06-26 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 分布式流计算系统、方法和装置 |
US10298679B1 (en) * | 2015-09-18 | 2019-05-21 | Amazon Technologies, Inc. | Object ownership migration |
US10506031B1 (en) | 2015-09-18 | 2019-12-10 | Amazon Technologies, Inc. | Scalable network for processing virtual environments |
US10484249B1 (en) | 2015-09-18 | 2019-11-19 | Amazon Technologies, Inc. | Dynamic distribution of simulation load |
US10230583B1 (en) | 2015-09-18 | 2019-03-12 | Amazon Technologies, Inc. | Multi-node object simulation |
US10911535B1 (en) * | 2015-09-18 | 2021-02-02 | Amazon Technologies, Inc. | Object ownership migration |
US10104173B1 (en) | 2015-09-18 | 2018-10-16 | Amazon Technologies, Inc. | Object subscription rule propagation |
CN106708608B (zh) * | 2015-11-16 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 一种分布式锁服务方法、获取方法及相应装置 |
US10419563B2 (en) * | 2016-04-28 | 2019-09-17 | Microsoft Technology Licensing, Llc | Persistent notification customization |
US10719499B2 (en) * | 2016-06-06 | 2020-07-21 | INTERNATIONAL BUSINESS MACHINES CORPORATIOb | Establishing distributed consensus via alternate voting strategies in a dispersed storage network |
US9990135B2 (en) * | 2016-09-23 | 2018-06-05 | Apple Inc. | Providing memory usage analysis by attributing memory allocations to development components |
CN106557437A (zh) * | 2016-11-22 | 2017-04-05 | 上海联影医疗科技有限公司 | 一种生数据的高速存储方法和系统 |
CN106657356A (zh) * | 2016-12-29 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种云存储系统的数据写入方法、装置及云存储系统 |
CN106658050B (zh) * | 2016-12-30 | 2020-02-21 | 北京奇虎科技有限公司 | 一种流数据的并发读写方法和装置 |
CN106940712B (zh) * | 2017-03-01 | 2020-02-14 | 星环信息科技(上海)有限公司 | 序列生成方法与设备 |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
CN108595109B (zh) * | 2017-12-29 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种基于Ceph分布式存储系统的多客户端写的方法 |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10642680B2 (en) | 2018-02-23 | 2020-05-05 | International Business Machines Corporation | Chronologically ordered log-structured key-value store from failures during garbage collection |
US10783073B2 (en) | 2018-02-23 | 2020-09-22 | International Business Machines Corporation | Chronologically ordered out-of-place update key-value storage system |
US10635523B2 (en) * | 2018-02-23 | 2020-04-28 | International Business Machines Corporation | Fast recovery from failures in a chronologically ordered log-structured key-value storage system |
CN110309100B (zh) * | 2018-03-22 | 2023-05-23 | 腾讯科技(深圳)有限公司 | 一种快照对象生成方法和装置 |
US11379155B2 (en) | 2018-05-24 | 2022-07-05 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
CN110727652B (zh) * | 2018-07-17 | 2023-06-30 | 阿里巴巴集团控股有限公司 | 一种云存储处理系统及其实现数据处理的方法 |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US11188516B2 (en) | 2018-08-24 | 2021-11-30 | Oracle International Corproation | Providing consistent database recovery after database failure for distributed databases with non-durable storage leveraging background synchronization point |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US11176115B2 (en) * | 2018-10-19 | 2021-11-16 | Oracle International Corporation | Dependency locking |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) * | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10970212B2 (en) | 2019-02-15 | 2021-04-06 | Alibaba Group Holding Limited | Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones |
US11061834B2 (en) | 2019-02-26 | 2021-07-13 | Alibaba Group Holding Limited | Method and system for facilitating an improved storage system by decoupling the controller from the storage medium |
US10891065B2 (en) | 2019-04-01 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US10802967B1 (en) * | 2019-06-28 | 2020-10-13 | Intel Corporation | Partial write management in a multi-tiled compute engine |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11074124B2 (en) | 2019-07-23 | 2021-07-27 | Alibaba Group Holding Limited | Method and system for enhancing throughput of big data analysis in a NAND-based read source storage |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11617282B2 (en) | 2019-10-01 | 2023-03-28 | Alibaba Group Holding Limited | System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers |
CN110865903B (zh) * | 2019-11-06 | 2020-10-23 | 重庆紫光华山智安科技有限公司 | 基于纠删码分布式存储的节点异常重连复用方法及系统 |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
CN112506941B (zh) * | 2021-02-03 | 2021-05-11 | 北京金山云网络技术有限公司 | 核查点的处理方法和装置、电子设备和存储介质 |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
US12007964B2 (en) * | 2021-08-31 | 2024-06-11 | Dell Products L.P. | Maintaining ongoing transaction information of a database system in an external data store for processing unsaved transactions in response to designated events |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193162A (en) * | 1989-11-06 | 1993-03-09 | Unisys Corporation | Cache memory with data compaction for use in the audit trail of a data processing system having record locking capabilities |
EP0788050A1 (en) * | 1996-01-31 | 1997-08-06 | Kabushiki Kaisha Toshiba | Computer system |
EP0811912A2 (en) * | 1996-06-07 | 1997-12-10 | Kabushiki Kaisha Toshiba | Process switch apparatus in a computer system |
CN1175739A (zh) * | 1996-09-03 | 1998-03-11 | 东芝株式会社 | 计算机系统和文件管理方法 |
Family Cites Families (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4438494A (en) | 1981-08-25 | 1984-03-20 | Intel Corporation | Apparatus of fault-handling in a multiprocessing system |
US4814971A (en) * | 1985-09-11 | 1989-03-21 | Texas Instruments Incorporated | Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state |
EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
WO1991003024A1 (en) | 1989-08-14 | 1991-03-07 | Microsoft Corporation | Method and system for opportunistic locking in a networked computer system |
US5371885A (en) * | 1989-08-29 | 1994-12-06 | Microsoft Corporation | High performance file system |
JP2575543B2 (ja) | 1990-04-04 | 1997-01-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 同時アクセス管理方法 |
US5297269A (en) | 1990-04-26 | 1994-03-22 | Digital Equipment Company | Cache coherency protocol for multi processor computer system |
EP0465019B1 (en) * | 1990-06-29 | 1997-05-14 | Oracle Corporation | Method and apparatus for managing state identifiers for efficient recovery |
DE69126066T2 (de) | 1990-06-29 | 1997-09-25 | Oracle Corp | Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs |
US5261069A (en) | 1990-08-13 | 1993-11-09 | Hewlett-Packard Company | Method of maintaining consistency of cached data in a database system |
US5287473A (en) * | 1990-12-14 | 1994-02-15 | International Business Machines Corporation | Non-blocking serialization for removing data from a shared cache |
US5276835A (en) * | 1990-12-14 | 1994-01-04 | International Business Machines Corporation | Non-blocking serialization for caching data in a shared cache |
JPH0827755B2 (ja) * | 1991-02-15 | 1996-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データの単位を高速度でアクセスする方法 |
US5285528A (en) * | 1991-02-22 | 1994-02-08 | International Business Machines Corporation | Data structures and algorithms for managing lock states of addressable element ranges |
US5426747A (en) * | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
JP2533266B2 (ja) | 1991-06-14 | 1996-09-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用デ―タシステムにおけるデ―タ資源のロッキング方法及びシステム間のデ―タロック管理方法 |
US5280611A (en) * | 1991-11-08 | 1994-01-18 | International Business Machines Corporation | Method for managing database recovery from failure of a shared store in a system including a plurality of transaction-based systems of the write-ahead logging type |
US5423044A (en) | 1992-06-16 | 1995-06-06 | International Business Machines Corporation | Shared, distributed lock manager for loosely coupled processing systems |
US5414840A (en) * | 1992-06-25 | 1995-05-09 | Digital Equipment Corporation | Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory |
US5408629A (en) * | 1992-08-13 | 1995-04-18 | Unisys Corporation | Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system |
US5418966A (en) * | 1992-10-16 | 1995-05-23 | International Business Machines Corporation | Updating replicated objects in a plurality of memory partitions |
US5596754A (en) | 1992-10-29 | 1997-01-21 | Digital Equipment Corporation | Method for performing private lock management |
US5504874A (en) * | 1993-09-29 | 1996-04-02 | Silicon Graphics, Inc. | System and method of implementing read resources to maintain cache coherency in a multiprocessor environment permitting split transactions |
US5630124A (en) | 1993-12-06 | 1997-05-13 | International Business Machines Corporation | System and method for assuring atomicity of distributed update requests in a parallel database |
US5454108A (en) * | 1994-01-26 | 1995-09-26 | International Business Machines Corporation | Distributed lock manager using a passive, state-full control-server |
US5659682A (en) * | 1994-06-16 | 1997-08-19 | International Business Machines Corporation | Scheme to determine completion of directory operations for server recovery |
US5642501A (en) * | 1994-07-26 | 1997-06-24 | Novell, Inc. | Computer method and apparatus for asynchronous ordered operations |
US5574906A (en) | 1994-10-24 | 1996-11-12 | International Business Machines Corporation | System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing |
JPH08185359A (ja) | 1994-10-31 | 1996-07-16 | Toshiba Corp | メモリサブシステム |
US5634122A (en) * | 1994-12-30 | 1997-05-27 | International Business Machines Corporation | System and method for multi-level token management for distributed file systems |
US5655100A (en) * | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
US5727203A (en) * | 1995-03-31 | 1998-03-10 | Sun Microsystems, Inc. | Methods and apparatus for managing a database in a distributed object operating environment using persistent and transient cache |
US5634068A (en) * | 1995-03-31 | 1997-05-27 | Sun Microsystems, Inc. | Packet switched cache coherent multiprocessor system |
US5680576A (en) | 1995-05-05 | 1997-10-21 | Silicon Graphics, Inc. | Directory-based coherence protocol allowing efficient dropping of clean-exclusive data |
US5612865A (en) | 1995-06-01 | 1997-03-18 | Ncr Corporation | Dynamic hashing method for optimal distribution of locks within a clustered system |
JP3085899B2 (ja) | 1995-06-19 | 2000-09-11 | 株式会社東芝 | マルチプロセッサシステム |
US5872969A (en) * | 1995-06-23 | 1999-02-16 | International Business Machines Corporation | System and method for efficiently synchronizing cache and persistent data in an object oriented transaction processing system |
JPH0926910A (ja) | 1995-07-11 | 1997-01-28 | Canon Inc | 情報処理装置及びその方法及び情報処理システム及びその制御方法 |
US5682537A (en) | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
US5996075A (en) * | 1995-11-02 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for reliable disk fencing in a multicomputer system |
US5903910A (en) | 1995-11-20 | 1999-05-11 | Advanced Micro Devices, Inc. | Method for transferring data between a pair of caches configured to be accessed from different stages of an instruction processing pipeline |
US6012085A (en) * | 1995-11-30 | 2000-01-04 | Stampede Technolgies, Inc. | Apparatus and method for increased data access in a network file object oriented caching system |
US5875462A (en) * | 1995-12-28 | 1999-02-23 | Unisys Corporation | Multi-processor data processing system with multiple second level caches mapable to all of addressable memory |
US5991768A (en) * | 1996-06-21 | 1999-11-23 | Oracle Corporation | Finer grained quiescence for data replication |
US6167490A (en) * | 1996-09-20 | 2000-12-26 | University Of Washington | Using global memory information to manage memory in a computer network |
US6148377A (en) * | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
US6026474A (en) * | 1996-11-22 | 2000-02-15 | Mangosoft Corporation | Shared client-side web caching using globally addressable memory |
US5832516A (en) | 1997-01-21 | 1998-11-03 | Oracle Corporation | Caching data in recoverable objects |
US5966706A (en) * | 1997-02-19 | 1999-10-12 | At&T Corp | Local logging in a distributed database management computer system |
US6067550A (en) | 1997-03-10 | 2000-05-23 | Microsoft Corporation | Database computer system with application recovery and dependency handling write cache |
US5933838A (en) | 1997-03-10 | 1999-08-03 | Microsoft Corporation | Database computer system with application recovery and recovery log sequence numbers to optimize recovery |
US6032188A (en) * | 1997-03-12 | 2000-02-29 | Microsoft Corporation | Method and system for controlling data flow |
JPH10260600A (ja) * | 1997-03-19 | 1998-09-29 | Toshiba Corp | 定着装置 |
US5913227A (en) * | 1997-03-24 | 1999-06-15 | Emc Corporation | Agent-implemented locking mechanism |
US6151684A (en) | 1997-03-28 | 2000-11-21 | Tandem Computers Incorporated | High availability access to input/output devices in a distributed system |
US6490594B1 (en) | 1997-04-04 | 2002-12-03 | Microsoft Corporation | Database computer system with application recovery and dependency handling write cache |
US5933849A (en) * | 1997-04-10 | 1999-08-03 | At&T Corp | Scalable distributed caching system and method |
US5999940A (en) * | 1997-05-28 | 1999-12-07 | Home Information Services, Inc. | Interactive information discovery tool and methodology |
US6044438A (en) * | 1997-07-10 | 2000-03-28 | International Business Machiness Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems |
US5987477A (en) * | 1997-07-11 | 1999-11-16 | International Business Machines Corporation | Parallel file system and method for parallel write sharing |
US6256712B1 (en) | 1997-08-01 | 2001-07-03 | International Business Machines Corporation | Scaleable method for maintaining and making consistent updates to caches |
US6014669A (en) * | 1997-10-01 | 2000-01-11 | Sun Microsystems, Inc. | Highly-available distributed cluster configuration database |
US6112281A (en) * | 1997-10-07 | 2000-08-29 | Oracle Corporation | I/O forwarding in a cache coherent shared disk computer system |
US5924096A (en) * | 1997-10-15 | 1999-07-13 | Novell, Inc. | Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand |
US6279084B1 (en) | 1997-10-24 | 2001-08-21 | Compaq Computer Corporation | Shadow commands to optimize sequencing of requests in a switch-based multi-processor system |
US6052758A (en) * | 1997-12-22 | 2000-04-18 | International Business Machines Corporation | Interface error detection and isolation in a direct access storage device DASD system |
US6587931B1 (en) * | 1997-12-31 | 2003-07-01 | Unisys Corporation | Directory-based cache coherency system supporting multiple instruction processor and input/output caches |
US6253273B1 (en) * | 1998-02-06 | 2001-06-26 | Emc Corporation | Lock mechanism |
US6173374B1 (en) * | 1998-02-11 | 2001-01-09 | Lsi Logic Corporation | System and method for peer-to-peer accelerated I/O shipping between host bus adapters in clustered computer network |
US7930278B2 (en) | 1998-02-13 | 2011-04-19 | Oracle International Corporation | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US7200623B2 (en) | 1998-11-24 | 2007-04-03 | Oracle International Corp. | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US6353836B1 (en) * | 1998-02-13 | 2002-03-05 | Oracle Corporation | Method and apparatus for transferring data from the cache of one node to the cache of another node |
US6330591B1 (en) * | 1998-03-09 | 2001-12-11 | Lsi Logic Corporation | High speed serial line transceivers integrated into a cache controller to support coherent memory transactions in a loosely coupled network |
US6453356B1 (en) * | 1998-04-15 | 2002-09-17 | Adc Telecommunications, Inc. | Data exchange system and method |
US6832120B1 (en) * | 1998-05-15 | 2004-12-14 | Tridium, Inc. | System and methods for object-oriented control of diverse electromechanical systems using a computer network |
US6085198A (en) * | 1998-06-05 | 2000-07-04 | Sun Microsystems, Inc. | Integrated three-tier application framework with automated class and table generation |
US6115715A (en) * | 1998-06-29 | 2000-09-05 | Sun Microsystems, Inc. | Transaction management in a configuration database |
US6182186B1 (en) * | 1998-06-30 | 2001-01-30 | Sun Microsystems, Inc. | Method and apparatus that utilizes lock states to lock resources |
US6535868B1 (en) * | 1998-08-27 | 2003-03-18 | Debra A. Galeazzi | Method and apparatus for managing metadata in a database management system |
US6449623B1 (en) | 1998-09-04 | 2002-09-10 | Lucent Technologies Inc, | Method and apparatus for detecting and recovering from data corruption of a database via read logging |
US6633891B1 (en) | 1998-11-24 | 2003-10-14 | Oracle International Corporation | Managing replacement of data in a cache on a node based on caches of other nodes |
US7065540B2 (en) | 1998-11-24 | 2006-06-20 | Oracle International Corporation | Managing checkpoint queues in a multiple node system |
US6405274B1 (en) * | 1998-12-30 | 2002-06-11 | Oracle Corporation | Anticipatory lock mode conversions in a lock management system |
US6453404B1 (en) * | 1999-05-27 | 2002-09-17 | Microsoft Corporation | Distributed data cache with memory allocation model |
US6374332B1 (en) * | 1999-09-30 | 2002-04-16 | Unisys Corporation | Cache control system for performing multiple outstanding ownership requests |
US6477620B1 (en) * | 1999-12-20 | 2002-11-05 | Unisys Corporation | Cache-level return data by-pass system for a hierarchical memory |
US6434555B1 (en) | 2000-01-24 | 2002-08-13 | Hewlett Packard Company | Method for transaction recovery in three-tier applications |
US6915387B1 (en) * | 2000-07-20 | 2005-07-05 | Silicon Graphics, Inc. | System and method for handling updates to memory in a distributed shared memory system |
US6678798B1 (en) * | 2000-07-20 | 2004-01-13 | Silicon Graphics, Inc. | System and method for reducing memory latency during read requests |
US6643672B1 (en) * | 2000-07-31 | 2003-11-04 | Hewlett-Packard Development Company, Lp. | Method and apparatus for asynchronous file writes in a distributed file system |
US7389293B2 (en) * | 2000-12-20 | 2008-06-17 | Oracle International Corporation | Remastering for asymmetric clusters in high-load scenarios |
US6587921B2 (en) * | 2001-05-07 | 2003-07-01 | International Business Machines Corporation | Method and apparatus for cache synchronization in a clustered environment |
US6816873B2 (en) | 2001-05-15 | 2004-11-09 | International Business Machines Corporation | Method for managing distributed savepoints across multiple DBMS's within a distributed transaction |
US20020194015A1 (en) * | 2001-05-29 | 2002-12-19 | Incepto Ltd. | Distributed database clustering using asynchronous transactional replication |
US7039669B1 (en) * | 2001-09-28 | 2006-05-02 | Oracle Corporation | Techniques for adding a master in a distributed database without suspending database operations at extant master sites |
US7337290B2 (en) | 2003-04-03 | 2008-02-26 | Oracle International Corporation | Deadlock resolution through lock requeing |
US20050010615A1 (en) * | 2003-04-11 | 2005-01-13 | Sun Microsystems, Inc. | Multi-node computer system implementing memory-correctable speculative proxy transactions |
US7340743B1 (en) * | 2003-04-25 | 2008-03-04 | Symantec Operating Corporation | Masterless locks in a multi-node environment |
US7376744B2 (en) * | 2003-05-09 | 2008-05-20 | Oracle International Corporation | Using local locks for global synchronization in multi-node systems |
US7096316B1 (en) * | 2003-06-30 | 2006-08-22 | Veritas Operating Corporation | Multi-host environment with coordinated distributed logging for writes to a raid storage volume |
US7330858B1 (en) * | 2003-06-30 | 2008-02-12 | Symantec Operating Corporation | Coordinated distributed logging in a multi-host environment |
US7139772B2 (en) * | 2003-08-01 | 2006-11-21 | Oracle International Corporation | Ownership reassignment in a shared-nothing database system |
US20050203974A1 (en) | 2004-03-09 | 2005-09-15 | Smith Gary S. | Checkpoint methods and systems utilizing non-disk persistent memory |
US7383290B2 (en) | 2004-03-09 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Transaction processing systems and methods utilizing non-disk persistent memory |
US7484048B2 (en) | 2005-04-27 | 2009-01-27 | Red Hat, Inc. | Conditional message delivery to holder of locks relating to a distributed locking manager |
-
2002
- 2002-03-04 US US10/091,618 patent/US7200623B2/en not_active Expired - Lifetime
- 2002-03-06 JP JP2002570085A patent/JP4293790B2/ja not_active Expired - Lifetime
- 2002-03-06 CN CNB028061624A patent/CN1311365C/zh not_active Expired - Lifetime
- 2002-03-06 CA CA2438262A patent/CA2438262C/en not_active Expired - Lifetime
- 2002-03-06 AU AU2002335503A patent/AU2002335503B2/en not_active Expired
- 2002-03-06 WO PCT/US2002/007475 patent/WO2002071229A2/en active Application Filing
- 2002-03-07 CN CNB2007100872607A patent/CN100465914C/zh not_active Expired - Lifetime
-
2007
- 2007-02-20 US US11/708,721 patent/US8051046B2/en not_active Expired - Fee Related
-
2011
- 2011-08-08 US US13/205,443 patent/US9519589B2/en not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193162A (en) * | 1989-11-06 | 1993-03-09 | Unisys Corporation | Cache memory with data compaction for use in the audit trail of a data processing system having record locking capabilities |
EP0788050A1 (en) * | 1996-01-31 | 1997-08-06 | Kabushiki Kaisha Toshiba | Computer system |
EP0811912A2 (en) * | 1996-06-07 | 1997-12-10 | Kabushiki Kaisha Toshiba | Process switch apparatus in a computer system |
CN1175739A (zh) * | 1996-09-03 | 1998-03-11 | 东芝株式会社 | 计算机系统和文件管理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2002071229A3 (en) | 2003-08-07 |
CN1496510A (zh) | 2004-05-12 |
US20070168319A1 (en) | 2007-07-19 |
AU2002335503B2 (en) | 2007-10-25 |
CN101025705A (zh) | 2007-08-29 |
CN1311365C (zh) | 2007-04-18 |
US20020095403A1 (en) | 2002-07-18 |
WO2002071229A2 (en) | 2002-09-12 |
JP2005505808A (ja) | 2005-02-24 |
US7200623B2 (en) | 2007-04-03 |
CA2438262A1 (en) | 2002-09-12 |
CA2438262C (en) | 2012-05-15 |
US9519589B2 (en) | 2016-12-13 |
US20110295822A1 (en) | 2011-12-01 |
US8051046B2 (en) | 2011-11-01 |
JP4293790B2 (ja) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100465914C (zh) | 对多节点系统中的检查点队列进行管理 | |
CA2320240C (en) | Method and apparatus for transferring data from the cache of one node to the cache of another node | |
CN100422936C (zh) | 管理锁定的方法和系统以及进行死锁管理的方法和系统 | |
US7577690B2 (en) | Managing checkpoint queues in a multiple node system | |
US7930278B2 (en) | Methods to perform disk writes in a distributed shared disk system needing consistency across failures | |
CN100517303C (zh) | 在不同数据库服务器之间划分一个数据库所有权以控制访问数据库 | |
US7047256B2 (en) | Storage device system having bi-directional copy control function | |
CN1315055C (zh) | 对多节点系统中的检查点队列进行管理 | |
CN100487676C (zh) | 分布式共享磁盘系统中的磁盘写操作 | |
US6799172B2 (en) | Method and system for removal of resource manager affinity during restart in a transaction processing system | |
CN101571879B (zh) | 在不同数据库服务器之间划分一个数据库所有权以控制访问数据库 | |
EP1162539B1 (en) | Recovering data from one or more failed caches | |
CN101714152B (zh) | 在不同数据库服务器之间划分一个数据库所有权以控制访问数据库 | |
AU2007202588B2 (en) | Method and apparatus for transferring data from the cache of one node to the cache of another node | |
CA2448050C (en) | Method and apparatus for transferring data from the cache of one node to the cache of another node | |
EP1408408B1 (en) | Managing a resource used by a plurality of nodes | |
AU2003213536B2 (en) | Method and apparatus for transferring data from the cache of one node to the cache of another node |
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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20090304 |
|
CX01 | Expiry of patent term |