一种日志的记录方法、日志的恢复方法及日志管理器的制造方法

文档序号:6527070阅读:135来源:国知局
一种日志的记录方法、日志的恢复方法及日志管理器的制造方法
【专利摘要】本发明实施例提供一种日志的记录方法、日志的恢复方法及日志管理器,涉及数据压缩领域,用于解决日志文件的数据量很大,导致占用大量磁盘IO资源的问题。所述日志的记录方法包括:日志管理器获取修改操作之后的第一元组数据;将所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配;若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;将所述第一元组数据中除所述第一数据串之外的子数据、以及各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。本发明实施例适用于进行日志记录的情景。
【专利说明】—种日志的记录方法、日志的恢复方法及日志管理器
【技术领域】
[0001]本发明涉及数据压缩领域,尤其涉及一种日志的记录方法、日志的恢复方法及日志管理器。
【背景技术】
[0002]如图1所示,在数据库系统中,日志模块包括日志管理器和日志文件两部分,当数据库系统出现故障之后,数据库系统通过使用日志模块来重建对数据库所做的更新过程,从而保证数据库的一致性。
[0003]现有技术中,通常将修改操作之后的元组数据存储在日志文件中,在系统需要进行恢复时,日志管理器直接从日志文件中读取修改操作之后的元组数据,然后将修改操作之后的元组数据通过缓冲区重新写入数据文件,在现有的方案中,当修改(update)操作比较频繁,或者修改操作只更改元组数据的部分属性的情况下,日志文件中会存储大量的重复冗余数据,使得日志文件的数据量很大,导致占用大量磁盘IO资源。

【发明内容】

