CN1609851A - 用于识别和存储表格变化的系统和方法 - Google Patents

用于识别和存储表格变化的系统和方法 Download PDF

Info

Publication number
CN1609851A
CN1609851A CNA2004100478005A CN200410047800A CN1609851A CN 1609851 A CN1609851 A CN 1609851A CN A2004100478005 A CNA2004100478005 A CN A2004100478005A CN 200410047800 A CN200410047800 A CN 200410047800A CN 1609851 A CN1609851 A CN 1609851A
Authority
CN
China
Prior art keywords
row
version
sequence number
equal
mark
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
Application number
CNA2004100478005A
Other languages
English (en)
Other versions
CN100465949C (zh
Inventor
G·克里西那莫西
W·肖
N·R·艾利斯
R·N·克莱恩
S·H·艾加瓦尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1609851A publication Critical patent/CN1609851A/zh
Application granted granted Critical
Publication of CN100465949C publication Critical patent/CN100465949C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Abstract

用删除标记和插入标记扫描基础表。该删除标记用于在指令执行前作为处理的一部分识别提交到基础表的最后的改变,而该插入标记用于在指令执行过程中作为处理的一部分识别提交到基础表的最后的改变。用存储在增量表中的删除过滤删除标记扫描的结果,并且用过滤的行增加删除表。用存储在增量表中的插入过滤插入扫描的结果,并且用过滤的行增加插入表。

Description

用于识别和存储表格变化的系统和方法
发明的背景
发明的领域
本发明涉及数据库管理领域,更具体的,涉及识别从基础表格中删除的行以及向基础表格中插入的行并存储这种改变。
现有技术的描述
在数据库管理系统(DBMS)中,数据当前的版本一般存储在一个“基础”表中。该基础表中的每一行都可以被改变。该改变可以是在基础表中删除,插入,或修改行。修改是以前版本行的删除和当前版本行的插入。当一行被改变后,该变化可以被存储在一个暂时的装置中,存储器常驻“转换”表。该转换表装置通常由DBMS自动创建和管理。该转换表装置可以包括一个“删除”表,用于存储从基础表中删除的行,和一个“插入”表,用于存储插入到基础表中的行。如果一行被修改,该行以前的版本被存储在删除表中,而该行当前的版本被存储在插入表中。
该转换表使DBMS能够测试变化的效果以及为触发作用设置条件。特别地,转换表扩展表格之间指示的完整性,在特定概念下改变基础表中的数据,检查错误并且基于发现的错误采取行动,以及在改变之前和改变之后的表格状态之间查找差异并且基于该差异采取行动。
传统DBMS中的转换表可以在该行被改变之前,通过完全的复制基础表的行来增加。因而,例如,如果一行被删除,该行以前的版本被复制并且该复制,接着被存储在删除表中。复制行的缺点在于该复制的产生和存储是浪费的,尤其是如果该复制的行包括二进制大的目标(BLOB)数据的大字段,例如,编码或图像。
增加转换表的另一个方法是扫描一个日志文件。然而,使用该日志扫描的缺点在于BLOB数据通常太复杂而不能使用该日志扫描实现。而且,该日志扫描需要磁盘输入/输出(I/O)的使用。
因此,现有技术中需要一个有效地识别和存储表格变化的系统和方法。需要这样的系统和方法,使包括大量BLOB数据的行能够不浪费的被识别和存储在一个适当的转换表中。更加需要这样的系统和方法,该系统和方法的操作不存在磁盘IO低效率的使用。
发明概述
因此,公开了一种用于识别和存储表格的变化的系统和方法。数据当前的版本被存储在基础表中。基础表中每一行以前的版本被存储在版本存储器中。增量表识别基础表变化的主要关键字并且确定该改变是否为插入或删除。转换表装置存储该基础表的每一个变化。该转换表装置可以包括一个删除表和一个插入表,该删除表用于存储从基础表中删除的行,该插入表用于存储插入到基础表中的行。
当一行被提交给基础表后,恰当地为该行分配一个处理标识符(XID)和序号(SEQ)。XID是处理的唯一的标识符,在该处理中产生变化。该SEQ优选地是一个被恰当地分配给处理中产生的每一个变化的单调递增的值。版本存储器中行以前的版本可以通过基础表中行当前版本的XID和SEQ识别。
作为处理的一部分转换表可以通过识别由指令改变的行来增加。该基础表连同删除标记和插入标记被扫描。删除标记用于识别在指令执行前作为处理的一部分提交到基础表的最后的改变,而插入标记用于识别在指令的执行过程中作为处理的一部分提交到基础表的最后的改变。用存储在增量表中的删除部分过滤删除标记扫描的结果,并且用过滤的行来增加删除表。用存储在增量表中的插入部分过滤插入扫描的结果,并且用过滤行来增加插入表。
附图的简要说明
参照附图,在阅读了下面详细的说明后该说明性的实施例将被更好地理解,其中:
图1表示通用计算机系统的框图,其中可以结合本发明的情况和/或其中的部分;
图2是根据本发明一个代表性的数据库管理系统的框图;
图3a-e是根据本发明一个代表性的基础表和版本存储器的框图;
图4是根据本发明用于识别和存储变化的一个代表性方法的流程图;以及
图5是根据本发明用于扫描表的一个代表性方法的流程图。
详细说明
根据本发明当前的优选实施例,用于实现上述目标以及提供了其他有益特征的系统和方法将在下面参照前述的附图被描述。本领域的技术人员将容易地懂得在这里关于附图的描述仅仅是用于说明目的而不是以任何方式来限定本发明的范围。全部的描述中,相同的附图标记代表各图中相同的成分。
计算机环境
图1和下面的讨论用于提供一个适当处理环境的简单概要的描述,在该环境中本发明和/或它的一部分可以被执行。虽然没有要求,但本发明采用计算机可执行指令的通用文本来描述,例如程序模块,由计算机执行的,例如客户工作站或服务器。一般地,程序模块包括执行特定的任务或执行特定的抽象数据类型的例行程序,程序,对象,成分,数据结构等等。此外,将被理解的是本发明和/或它的一部分可以在其他计算机系统结构中实施,包括手持设备,多处理器系统,基于微处理器的或可编程的用电设备,网络个人计算机,小型计算机,大型计算机等等。本发明也可以在分布式处理环境中实施,在该环境中由通过通信网络连接的远程处理设备来执行任务。在分布式处理环境中,程序模块可以设置在本地和远程存储设备中。
如图1所示,一个代表性的通用计算系统包括一个传统的个人计算机120或类似部件,包括一个处理单元121,一个系统存储器122,和一个系统总线123用于将包括系统存储器的不同的系统成分连接到处理单元121。该系统总线123可以是各种类型的总线结构包括存储器总线或存储器控制器,外部总线,和使用任何总线结构变化的局域总线。该系统存储器包括只读存储器(ROM)124和随机存取存储器(RAM)125。一个基本的输入/输出系统126(BIOS),包含用于协助在个人计算机120的元件之间传递信息的基本程序,例如在启动过程中,被存储在ROM124中。
该个人计算机可以进一步包括一个用于从硬盘读出和向硬盘写入(没有示出)的硬盘驱动器127,一个用于从移动磁盘读出或向移动磁盘129写入的磁盘驱动器128,和一个用于从移动光盘读出或向移动光盘131写入的光盘驱动器130,例如CD-ROM或其他光学介质。该硬盘驱动器127,磁盘驱动器128,和光盘驱动器130分别通过硬盘驱动器接口132,磁盘驱动器接口133,和光盘驱动器接口134连接到系统总线123。该驱动器和它们相关的计算机可读介质为个人计算机120提供计算机可读指令,数据结构,程序模块和其他数据的非易失性存储器。
虽然该代表性实施例的描述在这里采用硬盘,移动磁盘129,和移动光盘131,应该理解的是计算机可兼容的能够存储数据的计算机可读介质的其他类型也可以在代表性的操作环境中使用。该介质的其他类型包括磁带,闪存卡,数字视频磁盘,柏努利盒式磁带,随机存取存储器(RAM),只读存储器(ROM),等等。
许多程序模块,包括操作系统,一个或多个应用程序136,其他程序模块137和程序数据138,可以存储在硬盘,磁盘129,光盘131,ROM124或RAM125上。用户可以通过输入设备,例如键盘140和定点设备142如鼠标,向个人计算机120中输入命令和信息。其他输入设备(没有示出)可以包括麦克风,操纵杆,游戏柄,附属磁盘,扫描仪或类似设备。这些和其他输入设备通常通过与系统总线连接的串行接口146与处理单元121连接,但是也可以通过其他接口连接,例如并行端口,游戏端口,或通用串行总线(USB)。监视器147或其他类型的显示设备也通过接口与系统总线123连接,例如视频适配器148。除了监视器147之外,个人计算机典型地包括其他外围输出设备(没有示出),例如扬声器和打印机。图1中的代表性的系统还包括一个主机适配器155,一个小型计算机系统接口(SCSI)总线156,和一个与SCSI总线156连接的外部存储器设备162。
该个人计算机120可以采用逻辑地连接到一个或多个远程计算机,例如一个远程计算机149,在网络环境中操作。该远程计算机149可以是另一个个人计算机,服务器,路由器,网络计算机,对等设备或其他普通的网络节点,并且典型地包括许多或全部相对于上述个人计算机120的元件,虽然在图1中仅示出了一个存储器设备150。图1中描述的逻辑连接包括一个局域网(LAN)151和一个广域网(WAN)152。该网络环境在办公室,企业范围的计算机网络,企业内部互联网,和因特网中是常见的。
当在局域网络环境中使用时,该个人计算机120通过网络接口或适配器153与局域网151连接。当在广域网环境中使用时,该个人计算机120典型地包括一个调制解调器154或其他用于在广域网152,例如因特网范围内建立通信的装置。该调制解调器154可以是内置的或外置的,通过串行接口146与系统总线123连接。在网络环境中,相对于个人计算机或其中的部分的程序模块的描述,可以存储在远程存储设备中。可以认识到,所示的网络连接是代表性的并且计算机之间可以使用建立通信连接的其他装置。
本发明代表性的系统和方法
一般地,数据当前的版本被存储在基础表中。基础表中每一行以前的版本被存储在版本存储器中。增量表识别基础表变化的主键并且确定该改变是否为插入或删除。转换表装置存储基础表每次产生的改变。该转换表装置可以包括一个删除表和一个插入表,该删除表用于存储从基础表中删除的行,该插入表用于存储插入到基础表中的行。
图2示出了根据本发明一个代表性的数据库管理系统(DBMS)。如图所示,DBMS200包括基础表210,版本存储器220,增量表230,以及包括删除表240和插入表242,转换表装置240和242。
数据当前的版本存储在基础表210中。正如将被理解的是,虽然只示出了一个单一的基础表210,DBMS200可以包括任何数量的附加基础表。基础表210优选地包括数据列,处理标识(XID)列和序号(SEQ)列。该数据列存储实体数据。该XID列存储每一行当前的版本所提供的处理的标识版本。该SEQ列识别处理中变化产生的顺序。该SEQ优选的是一个单调递增的值,由DBMS200自动维护。正如将被理解的是,并非DBMS200中每一个基础表都要包括XID和SEQ列。希望的是,根据本发明存储用于识别变化的基础表需要包括该XID和SEQ列。一个代表性的基础表210在下表1中示出:
表1
    顾客标识符     姓名     XID     SEQ
    101     Andy     30     1
    102     Bob     30     2
    103     30     3
    104     Dave     30     4
    105     Ed     30     5
表1包括数据列“顾客标识符”和“姓名”,用于存储有关顾客的实体数据。行101-105作为处理“30”的一部分被提供。行103是一个空记录,是被删除了的记录。因此,虽然行103作为一个占位符保留在表1中,这里没有行103相应的“姓名”数据。
版本存储器220存储基础表210中行以前的版本。版本存储器220中的行由行版本的XID和SEQ进行索引,通过该XID和SEQ来代替这些行。因此,每一个当前行的XID和SEQ值作为以前版本的指针。版本存储器中行的说明性的表格示于下面的表2中:
表2
变化的XID 变化的SEQ 顾客标识符   姓名     XID     SEQ
    30     3     103   Chris     20     3
    30     2     102   Betty     20     2
    30     1     101   Alex     20     1
    30     1     101   Adam     10     1
表2由列“变化的XID”和“变化的SEQ”进行索引,用于确定每一行的标识变化的XID和变化的SEQ的值。例如,行101当前的版本,表1中所示,被分配为XID30和SEQ1。行101第一个以前的版本,由当前的版本代替,在表2中示出具有变化的XID30和变化的SEQ1。该第一个以前的版本被分配为XID20和SEQ1,并且,因此,作为处理20的一部分被提供。行101的第二个以前的版本,由该第一个以前的版本代替,在表3中示出具有变化的XID20和变化的SEQ1。该第二个以前的版本被分配为XID10和SEQ1,并且,因此,作为处理10的一部分被提供。
基础表210和版本存储器220中的行的代表性的版本的框图在图3a-e中表示。例如,如图3a中所示,行101当前的版本存储在基础表210中。该当前的版本被分配为XID30和SEQ1,其指向存储在版本存储器220中的行的第一个以前的版本。该行的第一个以前的版本被分配为XID20和SEQ1,其指向也存储在版本存储器220中的行的第二个以前的版本。
如图3b中所示,行102当前的版本存储在基础表210中。该当前的版本被分配为XID30和SEQ2,其指向存储在版本存储器220中的行的第一个以前的版本。
如图3c中所示,行103当前的版本为一个空记录,其存储在基础表210中。该空记录是一个作为删除记录的占位符,其不包括实体数据。该空记录被分配为XID30和SEQ3,其指向存储在版本存储器220中的行的第一个以前的版本。
如图3d和3e中所示,行104和105当前的版本分别存储在基础表210中。因为该行是新插入的,在版本存储器220中没有它们以前的版本。在一个可选的实施例中,具有预定的唯一SEQ值的唯一的标记可以用于显示行是新插入的。该唯一的标记可以指示该行以前的版本没有存储在版本存储器220中。
在DBMS200损坏后不需要版本存储器220继续存在。因此,版本存储器220可以存储在DBMS200的一个暂时的数据库中。更可取的,只有当访问存取该行可以被执行的时候,行以前的版本优选地被存储,并且,因此,以前的版本从版本存储器220中周期性的删除。
版本存储器220可以根据树形结构被组织,例如,b树或b+树。优选的,用于b树的关键字是每次变化的XID和SEQ。根据b树组织的行可以根据它们的XID和SEQ值被并列删除。例如,在XID和SEQ的指定列中的具有XID和SEQ的变化可以被并列删除。行可以在处理中一个单一的DML指令执行之后或在一个完整的处理或处理组之后被删除。
可选地,版本存储器220可以使用物理行的标识符或盘地址来组织,从而识别每一行以前的版本。在该行的标识符结构中,除了XID和SEQ,优选地存储每一行以前版本的行标识符。该以前的版本优选地存储在,被称作“堆”的磁盘记录装置中。可以在指定的时期产生新堆。例如,用户可以要求每六十秒产生一个新堆。堆可以在所有用于产生存储在堆中的版本处理完成之后被删除。
另外,除了组织版本存储器220,该树结构和堆可以被用于组织基础表210。例如,如果基础表210中的行包括二进制大的目标(BLOB)数据,则该BLOB数据可以被分解成段落并被存储在相应于该行的单独的BLOB基础表中。该BLOB基础表可以根据由DBMS200维护的树结构或堆来组织。
增量表230识别基础表210中产生的变化。优选的一个代表性的增量表有两列:基础表210的主关键字列和变化列,用于指示相应的改变是否为插入或删除。
增量表230更适于识别由相应的数据操作语言(DML)指令产生的改变。例如,如果DML指令使{XID30,SEQ2}变化为{XID30,SEQ4},则相应的增量表230优选地被产生,如下表3所示:
表3
    主关键字     变化
    102     Delete
    102     Insert
    103     Delete
    104     Insert
表3包括通过{XID30,SEQ4}变化为{XID30,SEQ2}的主关键字的值并且指示相应的变化是否为插入或删除。表4指示修改后的行102,包括删除和插入。表3也显示了被删除的行103和被插入的行104。
转换表240和242存储基础表210产生的改变。删除表240存储从基础表210删除的行。一个代表性的删除表240显示在下表4中,其图示了由上述代表性的DML指令删除的行:
表4
    顾客标识符     姓名
    102     Betty
    103     Chris
插入表242存储插入到基础表210中的行。一个代表性的插入表显示在下表5中,其图示了由上述DML指令插入的行:
表5
    顾客标识符     姓名
    102     Bob
    104     Dave
转换表240和242通过识别行而增加,该识别行由作为处理的一部分的指令来改变。一般地,用删除标记和插入标记扫描基础表210。该删除标记确定在指令执行前作为处理的一部分提交到基础表210的最后的改变,而该插入标记确定在指令执行过程中提交到基础表210的最后的改变。用存储在增量表230中的删除过滤删除标记扫描的结果,并且用过滤的行增加该删除表240。用存储在增量表230中的插入过滤插入扫描的结果,并且用过滤的行增加插入表242。
用于识别该行的代表性的方法的流程图在图4中示出。在步骤410,将删除和插入标记的XID设置为处理的标识符。例如,上述代表性的指令作为处理“30”的一部分被执行,并且,因此,删除和插入标记的XID被设置为30。
在步骤412,将删除标记的SEQ设置为作为处理的一部分被提交的最后改变的SEQ。例如,在代表性的指令执行前作为处理“30”的一部分被提交的最后的改变被分配为SEQ“1”。因此,删除标记被设置为:{(XID30,SEQ1)}。
在步骤414,DBMS200执行数据操作语言(DML)指令。该指令可以用于在基础表210中插入,删除,和/或修改行。例如,上述代表性的指令为修改行102,删除行103,和插入行104。
当指令改变一个特殊行时,该行当前的版本连同存储在版本存储器220中的该行以前的版本被存储在基础表210中。当该行当前的版本被提交到基础表210后,就分配作为指向该行以前版本的指针的XID和SEQ值版本。分配给每一次改变的XID值是在步骤410设置的用于处理的XID值。该SEQ值标识在处理中产生的改变的顺序。该SEQ优选的为一个单调递增的值,该值由DBMS200自动维护。例如,分配给第一行的XID和SEQ值通过该代表性的指令改变,行102为{(XID30,SEQ2)},如上表1中所示。下一个被改变的行是行103,依次被指定为{(XID30,SEQ3)}。下一个被改变的行是行104,依次被指定为{(XID30,SEQ4)}。
在步骤416,在指令的执行过程中,插入标记的SEQ被设置为作为处理的一部分被提交的最后的改变的SEQ。例如,在指令执行过程中作为处理“30”的一部分被改变的最后的行是行104,该行被指定SEQ“4”。因此,插入标记被设置为:{(XID30,SEQ4)}。
在步骤418,用删除标记扫描基础表210。用于扫描基础表210的一个代表性的方法参照图5在下面被详细地讨论。在表2上用删除标记{(XID30,SEQ1)}执行该扫描的结果被显示在下面的表6中:
表6
    顾客标识符     姓名     XID     SEQ
    101     Andy     30     1
    102     Betty     20     2
    103     Chris     20     3
在步骤420,用存储在增量存储器230中的删除过滤删除扫描的结果,并且,在步骤422,用过滤的行增加删除表240。例如,如果用存储在表3中的删除过滤表6中的行,则删除表240将被增加,如下面的表7中所示:
表7
    顾客标识符     姓名     XID     SEQ
    102     Betty     20     2
    103     Chris     20     3
在步骤424,用插入标记扫描基础表210。用于扫描基础表210的一个代表性的方法在下面参照图5被详细地讨论。在表2上用插入标记{(XID30,SEQ4)}执行该扫描的结果被显示在下面的表8中:
表8
    顾客标识符     姓名     XID     SEQ
    101     Andy     30     1
    102     Bob     30     2
    103     30     3
    104     Dave     30     4
在步骤426,用存储在增量表230中的插入过滤插入扫描的结果,并且,在步骤428,用过滤的行增加插入表242。例如,如果用存储在表4中的插入来过滤表8中的行,则插入表242将被增加,如下面的表9中所示:
表9
    顾客标识符     姓名     XID     SEQ
    102     Bob     30     2
    104     Dave     30     4
因此,上面关于图4过程的描述确定由DML指令产生的改变并且用该改变来增加转换表240-242。该过程使这种改变能够通过用插入标记和删除标记扫描基础表210来识别。
用于扫描基础表210的一个代表性的方法的流程图显示于图5中。一般地,该扫描读取发生在标记的SEQ的同时或之前作为不同处理的一部分产生的改变和作为相同处理的一部分产生的改变。
如图5中所示,在步骤10,确定行的XID是否等于标记的XID。如果不等于,则,在步骤516,该行被读取。如果等于,则,在步骤512,确定行的SEQ是否小于或等于标记的SEQ。如果小于等于,则,在步骤516,该行被读取。如果大于,则,在步骤514,从版本存储器220中检索行以前的版本并且该方法返回步骤510。
如前面关于图4的讨论,在读取了一行之后,该行增加到扫描结果并且用存储在增量表230中的行进行过滤。如果由删除扫描读取的行仍然作为删除存在于增量表230中,则该行将被存储到删除表240中。如果由插入扫描读取的行仍然作为插入存在于增量表230中,则该行将被存储到插入表242中。上面关于图4和5的讨论可以被存储到任何存储设备中,例如,存储器或数据库。
虽然描述了本发明连同各图的优选实施例,将被理解的是,在不背离本发明的情形下可以使用其他类似的实施例或者可以修改和增加描述的实施例用以执行本发明的相同的功能。因此,本发明不受任何单一实施例的限定,但是根据所附的权利要求将更适合的解释本发明的幅度和范围。

Claims (38)

1.一种用于通过作为处理的一部分的语句识别从基础表中删除的行的方法,该方法包括:
在语句执行前识别作为处理的一部分被改变的最后一行;
设置关于该最后一行的删除标记;
用删除标记扫描基础表;以及
过滤扫描的结果。
2.如权利要求1所述的方法,其中设置关于该最后一行的删除标记包括:
将删除标记的处理标识符设置为处理的标识符;以及
将删除标记的序号设置为分配给最后一行的序号。
3.如权利要求2所述的方法,其中用删除标记扫描基础表包括:
(a)确定行的处理标识符是否等于删除标记的处理标识符;
(b)如果等于,则读取该行;
(c)如果不等于则:
确定该行的序号是否小于或等于删除标记的序号;
如果小于等于,读取该行;以及
如果大于则:
检索该行以前的版本;以及
返回步骤(a)并且继续处理该行以前的版本。
4.如权利要求3所述的方法,其中检索该行以前的版本包括从版本存储器检索该行以前的版本,通过该行的处理标识符和序号来识别版本存储器中以前的版本。
5.如权利要求1所述的方法,进一步包括用过滤的结果增加删除表。
6.一种用于通过作为处理的一部分的语句识别插入到基础表中的行的方法,该方法包括:
在语句执行过程中识别作为处理的一部分被改变的最后一行;
设置关于该最后一行的插入标记;
用插入标记扫描基础表;以及
过滤扫描的结果。
7.如权利要求6所述的方法,其中设置关于该最后一行的插入标记包括:
将插入标记的处理标识符设置为处理的标识符;以及
将插入标记的序号设置为分配给最后一行的序号。
8.如权利要求7所述的方法,其中用插入标记扫描基础表包括:
(a)确定该行的处理标识符是否等于插入标记的处理标识符;
(b)如果等于,则读取该行;
(c)如果不等于则:
确定该行的序号是否小于等于插入标记的序号;
如果小于等于,读取该行;以及
如果大于则:
检索该行以前的版本;以及
返回步骤(a)并且继续处理该行以前的版本。
9.如权利要求8所述的方法,其中检索该行以前的版本包括从版本存储器检索该行以前的版本,通过该行的处理标识符和序号来识别版本存储器中以前的版本。
10.如权利要求6所述的方法,进一步包括用过滤的结果增加插入表。
11.一种用于通过作为处理的一部分的语句识别从基础表中删除行的系统,该系统包括:
用于存储基础表、版本存储器、增量表和删除表的数据存储设备;
用于执行计算机可执行指令的处理器;以及
存储了用于执行以下步骤的计算机可执行指令的存储器:
在语句执行前识别作为处理的一部分被改变的最后一行;
设置关于该最后一行的删除标记;
用删除标记扫描基础表;以及
过滤扫描的结果。
12.如权利要求11所述的系统,其中该基础表用于存储行的当前版本。
13.如权利要求11所述的系统,其中该版本存储器用于存储行的以前的版本。
14.如权利要求11所述的系统,其中该增量表用于指示通过语句删除的行。
15.如权利要求11所述的系统,其中该删除表用于存储通过语句删除的行。
16.如权利要求11所述的系统,其中用于执行设置关于该最后一行的删除标记的步骤的计算机可执行指令包括用于执行以下步骤的计算机可执行指令:
将删除标记的处理标识符设置为处理的标识符;以及
将删除标记的序号设置为分配给最后一行的序号。
17.如权利要求16所述的系统,其中用于执行用删除标记扫描基础表的步骤的计算机可执行指令包括用于执行以下步骤的计算机可执行指令:
(a)确定该行的处理标识符是否等于删除标记的处理标识符;
(b)如果等于,则读取该行;
(c)如果不等于则:
确定该行的序号是否小于等于删除标记的序号:
如果小于等于,读取该行:以及
如果大于则:
检索该行以前的版本;以及
返回步骤(a)并且继续处理该行以前的版本。
18.如权利要求17所述的系统,其中通过该行的处理标识符和序号来识别存储在版本存储器中的该行的以前的版本。
19.如权利要求11所述的系统,其中该存储器进一步包括用过滤的结果增加删除表的计算机可执行指令。
20.一种用于通过作为处理的一部分的语句识别插入到基础表中的行的系统,该系统包括:
用于存储基础表、版本存储器、增量表和插入表的数据存储设备;
用于执行计算机可执行指令的处理器;以及
用于执行以下步骤存储了计算机可执行指令的存储器:
在执行语句的过程中识别作为处理的一部分被改变的最后一行;
设置关于该最后一行的插入标记;
用插入标记扫描基础表;以及
过滤扫描的结果。
21.如权利要求20所述的系统,其中该基础表用于存储行的当前的版本。
22.如权利要求20所述的系统,其中该版本存储器用于存储行的以前的版本。
23.如权利要求20所述的系统,其中该增量表用于指示通过语句插入的行。
24.如权利要求20所述的系统,其中该插入表用于存储通过语句插入的行。
25.如权利要求20所述的系统,其中用于执行设置关于该最后一行的插入标记的步骤的计算机可执行指令包括用于执行以下步骤的计算机可执行指令:
将插入标记的处理标识符设置为处理的标识符;以及
将插入标记的序号设置为分配给最后一行的序号。
26.如权利要求25所述的系统,其中执行用插入标记扫描基础表的步骤的计算机可执行指令包括用于执行以下步骤的计算机可执行指令:
(a)确定该行的处理标识符是否等于插入标记的处理标识符;
(b)如果等于,则读取该行;
(c)如果不等于则:
确定该行的序号是否小于等于插入标记的序号;
如果小于等于,读取该行;以及
如果大于则:
检索该行以前的版本;以及
返回步骤(a)并且继续处理该行以前的版本。
27.如权利要求26所述的系统,其中通过该行的处理标识符和序号来识别存储在版本存储器中的该行的以前的版本。
28.如权利要求20所述的系统,其中该存储器进一步包括用过滤的结果增加插入表的计算机可执行指令。
29.一种在其上存储了用于执行以下步骤的计算机可读指令的计算机可读介质:
在语句指令执行前识别作为处理的一部分被改变的最后一行;
设置关于该最后一行的删除标记;
用删除标记扫描基础表;以及
过滤扫描的结果。
30.如权利要求29所述的计算机可读介质,其中设置关于该最后一行的删除标记包括:
将删除标记的处理标识符设置为处理的标识符;以及
将删除标记的序号设置为分配给最后行的序号。
31.如权利要求30所述的计算机可读介质,其中用该删除标记扫描基础表包括:
(a)确定该行的处理标识符是否等于删除标记的处理标识符;
(b)如果等于,则读取该行;
(c)如果不等于则:
确定该行的序号是否小于等于删除标记的序号;
如果小于等于,读取该行;以及
如果大于则:
检索该行以前的版本;以及
返回步骤(a)并且继续处理该行以前的版本。
32.如权利要求31所述的计算机可读介质,其中检索该行以前的版本包括从版本存储器中检索该行以前的版本,通过该行的处理标识符和序号来识别版本存储器中该以前的版本。
33.如权利要求29所述的计算机可读介质,进一步包括用过滤的结果增加删除表的计算机可读指令。
34.一种存储了用于执行以下步骤的计算机可读指令的计算机可读介质:
在语句执行过程中识别作为处理的一部分被改变的最后一行;
设置关于该最后一行的插入标记;
用插入标记扫描基础表;以及
过滤扫描的结果;
35.如权利要求34所述的计算机可读介质,其中设置关于该最后一行的插入标记包括:
将插入标记的处理标识符设置为处理的标识符;以及
将插入标记的序号设置为分配给最后行的序号。
36.如权利要求35所述的计算机可读介质,其中用该插入标记扫描基础表包括:
(a)确定该行的处理标识符是否等于插入标记的处理标识符;
(b)如果等于,则读取该行;
(c)如果不等于则:
确定该行的序号是否小于等于插入标记的序号;
如果小于等于,读取该行;以及
如果大于则:
检索该行以前的版本;以及
返回步骤(a)并且继续处理该行以前的版本。
37.如权利要求36所述的计算机可读介质,其中检索该行以前的版本包括从版本存储器检索该行以前的版本,通过该行的处理标识符和序号来识别版本存储器中的以前的版本。
38.如权利要求34所述的计算机可读介质,进一步包括用过滤的结果增加插入表的计算机可读指令。
CNB2004100478005A 2003-05-22 2004-05-21 用于识别和存储表格变化的系统和方法 Expired - Fee Related CN100465949C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/445,095 US7333992B2 (en) 2003-05-22 2003-05-22 System and method for identifying and storing changes made to a table
US10/445,095 2003-05-22

Publications (2)

Publication Number Publication Date
CN1609851A true CN1609851A (zh) 2005-04-27
CN100465949C CN100465949C (zh) 2009-03-04

Family

ID=33098041

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100478005A Expired - Fee Related CN100465949C (zh) 2003-05-22 2004-05-21 用于识别和存储表格变化的系统和方法

Country Status (5)

Country Link
US (1) US7333992B2 (zh)
EP (1) EP1480132B1 (zh)
JP (1) JP4806168B2 (zh)
KR (1) KR101085735B1 (zh)
CN (1) CN100465949C (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7640229B1 (en) * 2003-12-15 2009-12-29 Teradata Us, Inc. Row triggers
CN100461164C (zh) 2004-03-29 2009-02-11 微软公司 用于基于版本控制的触发器的系统和方法
CA2506756C (en) * 2005-04-14 2008-08-12 Rajesh Kapur Method for preserving access to deleted and overwritten documents by means of a system recycle bin
US20060235903A1 (en) * 2005-04-14 2006-10-19 Rajesh Kapur Method and system for retrieving deleted and overwritten documents
CA2504070C (en) * 2005-04-14 2006-11-14 Computer Training Canada Ltd. Method for preserving access to deleted and overwritten documents
US7409413B2 (en) * 2005-12-21 2008-08-05 International Business Machines Corporation Detecting granular data store changes
US7756821B2 (en) * 2006-11-02 2010-07-13 Microsoft Corporation Virtual deletion in merged file system directories
US8290966B2 (en) * 2007-11-29 2012-10-16 Sap Aktiengesellschaft System and method for implementing a non-destructive tree filter
US8862617B2 (en) * 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US8615485B2 (en) * 2010-02-09 2013-12-24 Google, Inc. Method and system for managing weakly mutable data in a distributed storage system
US8886602B2 (en) 2010-02-09 2014-11-11 Google Inc. Location assignment daemon (LAD) for a distributed storage system
US8868508B2 (en) 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US9305069B2 (en) * 2010-02-09 2016-04-05 Google Inc. Method and system for uploading data into a distributed storage system
US8380659B2 (en) 2010-02-09 2013-02-19 Google Inc. Method and system for efficiently replicating data in non-relational databases
US8874523B2 (en) * 2010-02-09 2014-10-28 Google Inc. Method and system for providing efficient access to a tape storage system
US9817879B2 (en) * 2014-12-18 2017-11-14 International Business Machines Corporation Asynchronous data replication using an external buffer table
US9830558B1 (en) * 2016-05-03 2017-11-28 Sas Institute Inc. Fast training of support vector data description using sampling
US11379433B2 (en) * 2018-05-25 2022-07-05 Microsoft Technology Licensing, Llc Persistent version storage for relational database management system
CN110865829B (zh) * 2018-08-28 2024-04-16 京东科技控股股份有限公司 数据库升级方法、系统、设备及存储介质
US11138213B2 (en) * 2019-04-10 2021-10-05 Snowflake Inc. Internal resource provisioning in database systems
CN113076326A (zh) * 2021-03-25 2021-07-06 上海达梦数据库有限公司 一种大字段数据处理方法、装置、设备及存储介质
CN114510495B (zh) * 2022-04-21 2022-07-08 北京安华金和科技有限公司 一种数据库业务数据一致性处理方法和系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4425618A (en) * 1981-11-23 1984-01-10 Bell Telephone Laboratories, Incorporated Method and apparatus for introducing program changes in program-controlled systems
DE69126066T2 (de) * 1990-06-29 1997-09-25 Oracle Corp Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
JPH0540681A (ja) * 1991-08-07 1993-02-19 Nec Software Ltd データベースの前進復旧方式
US5561795A (en) * 1994-05-13 1996-10-01 Unisys Corporation Method and apparatus for audit trail logging and data base recovery
JPH09106364A (ja) * 1995-10-12 1997-04-22 Nippon Telegr & Teleph Corp <Ntt> 情報管理方法及び装置
US5729744A (en) 1996-06-10 1998-03-17 International Business Machine Corp. Method and system of enhanced versioning control of objects in a data processing system using change control information which includes reasons for changes
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
US6182086B1 (en) 1998-03-02 2001-01-30 Microsoft Corporation Client-server computer system with application recovery of server applications and client applications
US6341288B1 (en) * 1998-07-29 2002-01-22 Sybase, Inc. Database system with methodology for accessing a database from portable devices
US6275832B1 (en) * 1998-09-21 2001-08-14 International Business Machines Corporation Providing transaction undo without logging
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6397227B1 (en) * 1999-07-06 2002-05-28 Compaq Computer Corporation Database management system and method for updating specified tuple fields upon transaction rollback
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
US6339772B1 (en) * 1999-07-06 2002-01-15 Compaq Computer Corporation System and method for performing database operations on a continuous stream of tuples
US6542883B1 (en) * 2000-03-09 2003-04-01 International Business Machines Corporation Ordering relational database operations according to referential integrity constraints
CA2302981C (en) * 2000-03-29 2004-06-01 Ibm Canada Limited-Ibm Canada Limitee Online database table reorganization
US6636846B1 (en) 2000-04-28 2003-10-21 International Business Machines Corporation Method for providing a system maintained materialized functionally dependent column for a database management system
JP2002032248A (ja) * 2000-07-19 2002-01-31 Ricoh Co Ltd データベース問合せ処理におけるトランザクションの版の提供システム及び該システムにより提供された版を用いたデータベース問合せ処理システム
US6631374B1 (en) * 2000-09-29 2003-10-07 Oracle Corp. System and method for providing fine-grained temporal database access
US6829616B2 (en) * 2001-03-26 2004-12-07 International Business Machines Corporation Method, system, and program for implementing a database trigger
US7024403B2 (en) * 2001-04-27 2006-04-04 Veritas Operating Corporation Filter driver for identifying disk files by analysis of content
US7111023B2 (en) * 2001-05-24 2006-09-19 Oracle International Corporation Synchronous change data capture in a relational database
JP3772105B2 (ja) * 2001-09-21 2006-05-10 株式会社三菱東京Ufj銀行 データベース管理装置、方法、プログラム及び記録媒体
US6963878B2 (en) * 2001-09-24 2005-11-08 Microsoft Corporation Generating a focused data set from an original data set
US6874001B2 (en) 2001-10-05 2005-03-29 International Business Machines Corporation Method of maintaining data consistency in a loose transaction model
US6882993B1 (en) * 2002-01-28 2005-04-19 Oracle International Corporation Incremental refresh of materialized views with joins and aggregates after arbitrary DML operations to multiple tables
US7076508B2 (en) * 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files

Also Published As

Publication number Publication date
JP2004348744A (ja) 2004-12-09
EP1480132B1 (en) 2017-03-29
US7333992B2 (en) 2008-02-19
KR20040101077A (ko) 2004-12-02
EP1480132A3 (en) 2006-05-10
KR101085735B1 (ko) 2011-11-21
CN100465949C (zh) 2009-03-04
JP4806168B2 (ja) 2011-11-02
EP1480132A2 (en) 2004-11-24
US20040236763A1 (en) 2004-11-25

Similar Documents

Publication Publication Date Title
CN1609851A (zh) 用于识别和存储表格变化的系统和方法
CN102804168B (zh) 在数据库系统中减少存储需求的数据压缩
US7200624B2 (en) Systems and methods for versioning based triggers
US20140236906A1 (en) Elimination of duplicate objects in storage clusters
CN101067822A (zh) 用于元数据的分级存储管理的方法和系统
US20020129028A1 (en) System and method for managing file system extended attributes
CN1783072A (zh) 便于使用的数据上下文过滤
US20140344218A1 (en) Paging hierarchical data
CN112740198A (zh) 用于在数据库中提早移除墓碑记录的系统和方法
CN101039278A (zh) 数据管理方法及系统
CN1975731A (zh) 用于管理对数据库中数据的访问的系统和方法
US7519636B2 (en) Key sequenced clustered I/O in a database management system
CN1552022A (zh) 文件归档
CN101178726A (zh) 数据文件解归档的方法和系统
JP2022500723A (ja) データベースにおいてレコードを一括削除するためのシステムおよび方法
CN1773497A (zh) 用于组织计算机系统内的文件的方法和系统
CN1900935A (zh) 访问扇区数据的方法和系统
CN1275160C (zh) 一种数据库备份方法
KR101670473B1 (ko) MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법
CN1791873A (zh) 还原数据库系统中的对象和从属对象
CN101122975A (zh) 库存管理方法
CN115858471A (zh) 业务数据变更记录方法、装置、计算机设备及介质
AU2020250158B2 (en) Reducing number of queries on a relational database
CN1542653A (zh) 用于生成对关于选择对象的信息的请求的系统和方法
US7996366B1 (en) Method and system for identifying stale directories

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090304

Termination date: 20200521

CF01 Termination of patent right due to non-payment of annual fee