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

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

Info

Publication number
CN100465949C
CN100465949C CNB2004100478005A CN200410047800A CN100465949C CN 100465949 C CN100465949 C CN 100465949C CN B2004100478005 A CNB2004100478005 A CN B2004100478005A CN 200410047800 A CN200410047800 A CN 200410047800A CN 100465949 C CN100465949 C CN 100465949C
Authority
CN
China
Prior art keywords
row
version
affairs
transaction number
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.)
Expired - Fee Related
Application number
CNB2004100478005A
Other languages
English (en)
Other versions
CN1609851A (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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

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中所示,在步骤510,确定行的XID是否等于标记的XID。如果不等于,则,在步骤516,该行被读取。如果等于,则,在步骤512,确定行的SEQ是否小于或等于标记的SEQ。如果小于等于,则,在步骤516,该行被读取。如果大于,则,在步骤514,从版本存储器220中检索行以前的版本并且该方法返回步骤510。
如前面关于图4的讨论,在读取了一行之后,该行增加到扫描结果并且用存储在增量表230中的行进行过滤。如果由删除扫描读取的行仍然作为删除存在于增量表230中,则该行将被存储到删除表240中。如果由插入扫描读取的行仍然作为插入存在于增量表230中,则该行将被存储到插入表242中。上面关于图4和5的讨论可以被存储到任何存储设备中,例如,存储器或数据库。
虽然描述了本发明连同各图的优选实施例,将被理解的是,在不背离本发明的情形下可以使用其他类似的实施例或者可以修改和增加描述的实施例用以执行本发明的相同的功能。因此,本发明不受任何单一实施例的限定,但是根据所附的权利要求将更适合的解释本发明的幅度和范围。

Claims (11)

1.种至少部份由计算机实现的用于通过作为所选择的事务的一部分的数据操作语句识别从基础表中删除的行的方法,该方法包括:
检查所述基础表中的多个行的每一行以便在语句执行前识别作为事务的一部分被改变的最后一行,每一所述行具有一个行事务号和一个行序号,所述行序号用于标识该行在事务中变化产生的顺序,每一事务是所作出的变化的序列;
生成包括删除标记的扫描列表,所述删除标记包括标记事务号和标记序号,所述标记事务号被设置为基础表的所选择的事务的事务号,所述标记序号被设置为在语句执行前作为所选择的事务的一部分被改变的最后一行的序号;
所述检查还用删除标记扫描基础表中的每一行,所述删除标记响应于在语句执行前作为事务的一部分被改变的最后一行而设置,对于每一行:
(a)确定行事务号是否等于标记事务号;
(b)如果行事务号不等于标记事务号,则所述行被读取并被添加到扫描列表;
(c)如果行事务号等于标记事务号,则:
确定行序号是否小于或等于标记序号;
如果行序号小于或等于标记序号,则所述行被读取并被添加到扫描列表;以及
如果行序号不小于或等于标记序号,则从版本存储器检索该行的以前版本并且使用该行的以前版本返回步骤(a);
其中检索该行的以前版本包括从版本存储器中检索该行的以前版本,所述以前版本在版本存储器中由行事务号和行序号来标识;以及
用在增量表中存储的所标识的删除变化来过滤扫描列表中的结果;
其中所述增量表存储由所述语句作出的删除的列表;以及
把扫描列表的经过滤的结果填充到删除表中。
2.一种至少部份由计算机实现的用于通过作为所选择的事务的一部分的数据操作语句识别插入到基础表中的行的方法,该方法包括:
检查所述基础表中的多个行的每一行以便在语句执行之前识别作为事务的一部分被改变的最后一行,每一所述行具有一个行事务号和一个行序号,所述行序号用于标识该行在事务中变化产生的顺序,每一事务是所作出的变化的序列;
生成包括插入标记的扫描列表,所述插入标记包括标记事务号和标记序号,所述标记事务号被设置为基础表的所选择的事务的事务号,所述标记序号被设置为在语句执行前作为所选择的事务的一部分被改变的最后一行的序号;
所述检查还用插入标记扫描基础表中的每一行,所述插入标记响应于在语句执行期间作为事务的一部分被改变的最后一行而设置,对于每一行:
(a)确定行事务号是否等于标记事务号;
(b)如果行事务号不等于标记事务标识符,则所述行被读取并被添加到扫描列表;
(c)如果行事务号等于标记事务标识符,则:
确定行序号是否小于或等于标记序号;
如果行序号小于或等于标记序号,则所述行被读取并被添加到扫描列表;以及
如果行序号不小于或等于标记序号,则从版本存储器检索该行的以前版本并且使用该行的以前版本返回步骤(a);
其中检索该行的以前版本包括从版本存储器中检索该行的以前版本,所述以前版本在版本存储器中由行事务号和行序号来标识;以及
用在增量表中存储的所标识的插入变化来过滤扫描列表中的结果;
其中所述增量表存储由所述语句作出的插入的列表;以及
把扫描列表的经过滤的结果填充到插入表中。
3.一种用于通过作为所选择的事务的一部分的数据操作语句识别从基础表中删除的行的系统,该系统包括:
用于检查基础表的装置,所述基础表包括基础表中的多个行以便在语句执行前识别作为事务的一部分被改变的最后一行,每一所述行具有一个行事务号和一个行序号,所述行序号用于标识该行在事务中变化产生的顺序,每一事务是所作出的变化的序列;
用于生成包括删除标记的扫描列表的装置,所述删除标记包括标记事务号和标记序号,所述标记事务号被设置为基础表的所选择的事务的事务号,所述标记序号被设置为在语句执行前作为所选择的事务的一部分被改变的最后一行的序号;
所述用于检查基础表的装置还用删除标记扫描基础表中的每一行,所述删除标记响应于在语句执行前作为事务的一部分被改变的最后一行而设置,对于每一行:
(a)确定行事务号是否等于标记事务号;
(b)如果行事务号不等于标记事务号,则所述行被读取并被添加到扫描列表;
(c)如果行事务号等于标记事务号,则:
确定行序号是否小于或等于标记序号;
如果行序号小于或等于标记序号,则所述行被读取并被添加到扫描列表;以及
如果行序号不小于或等于标记序号,则从版本存储器检索该行的以前版本并且使用该行的以前版本返回步骤(a);
其中检索该行的以前版本包括从版本存储器中检索该行的以前版本,所述以前版本在版本存储器中由行事务号和行序号来标识;以及
用于用在增量表中存储的所标识的删除变化来过滤扫描列表中的结果的装置;
其中所述增量表存储由所述语句作出的删除的列表;以及
用于把扫描列表的经过滤的结果填充到删除表中的装置。
4.如权利要求3所述的系统,其中该基础表用于存储行的当前版本。
5.如权利要求3所述的系统,其中该版本存储器用于存储行的以前的版本。
6.如权利要求3所述的系统,其中所述删除表用于存储通过语句删除的行。
7.一种用于通过作为所选择的事务的一部分的数据操作语句识别插入到基础表中的行的系统,该系统包括:
用于检查基础表的装置,其检查所述基础表中的多个行的每一行以便在执行语句的过程中识别作为事务的一部分被改变的最后一行,每一所述行具有一个行事务号和一个行序号,所述行序号用于标识该行在事务中变化产生的顺序,每一事务是所作出的变化的序列;
用于生成包括插入标记的扫描列表的装置,所述插入标记包括标记事务号和标记序号,所述标记事务号被设置为基础表的所选择的事务的事务号,所述标记序号被设置为在语句执行前作为所选择的事务的一部分被改变的最后一行的序号;
所述用于检查基础表的装置还用插入标记扫描基础表中的每一行,所述插入标记响应于在语句执行期间作为事务的一部分被改变的最后一行而设置,对于每一行:
(a)确定行事务号是否等于标记事务标识符;
(b)如果行事务号不等于标记事务标识符,则所述行被读取并被添加到扫描列表;
(c)如果行事务号等于标记事务标识符,则:
确定行序号是否小于或等于标记序号;
如果行序号小于或等于标记序号,则所述行被读取并被添加到扫描列表;以及
如果行序号不小于或等于标记序号,则从版本存储器检索该行的以前版本并且使用该行的以前版本返回步骤(a);
其中检索该行的以前版本包括从版本存储器中检索该行的以前版本,所述以前版本在版本存储器中由行事务号和行序号来标识;以及
用于用在增量表中存储的所标识的插入变化来过滤扫描列表中的结果的装置;
其中所述增量表存储由所述语句作出的插入的列表;以及
用于把扫描列表的经过滤的结果填充到插入表中的装置。
8.如权利要求7所述的系统,其中该基础表用于存储行的当前的版本。
9.如权利要求7所述的系统,其中该版本存储器用于存储行的以前的版本。
10.如权利要求7所述的系统,其中所述增量表用于存储通过语句作出的变化的列表。
11.如权利要求7所述的系统,其中所述插入表用于存储通过语句插入的行。
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 CN1609851A (zh) 2005-04-27
CN100465949C true 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 (21)

* 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
US7200624B2 (en) * 2004-03-29 2007-04-03 Microsoft Corporation Systems and methods for versioning based triggers
CA2504070C (en) * 2005-04-14 2006-11-14 Computer Training Canada Ltd. Method for preserving access to deleted and overwritten documents
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
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
US8615485B2 (en) * 2010-02-09 2013-12-24 Google, Inc. Method and system for managing weakly mutable 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
US8744997B2 (en) 2010-02-09 2014-06-03 Google Inc. Pruning of blob replicas
US8874523B2 (en) * 2010-02-09 2014-10-28 Google Inc. Method and system for providing efficient access to a tape storage system
US8380659B2 (en) 2010-02-09 2013-02-19 Google Inc. Method and system for efficiently replicating data in non-relational databases
US8868508B2 (en) * 2010-02-09 2014-10-21 Google Inc. Storage of data in a distributed storage system
US8862617B2 (en) * 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed 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
CN114510495B (zh) * 2022-04-21 2022-07-08 北京安华金和科技有限公司 一种数据库业务数据一致性处理方法和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6275832B1 (en) * 1998-09-21 2001-08-14 International Business Machines Corporation Providing transaction undo without logging
US20010047360A1 (en) * 2000-03-29 2001-11-29 Huras Matthew A. Online database table reorganization
US6341288B1 (en) * 1998-07-29 2002-01-22 Sybase, Inc. Database system with methodology for accessing a database from portable devices
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US20020174102A1 (en) * 2001-04-27 2002-11-21 Kyler Daniel B. Filter driver for identifying disk files by analysis of content
US20030061193A1 (en) * 2001-09-24 2003-03-27 Anson David L.A. Generating a focused data set from an original data set
JP2003099300A (ja) * 2001-09-21 2003-04-04 Bank Of Tokyo-Mitsubishi Ltd データベース管理装置、方法、プログラム及び記録媒体

Family Cites Families (19)

* 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
US6182086B1 (en) 1998-03-02 2001-01-30 Microsoft Corporation Client-server computer system with application recovery of server applications and client applications
US6339772B1 (en) * 1999-07-06 2002-01-15 Compaq Computer Corporation System and method for performing database operations on a continuous stream of tuples
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
US6542883B1 (en) * 2000-03-09 2003-04-01 International Business Machines Corporation Ordering relational database operations according to referential integrity constraints
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
US7111023B2 (en) * 2001-05-24 2006-09-19 Oracle International Corporation Synchronous change data capture in a relational database
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US20010047360A1 (en) * 2000-03-29 2001-11-29 Huras Matthew A. Online database table reorganization
US20020174102A1 (en) * 2001-04-27 2002-11-21 Kyler Daniel B. Filter driver for identifying disk files by analysis of content
JP2003099300A (ja) * 2001-09-21 2003-04-04 Bank Of Tokyo-Mitsubishi Ltd データベース管理装置、方法、プログラム及び記録媒体
US20030061193A1 (en) * 2001-09-24 2003-03-27 Anson David L.A. Generating a focused data set from an original data set

Also Published As

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

Similar Documents

Publication Publication Date Title
CN100465949C (zh) 用于识别和存储表格变化的系统和方法
CN1477522B (zh) 管理图像文件的方法和系统
CN101167058B (zh) 用于恢复文件的设备、方法和系统
US7313572B2 (en) Attribute partitioning for user extensibility
CN104090922B (zh) 一种清理隐私数据的方法和装置
CN110442585B (zh) 数据更新方法、数据更新装置、计算机设备及存储介质
CN102024046A (zh) 数据重复性校验方法和装置及系统
CN108875077A (zh) 数据库的列存储方法、装置、服务器及存储介质
US20080120270A1 (en) Database system
US7653663B1 (en) Guaranteeing the authenticity of the data stored in the archive storage
CN103064660A (zh) 一种基于数组技术的电子合同版本控制方法
EP1591914A1 (en) Method, computer program product and device for importing a plurality of data sets into a system
CN101122975A (zh) 库存管理方法
US20070073765A1 (en) Metadata-based schema generator
CN103605479B (zh) 数据文件写入方法及系统、数据文件读取方法及系统
CN107621924A (zh) 一种基于云端清理固态硬盘数据的方法和装置
US20070294316A1 (en) Synchronization of application rules across database instances
CN109815213A (zh) 一种Append-Only数据库上删除和修改数据的方法及系统
CN115455059A (zh) 一种基于底层数据解析用户行为的方法、装置及相关介质
CN100498777C (zh) 管理电子文件系统中的列表和其它项
CN113407261A (zh) 数据配置方法、装置和计算机设备
CN112419058A (zh) 数据管理方法和装置、存储介质及电子设备
US7996366B1 (en) Method and system for identifying stale directories
US8972335B2 (en) Method and system for extracting information from electronic data sources
CN106101356A (zh) 一种手机数据销毁方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090304

Termination date: 20200521