[0004]本发明的实施例提供一种日志的记录方法、日志的恢复方法及日志管理器,用于解决日志文件的数据量很大,导致占用大量磁盘IO资源的问题。
[0005]为达到上述目的,本发明的实施例采用如下技术方案:
[0006]一方面,提供一种日志的记录方法,所述方法包括:
[0007]日志管理器获取修改操作之后的第一元组数据,所述第一元组数据包括多个子数据;
[0008]将所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配;
[0009]若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;所述数据串包括至少两个连续的子数据;
[0010]将所述第一元组数据中除所述第一数据串之外的子数据、以及各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。
[0011 ] 在第一方面的第一种可能的实现方式中,在将所述第一元组数据与修改操作之前的第二元组数据进行数据匹配之前,所述方法还包括:
[0012]从事务管理器获取第二元组数据的存储地址,并按照所述第二元组数据的存储地址获取所述第二元组数据。
[0013]在第一方面的第一种可能的实现方式中,还提供了第一方面的第二种可能的实现方式,在所述生成所述修改操作的日志记录之后,所述方法还包括:
[0014]设置所述日志记录对应的结构信息,所述结构信息包括:控制字符;所述控制字符中的控制位依次表示所述日志记录中的数据是所述位置信息还是所述第一元组数据中除所述第一数据串之外的一个子数据;[0015]将所述日志记录、所述结构信息和所述第二元组数据的存储地址存储在日志文件中。
[0016]在第一方面的第二种可能的实现方式中,还提供了第一方面的第三种可能的实现方式,所述结构信息还包括:头部信息,所述头部信息包括所述日志记录的长度信息。
[0017]在第一方面或第一方面的前三种任一可能的实现方式中,还提供了第一方面的第四种可能的实现方式,所述将所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配,具体包括:
[0018]将所述第一元组数据中的子数据按照正序或倒序方式依次与所述第二元组数据全部或部分子数据进行数据匹配。
[0019]在第一方面或第一方面的前三种任一可能的实现方式中,还提供了第一方面的第五种可能的实现方式,将所述第一元组数据中除所述第一数据串之外的子数据、以及各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录,具体包括:
[0020]按照所述进行数据匹配的顺序,依次排列各个所述位置信息和所述第一元组数据中除所述第一数据串之外的各个子数据,得到所述修改操作的日志记录,其中,所述位置信息占用第一预定数目的字节;所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
[0021]在第一方面或第一方面的前三种任一可能的实现方式中,还提供了第一方面的第五种可能的实现方式,所述位置信息包括:在所述第二元组数据中的起始位置和所述第二数据串的长度;或者,在所述第二元组数据中的起始位置和结束位置;或者,在所述第二元组数据中的结束位置和所述第二数据串的长度。
[0022]第二方面,提供一种日志管理器,所述日志管理器包括:第一获取单元、计算单元和第一生成单元;
[0023]所述第一获取单元,用于获取修改操作之后的第一元组数据,所述第一元组数据包括多个子数据;
[0024]所述计算单元,用于将所述第一获取单元所获取的所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配;若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;所述数据串包括至少两个连续的子数据;
[0025]所述第一生成单元,用于将所述第一获取单元所获取的所述第一元组数据中除所述第一数据串之外的子数据、以及所述计算单元所得到的各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。
[0026]在第二方面的第一种可能的实现方式中,所述日志管理器还包括:第二获取单元;
[0027]所述第二获取单元用于从事务管理器获取第二元组数据的存储地址,并按照所述第二元组数据的存储地址获取所述第二元组数据。
[0028]在第二方面的第一种可能的实现方式中,还提供了第二方面的第二种可能的实现方式,所述日志管理器还包括:设置单元和存储单元;
[0029]所述设置单元,用于设置所述第一生成单元所生成的日志记录对应的结构信息,所述结构信息包括:控制字符;所述控制字符中的控制位依次表示所述日志记录中的数据是所述位置信息还是所述第一元组数据中除所述第一数据串之外的一个子数据;
[0030]所述存储单元,用于将所述第一生成单元所生成的所述日志记录、所述设置单元所设置的所述结构信息和第二获取单元所获取的所述第二元组数据的存储地址存储在日志文件中。
[0031]在第二方面的第二种可能的实现方式中,还提供了第二方面的第三种可能的实现方式,所述结构信息还包括:头部信息,所述头部信息包括所述日志记录的长度信息。
[0032]在第二方面或第二方面的前三种任一可能的实现方式中,还提供了第二方面的第四种可能的实现方式,所述计算单元具体用于将所述第一获取单元所获取的所述第一元组数据中的子数据按照正序或倒序方式依次与所述第二元组数据全部或部分子数据进行数据匹配。
[0033]在第二方面或第二方面的前三种任一可能的实现方式中,还提供了第二方面的第五种可能的实现方式,所述第一生成单元具体用于按照所述进行数据匹配的顺序,依次排列所述计算单元所得到的各个所述位置信息和所述第一获取单元所获取的所述第一元组数据中除所述第一数据串之外的各个子数据,得到所述修改操作的日志记录,其中,所述位置信息占用第一预定数目的字节;所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
[0034]在第二方面或第二方面的前三种任一可能的实现方式中,还提供了第二方面的第五种可能的实现方式,所述位置信息包括:在所述第二元组数据中的起始位置和所述第二数据串的长度;或者,在所述第二元组数据中的起始位置和结束位置;或者,在所述第二元组数据中的结束位置和所述第二数据串的长度。
[0035]本发明提供了一种日志的记录方法和日志管理器,通过将第一元组数据与第二元组数据进行数据匹配,在存在第一数据串与所述第二元组数据中的第二数据串相同的情况下,获取所述第二数据串在所述第二元组数据中的位置信息,也就是将相同数据串压缩为位置信息的方式,相对于现有技术中,将修改操作之后的第一元组数据确定为日志记录的方式,本发明实施例充分利用修改操作之前的数据与修改操作之后的数据的高度相关性,将相同的数据串进行压缩,这样降低了日志文件中的数据量,从而节省了 IO资源。
[0036]第三方面,提供一种日志的恢复方法,所述方法包括:
[0037]日志管理器获取修改操作的日志记录和所述日志记录对应的结构信息,所述结构信息包括控制字符;所述日志记录包括第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串在所述第二元组数据中的位置信息,所述第一数据串与所述第二元组数据中的第二数据串相同;所述第二元组数据为修改操作之前的元组数据;所述第一元组数据为修改操作之后的元组数据;
[0038]当所述控制字符中的控制位表示所述日志记录中的数据为所述位置信息时,从所述日志记录中获取所述位置信息,并从所述第二元组数据中获取所述位置信息指示的第二数据串;
[0039]当所述控制字符中的控制位表示所述日志记录中的数据不是位置信息时,从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据;
[0040]按照控制字符的各个控制位的顺序,将所述第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串生成第一元组数据。
[0041]在第三方面的第一种可能的实现方式中,在从所述第二元组数据中获取所述位置信息指示的第二数据串之前,所述方法还包括:
[0042]日志管理器获取第二元组数据的存储地址,并根据所述第二元组数据的存储地址获取所述第二元组数据。
[0043]在第三方面或第三方面的第一种可能的实现方式中,还提供了第三方面的第二种可能的实现方式,所述位置信息占用第一预定数目的字节,所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
[0044]第四方面,提供一种日志管理器,所述日志管理器包括:第三获取单元、第四获取单元、第五获取单元和第二生成单元;
[0045]所述第三获取单元,用于从日志文件中获取修改操作的日志记录和所述日志记录对应的结构信息,所述结构信息包括控制字符;所述日志记录包括第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串在所述第二元组数据中的位置信息,所述第一数据串与所述第二元组数据中的第二数据串相同;所述第二元组数据为修改操作之前的元组数据;所述第一元组数据为修改操作之后的元组数据;
[0046]所述第四获取单元,用于当所述控制字符中的控制位表示所述第三获取单元所获取的所述日志记录中的数据为所述位置信息时,从所述日志记录中获取所述位置信息,并从所述第二元组数据中获取所述位置信息指示的第二数据串;
[0047]所述第五获取单元,用于当所述控制字符中的控制位表示所述第三获取单元所获取的所述日志记录中的数据不是位置信息时,从所述第三获取单元所获取的所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据;
[0048]所述第二生成单元,用于按照控制字符的各个控制位的顺序,将所述第五获取单元所获取的所述第一元组数据中除所述第一数据串之外的子数据、以及所述第四获取单元所获取的各个第二数据串生成第一元组数据。
[0049]在第四方面的第一种可能的实现方式中,所述日志管理器还包括:第六获取单元;
[0050]所述第六获取单元用于从日志文件中获取第二元组数据的存储地址,并根据所述第二元组数据的存储地址获取所述第二元组数据。
[0051]在第四方面或第四方面的第一种可能的实现方式中,还提供了第四方面的第二种可能的实现方式,所述位置信息占用第一预定数目的字节,所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
[0052]本发明实施例还提供一种日志的恢复方法及日志管理器,通过读取控制字节中相应的控制位获取所述位置信息指示的第二数据串,和从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据,再将除所述第一数据串之外的子数据、以及各个第二数据串生成第一元组数据,实现根据第二元组数据和日志记录恢复出第一元组数据,进一步通过日志管理器将数据文件中的元组数据更新为所述第一元组数据元组,从而实现了恢复数据库系统。
【专利附图】

