使用最少的日志条目将数据库更改记入日志的设备和方法

文档序号:6562776阅读:153来源:国知局
专利名称:使用最少的日志条目将数据库更改记入日志的设备和方法
技术领域
一般而言,本发明涉及计算机系统,具体来说,涉及将数据库中的变化记入日志。
背景技术
已经开发了可使计算机存储大量信息的数据库系统,以便用户可以搜索和检索数据库中的特定信息。例如,保险公司可能具有包括其所有保险客户以及他们的往来帐户信息的数据库,包括支付历史、保险费量、保险单编号、保险单类型、承保范围的排除等等。数据库系统可使保险公司在其数据库中的数千乃至数百万保险客户中检索某一个保险客户的帐户信息。
数据库系统通常包括确保随着对数据库作出更改的数据库完整性的数据库管理器。数据库管理器通常将对数据库的更改记录到日志中。日志可使对数据库的更改在需要的情况下回滚。此外,日志可以用来复制数据库按对原始数据库作出记录的更改的相同顺序,对远程数据库应用记录的更改。
当对某一个记录作出更改时,现有技术已知的大多数数据库管理器将该记录中的所有字节都记录到日志中,包括该记录中的没有更改的字节。由于没有更改的记录数据在数据库日志中占用宝贵的空间与时间,因此,引入了被称为最小化的数据日志记录的较新的概念。利用最小化的数据日志,只记录一个记录的已经更改的字节,不管字段边界如何,假设记录中的在日志条目没有表示的字节未发生改变。最小化的数据日志一般比完整的数据日志可能实现好得多的性能。然而,请注意,这种性能的提高是以牺牲可用性为代价的。
由于最小化的数据日志中的日志条目只包括已经更改的字节,因此,所产生的日志条目处于压缩格式,该格式可能不再轻松地被人类或审查程序读取、理解和识别。尽管这在某些情况下不构成问题,但是,这在需要审查、调试或人类需要查看数据库更改的其他情况下可能就是比较严重的问题。为进行审查,人类审查人员或审查程序通常将更改之前的记录的完整的映像与更改之后的记录的完整的映像进行比较。如此,人类审查人员或审查程序希望在进行审查时看到完整的记录。若没有完整的记录映像,读出记录的标识(例如,John Doe的银行帐户 #12345),排列收集的数据集之中的匹配字段,以及识别字段边界变得很难进行,并且不构成友好的人机界面。由于大多数最小化的数据日志条目不包含完整的记录,甚至也不包含完整的字段,因此,所产生的编码数据不是人类可读的。为了这里的目的,术语“人类-可读的”是指这样的格式,该格式不描述更改内容的内部编码表示,而是以完整的记录布局描述更改内容的表示,没有部分地表示的字段。以此方式表示的数据可使人类审查人员或审查程序轻松地辨别发生的更改,并与使用完整的日志数据一致的方式显示。因此,最小化的数据日志一般不用于需要审查的环境中。结果,需要基于日志进行审查或偶尔进行调试的环境没有受益于由最小化的数据日志提供的性能提高。在没有办法提供可以以人类可读的形式输出的最小化的日志数据的情况下,对于使用最小化的日志数据但不能被轻松地审查的较高性能的系统,或者使用可以被审查的完整的日志数据的较低性能的系统,计算机行业不得不进行选择。当既需要高性能,又需要审查时,这些选择中的任何一个选择都不能合意。

发明内容
根据优选实施例,最小化的日志记录机制以一种格式存储最小化的日志数据,该格式允许以人类可读的形式显示和输出日志数据,审查人员可以轻松地读取和识别它们。当对某一个记录进行了更改时,不是仅写入已更改的字节,而是将已更改的每一个字段中的所有字节,以及被选择始终将记入日志的每一个字段中的所有字节都写入到日志中。这些类别中的字段没有一个不被捕获。利用所有字段中的默认数据创建默认对象。当日志条目需要以人类可读的形式输出时,读取默认对象,然后,将最小化的日志条目覆盖在默认对象上。结果是这样的对象该对象包含未更改的所有未选定的字段中的默认数据,以及已经更改的所有字段中的以及被选择始终将记入日志的所有字段中的日志数据。如此,优选实施例既提供最小化的日志数据的好处,同时又允许对日志进行审查。
如附图所说明的,根据下列对本发明的优选实施例的比较特定的说明,本发明的前面的及其他特点和优点将变得显而易见。


下面将参考附图描述本发明的优选实施例,其中,相同的符号表示相同的元素,以及图1是根据优选实施例的设备的方框图;图2是显示了现有技术中的示例数据库表中的记录的详细信息的方框图;图3是用于更新如图2所示的结构化查询语言(SQL)中的语句;图4是在应用了图3中的更新语句之后图2中的记录的方框图;图5是用于生成和存储完整的日志条目的现有技术中的方法的流程图;图6是显示了图2和4的记录以人类可读的形式存在的显示示例;图7是用于生成和存储最小化的日志条目的现有技术中的方法的流程图;图8是在应用了图3中的更新语句之后代表了对图2中的记录的更改的现有技术的最小化日志条目的方框图;图9显示了使用现有技术的最小化日志条目,无论是之前还是之后记录的表示都不是人类可读的;图10是根据优选实施例有资格变为人类可读的的最小化日志条目的方框图;图11是根据优选实施例图2中的数据库表200的默认对象的方框图;图12是使用根据优选实施例的图10中的最小化日志数据以人类可读的形式存在的图2和4的记录的显示示例;图13是根据优选实施例的用于生成和存储最小化日志数据的方法的流程图;以及图14是根据优选实施例的用于以人类可读的形式输出最小化日志数据的方法的流程图。
具体实施例方式
优选实施例以人类可读的形式提供最小化日志数据。这是通过将被更改的每一个字段中的所有数据,以及专门被选择将记入日志的每一个字段中的所有数据写入到日志中来实现的。每一个字段中的具有默认值的默认对象也被保存到日志中。当日志条目需要以人类可读的形式输出时,读取对应的默认对象,读取最小化的日志条目,并将来自最小化的日志条目的数据覆盖在默认对象上。结果是这样的记录该记录包含所有原始字段,并包括已经更改的所有字段中的以及被选择始终将记入日志的所有字段中的数据,以及没有更改的以及没有被选为记入日志的字段中的默认数据的指示。此记录是人类可读的,尽管它包含最小化的日志数据。如此,优选实施例实现了两全其美由于最小化了日志数据收集,而显著改善了性能,同时由于能够以人类可读的形式输出最小化的日志数据,而提供了对日志数据进行审查的能力。
请参看图1,计算机系统100是根据本发明的优选实施例的设备的一个合适的实现方式。计算机系统100是IBM eServer iSeries计算机系统。然而,如那些本领域普通技术人员所理解的,本发明的机制和设备同样可以应用于任何计算机系统,不管计算机系统是复杂的多用户计算设备,单用户工作站,还是嵌入式控制系统。如图1所示,计算机系统100包括一个或多个处理器110、主存储器120、大容量存储接口130、显示接口140,以及网络接口150。这些系统组件通过系统总线160连接起来。大容量存储接口130用于将诸如直接访问存储设备155之类的大容量存储设备连接到计算机系统100。直接访问存储设备155的一种特定类型是可读的和可写入的CD RW驱动器,该驱动器可以从CD RW 195中读取数据,并可以向其中存储数据。
根据优选实施例的主存储器120包含数据121、操作系统122、数据库123、最小化的日志记录机制125以及日志126。数据121表示用作向计算机系统100中的任何程序的输入或来自计算机系统100中的任何程序的输出的任何数据。操作系统122是业界已知的多任务操作系统i5/OS;然而,如那些本领域普通技术人员所理解的,本发明的精神和范围不仅限于任何一种操作系统。数据库123是任何合适的数据库,无论是当前已知的还是将来开发的。数据库123包括一个或多个记录124,记录包含数据的字段。最小化的日志记录机制125适当地在日志126中生成日志条目。图1中的单个条目被显示为128A,…,128N。最小化的日志记录机制125以一种格式将日志条目128A,…,128N存储在日志126中,该格式允许日志条目稍后可以以人类可读的形式输出。也可以通过利用存储在日志126中的条目在日志126中存储每一个对象实例的默认对象129。通过根据优选实施例存储默认对象和最小化的日志条目,通过利用对象的最小化的日志条目中的数据覆盖默认对象,可以输出人类可读的形式。结果是这样的输出该输出显示了已经更改的所有字段中的以及被选择始终将记入日志的所有字段中的实际数据,以及没有更改的所有未选定的字段中的默认数据。如此,最小化的日志记录机制125得以提供最小化的日志数据的显著的性能好处,同时仍允许轻松地对日志进行审查。
计算机系统100利用已知的虚拟寻址机制,这种机制允许计算机系统100的程序的表现如同它们仅可以访问大型单个存储实体而不是访问诸如主存储器120和DASD设备155之类的多个较小的存储实体。因此,尽管显示的数据121、操作系统122、数据库123、最小化的日志记录机制125以及日志126驻留在主存储器120上,但是,那些本领域普通技术人员将认识到,这些项目不一定都完全同时包含主存储器120中。还应注意,这里所使用的术语“存储器”一般是指计算机系统100的整个虚拟存储器,并可以包括连接到计算机系统100的其他计算机系统的虚拟存储器。
处理器110可以由一个或多个微处理器和/或集成电路构成。处理器110执行存储在主存储器120中的程序指令。主存储器120存储了处理器110可以访问的程序和数据。当计算机系统100启动时,处理器110首先执行构成了操作系统122的程序指令。操作系统122是对计算机系统100的资源进行管理的复杂的程序。这些资源中的一些资源是处理器110、主存储器120、大容量存储接口130、显示接口140,网络接口150,以及系统总线160。
虽然显示的计算机系统100只包含单一CPU和单一系统总线,但是,那些本领域普通技术人员将理解,可以使用具有多个处理器和/或多个总线的计算机系统来实施本发明。此外,在优选实施例中所使用的接口各自都包括单独的完全编程的微处理器,用于从处理器110中减少计算-密集的处理的负载。然而,如那些本领域普通技术人员所理解的,本发明同样适用于只使用I/O适配器执行类似的功能的计算机系统。
显示器接口140用于直接将一个或多个显示器165连接到计算机系统100。这些显示器165可以是非智能的(即,哑的)终端或完全可编程的工作站,用于使系统管理员和用户与计算机系统100进行通信。然而,需要注意的是,尽管提供了显示器接口140以支持与一个或多个显示器165的通信,但是,计算机系统100不一定需要显示器165,因为与用户的所有必需的交互及其他过程都可以通过网络接口150进行。
网络接口150用于跨网络170地将其他计算机系统和/或工作站(例如,图1中的175)连接到计算机系统100。不管计算机系统100如何连接到其他计算机系统和/或工作站,不管是使用现代的模拟和/或数字技术还是通过将来的某些网络机制建立网络连接170,本发明都同样适用。此外,可以使用许多不同的网络协议来实现网络。这些协议是可使计算机跨网络170进行通信的专门的计算机程序。TCP/IP(传输控制协议/因特网协议)是合适的网络协议的一个示例。
此时,值得注意的是,尽管是在完整功能的计算机系统的上下文中描述本发明的并且还将继续这样描述,但是,那些精通本技术的普通人员将认识到,本发明能够以各种形式作为程序产品进行分发,不管实际用于进行分发的承载计算机可读的信号的介质的特定类型是什么,本发明都同样适用。合适的承载计算机可读的信号的介质的示例包括可记录类型的介质,如软盘和CD RW(例如,图1的195),以及传送类型的介质,如数字和模拟通信链路。注意,首选的承载信号的介质是有形的。
现在将呈现一个简单的示例,将现有技术的用于进行日志记录的方法与优选实施例的方法进行比较,优选情况下,优选实施例的方法通过图1中的最小化的日志记录机制来执行。请参看图2,示例数据库表200包括如图所示的多个记录。第二个记录是低于数据库表200的记录210。表200包括五个字段或列,即ProdID,它是基于产品标识符的主键;Description,描述了对应于该记录的商品;Quantity,显示了清单中的商品的数量;Cost,显示了该商品的以美元标价的成本;以及Product_Picture,包含了商品的数字图像。图2显示了记录2的这些字段以及它们的值。
我们现在假设,需要对图2中的记录2执行更新操作。图3显示了一个更新操作示例,该操作代表了将商品的量减少1的SQL语句。例如,当销售了一个商品时,可以使用此更新操作。注意,图3中的where子句指定了ProdID=1001,对应于图2所示的记录210,因为ProdID是表200中的主键(即,唯一的)。在执行了图3中的更新语句之后,记录210如图4所示,Quantity字段减少1。尽管图3显示了更新语句,但是,这只是对数据库表进行更改的已知途径的一个特定示例。优选实施例可以明确地扩展到更改数据库表中的数据任何合适的途径,无论是当前已知的还是将来开发的。
现有技术中有多种不同的方式用于使通过执行图3中的更新语句所引起的记录2从图2到图4的更改被记录到日志中。考虑的第一种方法是完整的数据日志记录,由图5中的方法500代表。在完全数据日志记录上下文中,一个记录中的所有数据都被写入到日志中。如此,图4中的记录的完整的日志条目将包括图4中显示的所有数据,尽管只有Quantity字段被更改。首先生成完整的日志条目,包括图4中的所有字段和数据(步骤510)。然后,将完整的日志条目存储在日志中(步骤520)。图5所示的现有技术的用于进行完全日志记录的方法的问题是,图4中所显示的所有数据都被存储到日志中,包括产品的图片的50K JPEG数据。不用说,在表200的每一个日志条目中存储产品图片,将会导致日志要求巨大的存储空间,从而显著降低了日志的性能。当考虑在复制环境中使用日志条目时,额外的性能损失是明显的。在这样的环境中,日志条目数据跨通信信道地发送到辅助系统中,并用于更新数据库表的副本实例。当只修改Quantity字段时,在一而再,再而三地考虑传输50K JPEG数据的情况下,通信信道内的增大的开销是显而易见的。
图5中的现有技术的方法500中显示的完全日志记录的一个优点是,可以对日志进行审查,因为可以轻松地以人类可读的形式输出日志条目。图6显示了在执行图3中的更新操作之前和执行图3中的更新操作之后日志的输出。因为完整的日志数据是人类可读的形式,因此,可以对它进行审查。然而,这种审查数据的能力是以每次更改任何字段时必须存储一个记录中的所有字段而产生的显著的性能损失为代价的。
由于由完整的日志记录产生的显著的性能损失,因此,开发出了不同的方法,以只将一个记录中的已经更改的字节写入到日志中。在现有技术这被称为最小化的数据日志记录,这是在不考虑字段边界的情况下实现的。请参看图7,最小化的数据日志记录的现有技术方法700开始时生成最小化的日志条目,该日志条目只包括记录中的更改的字节(步骤710)。然后,可以将最小化的日志条目存储在日志中(步骤720)。图8显示了在应用图3中的更新之后图2中的记录的最小化的日志条目的一个实现方式示例。基于对于某些字段类型日志条目的内部数据表示不同于外部表示的事实,并且由于处理数据库表示内的可变长度数据的不同的方法,已知的最小化的日志条目的格式会复杂化。为了便于说明,简化了图8中的现有技术的日志条目示例810。除了记录的每一个更改的部分的一组数据(包括更改偏移字段、更改字段的长度,以及更改的数据字段)之外,最小化的日志条目810还包括记录编号字段。记录编号字段标识数据库表中的被更改的记录编号。更改偏移字段假设ProdID和Quantity字段为8字节整数值,Description字段为20字节,这样,从记录的开始到更改的字节的字节偏移是8+20+7=35。更改的量是从十进制1105(十六进制451)更改为十进制1104(十六进制450)。由于只更改了一个字节,因此,在最小化的日志条目中只记录了最后一个字节(十六进制50)。通过只将那些被更改的字节写入到日志条目中,现有技术的最小化的日志机制显著地改善了日志性能,并降低了空间消耗,因为未更改的数据,包括50K JPEG数据,不必写入到日志中。然而,这种性能的改善是以不能对日志进行审查为代价的。如图9所示,不能轻松地以人类可读的形式输出日志数据。人类希望看到完整的字段并轻松地识别数据库字段边界。结果,很难或无法对其中存储了最小化的日志数据的日志进行审查,特别是在被分析的日志驻留在存放了原始数据库表的机器之外的不同的机器的情况下。
优选的实施例解决了不能对最小化的日志数据进行审查的问题,同时仍能提供最小化的数据日志记录的几乎所有优点。在优选实施例中,创建了图10所示的最小化的日志条目1010。我们假设,用户或系统已经选择了ProdID字段始终将被记入日志中。用户很可能选择此字段,以便审查人员可以轻松地识别记录的标识。结果,日志条目1010包括第一部分1020,该部分记录了ProdID字段中的完整的8个字节,第二部分1030,该部分记录了Quantity字段中的完整的8个字节,因为Quantity字段已经改变。不是只存储已经更改的字节,而是在日志条目中存储两种信息类型1)具有任何更改的每一个字段中的所有数据;以及2)被选择始终将记入日志的每一个字段中的所有数据。在图2中的表200中,ProdID字段是键字段。我们假设,用户或系统指定了ProdID字段始终被记入日志中,这样审查人员可以轻松地识别该记录。结果,优选实施例的最小化的日志条目1010包括位于1020处的ProdID字段的数据,因为它选定的始终被记入日志的字段,还包括1030处的Quantity字段中的所有数据,因为它已经更改。注意,图10所示的最小化的日志条目1010包括选定的ProdID字段的8个字节的数据,并包括整个已经更改的字段Quantity的8个字节的数据,需要比图8所示的现有技术的最小化的日志条目810稍微多一些的存储空间。然而,这种数据量的轻微的增加,可使日志条目1010以支持对日志进行审查的人类可读的形式输出。
当将最小化的日志条目1010存储到日志中时,最小化的日志机制(例如,图1中的125)进行检查以查看日志是否已经包含表的当前默认对象。如果不,则将当前默认对象存储在日志中。注意,不是对于日志中的每一个单个条目都需要默认对象,而只对于条目存储在日志中的每一个对象实例才需要。如此,对于图2所示的数据库表200中的所有记录,在日志中存储了如图11所示的单个默认对象1100。如此,如果一个日志包含来自四个不同的数据库表的25,000个日志条目,则只有四个对应的默认对象需要存储在日志中。
如图11所示,默认对象1100包括所有字段中的默认数据。默认数据可以是任何合适的位模式。在优选实施例中,默认数据包括简称为“空值位图”的位模式,以指出哪些默认字段是空值,以及每一个非空值的字段的默认值。图11中的空值位图在开头四位为0,第五位为1,表示Product Picture字段是空值。默认数据在图11中被表示破折号。当最小化的日志条目1010需要以人类可读的形式输出时,读取默认对象1100,然后,将目志数据覆盖在默认对象的副本上。结果是具有所有字段的对象,如图12所示,已经更改的字段包含数据,而没有更改的字段则用默认数据以及图12所示的“收集的字段位图”的标识符表示,以指明默认数据代表没有收集其数据的字段。图12中的收集的字段位图中的五个位对应于图2中的数据库表中的五个字段,位1指出收集了对应的字段,位0指出没有收集对应的字段。图12所示的收集的字段位图12具有值10100,指出了第一和第三字段包含有效数据,而第二、第四和第五字段既没有更改也没有被标识为始终被收集的关键字段。这是区别真正的默认数据和可能与默认数据具有相同值的实际数据的简便而有效的途径。图12所示的额外的结构是“更改的字段位图”,类似地被用作通过日志条目中所产生的数据库操作确定哪些字段被更改的简便而有效的途径。位1表示对应的字段被更改,位0表示对应的字段没有更改。图12中的破折号表示仍包含默认数据,即,没有被更改的字段。请注意,图10所示的最小化的日志条目1010可以以人类可读的形式输出,如图12所示。结果,优选的实施例的最小化的日志提供了现有技术中的最小化的数据日志记录的几乎所有优点,同时仍可以进行审查。
请参看图13,根据优选实施例的方法1300显示了当写入到日志时最小化的日志记录机制(例如,图1中的125)执行的步骤。首先,创建最小化的日志条目,包括被指定始终被记入日志的所有字段以及已经更改的任意字段的所有数据(步骤1310)。此时也构建位图(例如,图12中的收集的字段位图和更改的字段位图),并包括在条目中,以指出该记录的哪些字段被记入日志中,该记录的哪些字段被更改。如果日志还没有对应于日志条目的对象的默认条目(步骤1320=NO),则利用默认数据创建对象的默认条目,默认条目存储在日志中(步骤1330)。然后,可以将最小化的日志条目存储在日志中(步骤1340)。请注意,如果日志已经包含对应于日志条目的对象的默认条目(步骤1320=YES),最小化的日志条目可以存储在日志中(步骤1340),而不创建新的默认条目。
图13中的方法1300显示了将所有选定的字段以及所有已经更改的字段存储到最小化的日志条目中。如此,用户可以指定哪些字段始终存储在日志中,而字段的其余部分有被最小化的资格。当然,在其他实施例中,某些字段可以基于它们的特征而始终存储起来。例如,根据优选实施例,键字段可以自动地始终被记入日志中。
请参看图14,根据优选实施例的方法1400显示了当以人类可读的形式输出最小化的日志条目时最小化的日志记录机制(例如,图1中的125)执行的步骤。当代表对象A的日志条目需要以人类可读的形式从日志中输出时,方法1400开始(步骤1410)。从日志中读取对象A的默认条目(步骤1420)。从日志中读取对象A的最小化的日志条目(步骤1430)。然后,将对象A最小化的日志条目覆盖到对象A的默认条目中(步骤1440)。将最小化的日志条目覆盖到对象A的默认条目中,将保留不受最小化的日志条目影响的所有字段中的默认数据,同时将最小化的日志条目中的数据写入到被选择始终将记入日志的所有字段中和所有已经更改的字段。结果是完整的数据库记录,其中包括,没有更改的所有未选定的字段中的默认数据,以及选定的字段中的以及已经更改的字段中的实际数据,如图12所示。结果,现在可以以人类可读的形式输出最小化的日志条目(步骤1450)。如方法1400所示,最小化的日志条目直到它被覆盖在对应于最小化的日志条目的默认对象上之前不是人类可读的。所产生的对象是人类可读的,然后,可以输出。
优选的实施例与现有技术相比具体很多优点。通过在最小化数据日志记录过程中在日志中仅比现有技术存储稍微多一些的数据,在优选的实施例中实现了最小化数据日志记录的几乎所有的性能好处,同时,仍可以人类可读的形式提供输出,从而允许对日志进行审查。结果是两全其美-通过最小化存储的数据获得的高性能,同时仍可以进行审查。
并非存储的日志信息的所有用户都需要全面的审查和人类可识别的功能。这种方法的其中一个优点是,可以轻松地提供两种用法。即,仅仅因为在最小化条目表示中捕获了记录更改不会要求它在向用户显示时被重新展开为人类可读的表示。优选实施例说明,以第一种格式将最小化日志条目存储在日志中,并且最小化日志条目的输出既可以采用此第一种内部格式,也可以采用人类可读形式的第二种格式。提供这两种不同的格式具有较大的灵活性。例如,可以使用第一种格式向远程系统复制数据库,从而确保了传输量缩小,而可以使用第二种人类可读的格式来进行审查或调试。两种不同的格式可使得优选实施例的最小化日志机制可以同样容易地满足人类审查人员的需求和针对复制的机器驱动的重放需求,而无需捕获和存储两个不同的实例。
优选实施例的一个优点是,仅凭日志本身就包含了显示最小化日志条目的人类可读的形式所需要的所有必需的数据。即,被审查或调试的相关的数据库表甚至可以不必存在于由审查人员用来查看日志条目的系统上。这是通过将默认对象也存储在日志中来实现的。这使得日志能够独立地显示日志条目。结果,日志可以保存到介质上或远程发送到辅助系统中,保证日志包含完整的审查记录。这在可以轻松地存档日志或将其传输到第二系统以便进行分析的审查环境中特别有吸引力。
那些本领域普通技术人员将理解,在本发明范围内许多变体也是可以的。如此,虽然是参考优选实施例显示和描述本发明的,但是,那些本领域普通技术人员将理解,在不偏离本发明的精神和范围的情况下,可以进行各种修改。
权利要求
1.一种设备,包括至少一个处理器;连接到至少一个处理器的存储器;驻留在存储器中的数据库,所述数据库包括多个记录;以及驻留在存储器中的并由至少一个处理器执行的日志记录机制,当数据库中的某一个记录更改时,所述日志记录机制在日志中存储一个条目,所述条目包括来自所述记录中的已经更改的所有字段的所有数据,所述条目包括来自始终将记入日志的任何选定的字段的所有数据,所述条目排除所述记录中的没有更改的所有未选定的字段的所有数据。
2.根据权利要求1所述的设备,其中,选定的字段是由用户选择的。
3.根据权利要求1所述的设备,其中,选定的字段是通过指定类型来选择的,其中,指定的类型的所有字段都包括在选定的字段中。
4.根据权利要求1所述的设备,其中,日志记录机制确定对应于所述条目的默认对象是否已经存储在日志中,如果不,则将对应于所述条目的默认对象存储在日志中。
5.根据权利要求4所述的设备,其中,默认对象包括所述对象中的每一个字段的默认数据。
6.根据权利要求4所述的设备,其中,所述条目通过下列方式被日志记录机制以人类可读的形式输出日志记录机制读取默认对象,读取所述条目,将来自所述条目的数据覆盖在默认对象上,并输出被覆盖的对象。
7.根据权利要求6所述的设备,其中,人类可读的形式被显示给用户,其中,所有选定的字段以及所有已更改的字段的数据都显示给用户,其中,默认数据在人类可读的形式的显示中被表示为没有变化的数据。
8.根据权利要求4所述的设备,其中,所述条目包括收集的字段位图,所述位图指出所述条目中的哪些字段被收集,所述条目中的哪些字段没有被收集,还包括更改的字段位图,所述位图指出所述条目中的哪些字段被更改,以及所述条目中的哪些字段没有更改。
9.一种计算机实现的用于将对数据库中的某一个记录的更改存储到日志中的一个条目的方法,所述方法包括下列步骤生成所述条目,所述条目包括来自所述记录中的已经更改的所有字段的所有数据,所述条目包括来自始终将记入日志的任何选定的字段的所有数据,所述条目排除所述记录中的没有更改的所有未选定的字段的所有数据;以及将所述条目存储在日志中。
10.根据权利要求9所述的方法,其中,选定的字段是由用户选择的。
11.根据权利要求9所述的方法,其中,选定的字段是通过指定类型来选择的,其中,指定的类型的所有字段都包括在选定的字段中。
12.根据权利要求9所述的方法,进一步包括下列步骤确定对应于所述条目的默认对象是否已经存储在日志中;以及如果对应于所述条目的默认对象还没有存储在日志中,则将对应于所述条目的默认对象存储在日志中。
13.根据权利要求12所述的方法,其中,默认对象包括所述对象中的每一个字段的默认数据。
14.根据权利要求12所述的方法,进一步包括通过执行下列步骤来以人类可读的形式输出所述条目的步骤读取默认对象;读取所述条目;将来自所述条目的数据覆盖在默认对象上;以及输出被覆盖的对象。
15.根据权利要求14所述的方法,进一步包括以人类可读的形式向用户显示的步骤,其中,所有选定的字段以及所有已更改的字段的数据都显示给用户,其中,默认数据在人类可读的形式的显示中被表示为没有变化的数据。
全文摘要
公开了使用最少的日志条目记录数据库更改的设备和方法。最小化的日志记录机制以一种格式存储最小化的日志数据,该格式允许以人类可读的形式显示和输出日志数据。当对某一个记录进行了更改时,不是仅写入已更改的字节,而是将已更改的每一个字段中的所有字节,以及被选择始终将记入日志的每一个字段中的所有字节都写入到日志中。利用所有字段中的默认数据创建默认对象。当日志条目需要以人类可读的形式输出时,读取默认对象,然后,将最小化的日志条目覆盖在默认对象上。结果是这样的对象该对象包含未更改的所有未选定的字段中的默认数据,以及已经更改的所有字段中的以及被选择将始终记入日志的所有字段中的日志数据。
文档编号G06F11/14GK1975728SQ20061014469
公开日2007年6月6日 申请日期2006年11月14日 优先权日2005年12月1日
发明者亚当·T.·斯达尔曼, 拉里·W.·扬格伦 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1