【附图说明】[0053]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0054]图1为本发明实施例提供的一种数据库系统结构示意图;
[0055]图2为本发明实施例提供的一种日志的记录方法;
[0056]图3为本发明实施例提供的另一种日志的记录方法;
[0057]图4为本发明实施例提供的一种编码过程的示意图;
[0058]图5为本发明实施例提供的一种编码数据的结构示意图;
[0059]图6为本发明实施例提供的一种日志的恢复方法;
[0060]图7为本发明实施例提供的一种解码过程的示意图;
[0061]图8为本发明实施例提供的一种日志管理器;
[0062]图9为本发明实施例提供的另一种日志管理器。
【具体实施方式】
[0063]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064]为了方便理解本发明实施例,下面结合附图和实施例对本发明作详细说明。
[0065]实施例一
[0066]本发明实施例一种日志的记录方法,如图2所示,所述方法包括以下步骤101?104,该方法的执行主体为日志管理器。
[0067]101、日志管理器获取修改操作之后的第一元组数据,所述第一元组数据包括多个子数据。
[0068]102、将所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配。
[0069]103、若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;所述数据串包括至少两个连续的子数据。
[0070]104、将所述第一元组数据中除所述第一数据串之外的子数据、以及各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。
[0071]本发明提供了一种日志的记录方法,通过将第一元组数据与第二元组数据进行数据匹配,在存在第一数据串与所述第二元组数据中的第二数据串相同的情况下,获取所述第二数据串在所述第二元组数据中的位置信息,也就是将相同数据串压缩为位置信息的方式,相对于现有技术中,将修改操作之后的第一元组数据确定为日志记录的方式,本发明实施例充分利用修改操作之前的数据与修改操作之后的数据的高度相关性,将相同的数据串进行压缩,这样降低了日志文件中的数据量,从而节省了 IO资源。
[0072]实施例二
[0073]本发明实施例提供一种日志的记录方法,如图3所示,所述方法包括以下步骤201-206。该方法的执行主体为日志管理器。
[0074]201、日志管理器从事务管理器获取第二元组数据的存储地址,并按照所述第二元组数据的存储地址获取所述第二元组数据;在本发明中,第二元组数据为修改操作之前的元组数据,第一元组数据为修改操作之后的元组数据,在本发明实施例中并不限定所修改的日志的类型,但是本发明中修改操作之前的元组数据和修改操作之后的元组数据是以二进制流方式进行增量的计算。
[0075]202、获取修改操作之后的第一元组数据,所述第一元组数据包括多个子数据。
[0076]203、将所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配。
[0077]在实现步骤203的过程中,可选的,将所述第一元组数据中的子数据按照正序或倒序方式依次与所述第二元组数据全部或部分子数据进行数据匹配。例如,从第一元组数据中第一个子数据开始,依次与第二元组数据中的各个子数据进行匹配,或者,从第一元组数据中最后一个子数据开始,依次与第二元组数据中的各个子数据进行匹配,或者,从第一元组数据中第一个子数据开始,与第二元组数据中的固定长度范围的子数据进行匹配。在实现匹配的过程中,可以将第二元组数据构建为字典的方式,还可以将第二元组数据构建为查找树等方式,本发明实施例中并不限定匹配过程中所采用的具体实现算法。
[0078]204、若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;所述数据串包括至少两个连续的子数据。如图4所示,在所述第一元组数据10中存在第一数据串11,第一数据串12和第一数据串13的情况下,获取与第一数据串11相同的所述第二数据串21在所述第二元组数据20中的位置信息31,获取与第一数据串12相同的所述第二数据串22在所述第二元组数据20中的位置信息32,获取与第一数据串13相同的所述第二数据串22在所述第二元组数据20中的位置信息32。
[0079]在本发明实施例中,将除所述第一数据串之外的每个子数据确定为增加的子数据。如图4中,日志记录30中包括多个增加的子数据。
[0080]可选的,所述位置信息包括:在所述第二元组数据中的起始位置和所述第二数据串的长度;或者,在所述第二元组数据中的起始位置和结束位置;或者,在所述第二元组数据中的结束位置和所述第二数据串的长度。
[0081]205、将所述第一元组数据中除所述第一数据串之外的子数据、以及各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。
[0082]在实现步骤205的过程中,可选的,按照所述进行数据匹配的顺序,依次排列各个所述位置信息和所述第一元组数据中除所述第一数据串之外的各个子数据,得到所述修改操作的日志记录,其中,所述位置信息占用第一预定数目的字节;所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。在该方式为一种优选的实施方式,将位置信息的长度设置为固定长度,将第一元组数据中每一个非第一数据串的子数据的长度也设置为固定长度,这种方式便于后续根据控制位恢复第一元组数据。当然在还可以采用其它方式,例如,将第一元组数据中每次增加的子数据串直接生成日志记录,将增加的子数据串的长度存储在预定位置,在后续恢复第一元组数据时根据预定位置的长度读取增加的子数据串。
[0083]又一示例性的,修改操作的元组数据有两列,属性分别为timestamp, varchar。[0084]修改操作之前的第二元组数据为2013-12-10-20:47,abcedfghi jklmnopqr。
[0085]修改操作之后第一元组数据为2013-12-10-20:50,abcedfghi jklmnopqr。
[0086]则匹配结果为:〈0,14>50〈17,18>。其中,〈0,14>为第二数据串在第二元组数据中的位置信息,50为所述第一元组数据中除所述第一数据串之外的子数据,〈17,18>为第二数据串在第二元组数据中的位置信息。在本示例中,位置信息包括所述第二数据串在所述第二元组数据中的起始位置和长度。
[0087]206、设置所述日志记录对应的结构信息,所述结构信息包括:控制字符;所述控制字符中的控制位依次表示所述日志记录中的数据是否为所述位置信息。
[0088]在本发明所有实施例中,将第一元组数据中除所述第一数据串之外的每个子数据确定为增加的子数据。
[0089]如图5所示,控制字符为10101000,当控制位为I时表示所述日志记录中的数据为
所述位置信息;所述日志记录中所记录的内容依次为第一预定数目的字节的位置信息、第二预定数目的字节的增加的子数据、第一预定数目的字节的位置信息、第二预定数目的字节的增加的子数据、第一预定数目的字节的位置信息、第二预定数目的字节的增加的子数据、第二预定数目的字节的增加的子数据、第二预定数目的字节的增加的子数据。
[0090]可见,通过设置控制字符以便获知下一个字节的数据是位置信息还是一个增加的子数据。
[0091]207、将所述日志记录、所述结构信息和所述第二元组数据的存储地址存储在日志文件中,以便在需要进行数据库系统恢复时,将日志记录对应的第一元组进行恢复。
[0092]可选的,所述结构信息还包括:头部信息,所述头部信息包括所述日志记录的长度信息。所述日志记录的长度信息用于对恢复修改操作之后的元组数据的长度校验。
[0093]本发明提供了一种日志的记录方法,通过将第一元组数据与第二元组数据进行数据匹配,在存在第一数据串与所述第二元组数据中的第二数据串相同的情况下,获取所述第二数据串在所述第二元组数据中的位置信息,也就是将相同数据串压缩为位置信息的方式,相对于现有技术中,将修改操作之后的第一元组数据确定为日志记录的方式,本发明实施例充分利用修改操作之前的数据与修改操作之后的数据的高度相关性,将相同的数据串进行压缩,这样降低了日志文件中的数据量,从而节省了 IO资源。
[0094]实施例三
[0095]本发明实施例提供一种日志的恢复方法,在上述日志的记录方法之后,本发明实施例中提供的恢复方法,适用于在修改操作之后日志文件中记录了修改操作产生的第一元组数据对应的日志记录,但是数据库系统发生异常还没有完成数据文件中的元组数据的更新,该方法的执行主体为日志管理器。所述方法包括:
[0096]301、日志管理器获取第二元组数据的存储地址,并根据所述第二元组数据的存储地址获取所述第二元组数据,所述第二元组数据为修改操作之前的元组数据。
[0097]302、日志管理器获取修改操作的日志记录和所述日志记录对应的结构信息,所述结构信息包括控制字符;所述日志记录包括第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串在所述第二元组数据中的位置信息,所述第一数据串与所述第二元组数据中的第二数据串相同;所述第一元组数据为修改操作之后的元组数据。
[0098]303、判断所述控制字符中的控制位表示所述日志记录中的数据是否为位置信息;在判断结果为是的情况下,执行以下步骤304,在判断结果为否的情况下,执行以下步骤305 ;
[0099]304、当所述控制字符中的控制位表示所述日志记录中的数据为所述位置信息时,从所述日志记录中获取所述位置信息,并从所述第二元组数据中获取所述位置信息指示的
第二数据串。
[0100]305、当所述控制字符中的控制位表示所述日志记录中的数据不是位置信息时,从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据。
[0101]可选的,所述位置信息占用第一预定数目的字节,所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。在实现步骤305的过程中,具体为从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的一个子数据,该子数据的长度为第二预定数目的字节。可选的,第二预定数目的字节为I个字节。
[0102]306、按照控制字符的各个控制位的顺序,将除所述第一数据串之外的子数据、以及各个第二数据串生成第一元组数据。
[0103]如图7所示,在根据日志记录30和第二元组数据20获取第一元组数据10的过程中,当控制字符指示日志记录中的字符为位置信息时,根据位置信息例如〈0,14>,获取从第二元组数据O位置开始的14个字符长度的数据,也就是第二元组数据中的第二数据串21 ;同样,根据位置信息例如〈16,3>,获取从第二元组数据16位置开始的3个字符长度的数据,也就是第二元组数据中的第二数据串22 ;当控制字符指示日志记录中的字符不为位置信息时,从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据也就是增加的子数据31、增加的子数据32、增加的子数据33。根据控制字符各个控制位指示的顺序,得到第一元组数据10。
[0104]本发明实施例提供一种日志的恢复方法,通过读取控制字节中相应的控制位获取所述位置信息指示的第二数据串,和从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据,再将除所述第一数据串之外的子数据、以及各个第二数据串生成第一元组数据,实现根据第二元组数据和日志记录恢复出第一元组数据,进一步通过日志管理器将数据文件中的元组数据更新为所述第一元组数据元组,从而实现了恢复数据库系统。
[0105]实施例四
[0106]本发明实施例提供一种日志管理器1000,如图8所示,所述日志管理器1000包括:第一获取单元1001、计算单元1002和第一生成单元1003。
[0107]所述第一获取单元1001,用于获取修改操作之后的第一元组数据,所述第一元组数据包括多个子数据。
[0108]所述计算单元1002,用于将所述第一获取单元1001所获取的所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配;若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;所述数据串包括至少两个连续的子数据。
[0109]可选的,所述计算单元1002具体用于将所述第一获取单元1001所获取的所述第一元组数据中的子数据按照正序或倒序方式依次与所述第二元组数据全部或部分子数据进行数据匹配。在实现匹配的过程中,可以将第二元组数据构建为字典的方式,还可以将第二元组数据构建为查找树等方式,本发明实施例中并不限定匹配过程中所采用的具体实现算法。
[0110]所述第一生成单元1003,用于将所述第一获取单元1001所获取的所述第一元组数据中除所述第一数据串之外的子数据、以及所述计算单元1002所得到的各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。
[0111]可选的,所述第一生成单元1003具体用于按照所述进行数据匹配的顺序,依次排列所述计算单元1002所得到的各个所述位置信息和所述第一获取单元1001所获取的所述第一元组数据中除所述第一数据串之外的各个子数据,得到所述修改操作的日志记录,其中,所述位置信息占用第一预定数目的字节;所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
[0112]优选的,所述日志管理器1000还包括:第二获取单元1004。
[0113]所述第二获取单元1004用于从事务管理器获取第二元组数据的存储地址,并按照所述第二元组数据的存储地址获取所述第二元组数据。
[0114]优选的,所述日志管理器1000还包括:设置单元1005和存储单元1006。
[0115]所述设置单元1005,用于设置所述第一生成单元1003所生成的日志记录对应的结构信息,所述结构信息包括:控制字符;所述控制字符中的控制位依次表示所述日志记录中的数据是所述位置信息还是所述第一元组数据中除所述第一数据串之外的一个子数据;
[0116]所述存储单元1006,用于将所述第一生成单元1003所生成的所述日志记录、所述设置单元1005所设置的所述结构信息和第二获取单元1004所获取的所述第二元组数据的存储地址存储在日志文件中。
[0117]可选的,所述结构信息还包括:头部信息,所述头部信息包括所述日志记录的长度信息。
[0118]可选的,所述位置信息包括:在所述第二元组数据中的起始位置和所述第二数据串的长度;或者,在所述第二元组数据中的起始位置和结束位置;或者,在所述第二元组数据中的结束位置和所述第二数据串的长度。所述日志记录的长度信息用于在恢复日志之后的长度校验。
[0119]本发明提供了一种日志管理器,通过计算单元将第一元组数据与第二元组数据进行数据匹配,在存在第一数据串与所述第二元组数据中的第二数据串相同的情况下,获取所述第二数据串在所述第二元组数据中的位置信息,也就是将相同数据串压缩为位置信息的方式,相对于现有技术中,将修改操作之后的第一元组数据确定为日志记录的方式,本发明实施例充分利用修改操作之前的数据与修改操作之后的数据的高度相关性,将相同的数据串进行压缩,这样降低了日志文件中的数据量,从而节省了 IO资源。
[0120]实施例五
[0121 ] 本发明实施例提供一种日志管理器2000,如图9所示,所述日志管理器2000包括:第三获取单元2001、第四获取单元2002、第五获取单元2003和第二生成单元2004 ;
[0122] 所述第三获取单元2001,用于从日志文件中获取修改操作的日志记录和所述日志记录对应的结构信息,所述结构信息包括控制字符;所述日志记录包括第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串在所述第二元组数据中的位置信息,所述第一数据串与所述第二元组数据中的第二数据串相同;所述第二元组数据为修改操作之前的元组数据;所述第一元组数据为修改操作之后的元组数据;
[0123]所述第四获取单元2002,用于当所述控制字符中的控制位表示所述第三获取单元2001所获取的所述日志记录中的数据为所述位置信息时,从所述日志记录中获取所述位置信息,并从所述第二元组数据中获取所述位置信息指示的第二数据串;
[0124]所述第五获取单元2003,用于当所述控制字符中的控制位表示所述第三获取单元2001所获取的所述日志记录中的数据不是位置信息时,从所述第三获取单元2001所获取的所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据;
[0125]所述第二生成单元2004,用于按照控制字符的各个控制位的顺序,将所述第五获取单元2003所获取的所述第一元组数据中除所述第一数据串之外的子数据、以及所述第四获取单元2002所获取的各个第二数据串生成第一元组数据。
[0126]优选的,所述日志管理器2000还包括:第六获取单元2005 ;
[0127]所述第六获取单元2005用于从日志文件中获取第二元组数据的存储地址,并根据所述第二元组数据的存储地址获取所述第二元组数据。
[0128]优选的,所述位置信息占用第一预定数目的字节,所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
[0129]本发明实施例提供一种日志管理器,通过第四获取单元读取控制字节中相应的控制位获取所述位置信息指示的第二数据串,和第五获取单元从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据,再通过第二生成单元将除所述第一数据串之外的子数据、以及各个第二数据串生成第一元组数据,实现根据第二元组数据和日志记录恢复出第一元组数据,进一步通过日志管理器将数据文件中的元组数据更新为所述第一元组数据元组,从而实现了恢复数据库系统。
[0130]需要说明的是,前述实施例描述中所采用的第一、第二的说法,没有限定顺序的意思,仅为方便区分而已。
[0131]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0132]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0133]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【权利要求】
1.一种日志的记录方法,其特征在于,所述方法包括: 日志管理器获取修改操作之后的第一元组数据,所述第一元组数据包括多个子数据; 将所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配; 若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;所述数据串包括至少两个连续的子数据; 将所述第一元组数据中除所述第一数据串之外的子数据、以及各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。
2.根据权利要求1所述的方法,其特征在于, 在将所述第一元组数据与修改操作之前的第二元组数据进行数据匹配之前,所述方法还包括: 从事务管理器获取第二元组数据的存储地址,并按照所述第二元组数据的存储地址获取所述第二元组数据。
3.根据权利要求2所述的方法,其特征在于,在所述生成所述修改操作的日志记录之后,所述方法还包括: 设置所述日志记录对应的结构信息,所述结构信息包括:控制字符;所述控制字符中的控制位依次表示所述日志记录中的数据是所述位置信息还是所述第一元组数据中除所述第一数据串之外的一个子数据; 将所述日志记录、所述结 构信息和所述第二元组数据的存储地址存储在日志文件中。
4.根据权利要求3所述的方法,其特征在于,所述结构信息还包括:头部信息,所述头部信息包括所述日志记录的长度信息。
5.根据权利要求1~4任一项所述的方法,其特征在于, 所述将所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配,具体包括: 将所述第一元组数据中的子数据按照正序或倒序方式依次与所述第二元组数据全部或部分子数据进行数据匹配。
6.根据权利要求1~4任一项所述的方法,其特征在于,将所述第一元组数据中除所述第一数据串之外的子数据、以及各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录,具体包括: 按照所述进行数据匹配的顺序,依次排列各个所述位置信息和所述第一元组数据中除所述第一数据串之外的各个子数据,得到所述修改操作的日志记录,其中,所述位置信息占用第一预定数目的字节;所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
7.根据权利要求1~4任一项所述的方法,其特征在于,所述位置信息包括:在所述第二元组数据中的起始位置和所述第二数据串的长度;或者,在所述第二元组数据中的起始位置和结束位置;或者,在所述第二元组数据中的结束位置和所述第二数据串的长度。
8.—种日志的恢复方法,其特征在于,所述方法包括: 日志管理器获取修改操作的日志记录和所述日志记录对应的结构信息,所述结构信息包括控制字符;所述日志记录包括第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串在所述第二元组数据中的位置信息,所述第一数据串与所述第二元组数据中的第二数据串相同;所述第二元组数据为修改操作之前的元组数据;所述第一元组数据为修改操作之后的元组数据; 当所述控制字符中的控制位表示所述日志记录中的数据为所述位置信息时,从所述日志记录中获取所述位置信息,并从所述第二元组数据中获取所述位置信息指示的第二数据串; 当所述控制字符中的控制位表示所述日志记录中的数据不是位置信息时,从所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据; 按照控制字符的各个控制位的顺序,将所述第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串生成第一元组数据。
9.根据权利要求8所述的方法,其特征在于,在从所述第二元组数据中获取所述位置信息指示的第二数据串之前,所述方法还包括: 日志管理器获取第二元组数据的存储地址,并根据所述第二元组数据的存储地址获取所述第二元组数据。
10.根据权利要求8和9所述的方法,其特征在于,所述位置信息占用第一预定数目的字节,所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
11.一种日志管理器,其特征在于,所述日志管理器包括:第一获取单元、计算单元和第一生成单元; 所述第一获取单元,用于获取修改操作之后的第一元组数据,所述第一元组数据包括多个子数据; 所述计算单元,用于将所述第一`获取单元所获取的所述第一元组数据与所述修改操作之前的第二元组数据进行数据匹配;若所述第一元组数据中存在第一数据串与所述第二元组数据中的第二数据串相同,则获取所述第二数据串在所述第二元组数据中的位置信息;所述数据串包括至少两个连续的子数据; 所述第一生成单元,用于将所述第一获取单元所获取的所述第一元组数据中除所述第一数据串之外的子数据、以及所述计算单元所得到的各个所述第二数据串在所述第二元组数据中的位置信息生成所述修改操作的日志记录。
12.根据权利要求11所述的日志管理器,其特征在于,所述日志管理器还包括:第二获取单元; 所述第二获取单元用于从事务管理器获取第二元组数据的存储地址,并按照所述第二元组数据的存储地址获取所述第二元组数据。
13.根据权利要求12所述的日志管理器,其特征在于,所述日志管理器还包括:设置单元和存储单元; 所述设置单元,用于设置所述第一生成单元所生成的日志记录对应的结构信息,所述结构信息包括:控制字符;所述控制字符中的控制位依次表示所述日志记录中的数据是所述位置信息还是所述第一元组数据中除所述第一数据串之外的一个子数据; 所述存储单元,用于将所述第一生成单元所生成的所述日志记录、所述设置单元所设置的所述结构信息和第二获取单元所获取的所述第二元组数据的存储地址存储在日志文件中。
14.根据权利要求13所述的日志管理器,其特征在于,所述结构信息还包括:头部信息,所述头部信息包括所述日志记录的长度信息。
15.根据权利要求11~14任一项所述的日志管理器,其特征在于, 所述计算单元具体用于将所述第一获取单元所获取的所述第一元组数据中的子数据按照正序或倒序方式依次与所述第二元组数据全部或部分子数据进行数据匹配。
16.根据权利要求11~14任一项所述的日志管理器,其特征在于,所述第一生成单元具体用于按照所述进行数据匹配的顺序,依次排列所述计算单元所得到的各个所述位置信息和所述第一获取单元所获取的所述第一元组数据中除所述第一数据串之外的各个子数据,得到所述修改操作的日志记录,其中,所述位置信息占用第一预定数目的字节;所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
17.根据权利要求11~14任一项所述的日志管理器,其特征在于,所述位置信息包括:在所述第二元组数据中的起始位置和所述第二数据串的长度;或者,在所述第二元组数据中的起始位置和结束位置;或者,在所述第二元组数据中的结束位置和所述第二数据串的长度。
18.—种日志管理器,其特征在于,所述日志管理器包括:第三获取单元、第四获取单元、第五获取单元和第二生成单元; 所述第三获取单元,用于从日志文件中获取修改操作的日志记录和所述日志记录对应的结构信息,所述结构信息包括控制字符;所述日志记录包括第一元组数据中除所述第一数据串之外的子数据、以及各个第二数据串在所述第二元组数据中的位置信息,所述第一数据串与所述第二元组数据中的第二数据串相同;所述第二元组数据为修改操作之前的元组数据;所述第一元组数据为修改操作之后的元组数据; 所述第四获取单元,用于当所述控制字符中的控制位表示所述第三获取单元所获取的所述日志记录中的数据为所述位置信息时,从所述日志记录中获取所述位置信息,并从所述第二元组数据中获取所述位置信息指示的第二数据串; 所述第五获取单元,用于当所述控制字符中的控制位表示所述第三获取单元所获取的所述日志记录中的数据不是位置信息时,从所述第三获取单元所获取的所述日志记录中读取所述第一元组数据中除所述第一数据串之外的子数据; 所述第二生成单元,用于按照控制字符的各个控制位的顺序,将所述第五获取单元所获取的所述第一元组数据中除所述第一数据串之外的子数据、以及所述第四获取单元所获取的各个第二数据串生成第一元组数据。
19.根据权利要求18所述的日志管理器,其特征在于,所述日志管理器还包括:第六获取单元; 所述第六获取单元用于从日志文件中获取第二元组数据的存储地址,并根据所述第二元组数据的存储地址获取所述第二元组数据。
20.根据权利要求18和19所述的日志管理器,其特征在于,所述位置信息占用第一预定数目的字节,所述第一元组数据中除所述第一数据串之外的每个子数据占用第二预定数目的字节。
【文档编号】G06F11/14GK103744939SQ201310752894
【公开日】2014年4月23日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】文继军, 李健, 张学富 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1