CN101625703B - 一种内存数据库的日志合并方法和系统 - Google Patents
一种内存数据库的日志合并方法和系统 Download PDFInfo
- Publication number
- CN101625703B CN101625703B CN2009103059326A CN200910305932A CN101625703B CN 101625703 B CN101625703 B CN 101625703B CN 2009103059326 A CN2009103059326 A CN 2009103059326A CN 200910305932 A CN200910305932 A CN 200910305932A CN 101625703 B CN101625703 B CN 101625703B
- Authority
- CN
- China
- Prior art keywords
- daily record
- log
- execution
- steps
- file
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种内存数据库的日志合并方法和系统,所述方法包括以下步骤:a.执行逻辑相关性判别;b.判断是否执行逻辑合并,若是则执行步骤c,否则转至步骤d;c.执行逻辑合并;d.执行数据对象一致性判别;e.判断是否执行日志数据对象一致合并,若是则执行步骤f,否则执行步骤g;f.执行步骤对象合并;g.日志插入到缓存块中。本发明通过对每条日志进行hash查找匹配可合并的日志然后合并这些日志,不仅减少了内存数据库的日志数量,而且加快了数据库的恢复速度,解决了内存数据库的日志数量大的技术问题,同时降低了部署成本,提高了系统性能。
Description
技术领域
本发明涉及内存数据库备份和恢复领域,尤其涉及内存数据库日志系统中的缩减日志量的技术领域。
背景技术
内存数据库因其快速的访问性能,被越来越广泛的使用在电信、金融、电力等行业。在内存数据库复杂的应用领域中,它承担处理的数据越来越多,接收的事务越来越多,扮演的角色也越来越重要。正因为内存数据库在现代应用中越来越重要的应用,它的数据安全性越来越被重视,作为记录数据库工作的日志也被重视起来。然而内存数据库承担的事务越来越多,事务越来越复杂,记录事务的日志也越来越多,日志数量变得十分的庞大。如此大量的日志不仅增加了数据库的负担,而且也加长了数据库恢复的时间,是对内存数据库的应用十分不利的。
现有的内存数据库记录的日志一般是物理日志,对于数据库记录的日志一般按照直接的内存映像存储,或者通过压缩技术存储。通过压缩技术存储日志需要在备份和恢复阶段都要对日志进行大量的运算(在备份阶段需要压缩日志然后存储,在恢复阶段需要解压缩日志然后执行恢复),虽然这种方法压缩了日志的大小,减少了日志存储的空间,但是这种方法增加了系统负担,耗费了大量时间,不适用于对时间要求较高的内存数据库的应用场合;另外,这种方法并没有从日志数量上进行缩减,在恢复阶段仍然有恢复同样数量的日志。减少日志量的另一方法是通过事务协议来减少记录日志,这种方法对事务处理提出了要求,导致事务处理变得复杂,对于不同的事务协议没有通用性,这种减少日志的方法只适用在采用能够减少记录日志的事务协议的数据库中。
发明内容
本发明所要解决的技术问题是提供一种有效缩减日志量的日志合并方法及系统。
为解决上述技术问题,本发明提供了一种日志合并方法,包括以下步骤:a,对新进入缓冲区的日志执行事务逻辑相关性判别,包括以下步骤:
a1,对新进入缓冲区的日志,根据日志类型判别是否是其对应事务的最后一个日志且是可合并日志,若是,执行步骤a2,否则结束;
a2,根据日志头中记录的该日志在事务内的逻辑顺序信息,在日志缓存块中查找上一个日志;
a3,判别是否找到日志,若没找到则执行步骤a4,否则转至步骤a5;
a4,合并所查找到的一系列日志,合并然后插入到最后一个日志的位置上,并将原被已经合并的日志删除,然后结束;
a5,判别步骤a2获取的上一个日志是否在最后一个不可合并的日志以前,若是则结束,否则转至步骤a2;
b,判断是否执行逻辑合并,若是则执行步骤c,否则转至步骤d;
c,执行基于事务逻辑的日志合并;
d,对新日志包含的数据对象执行数据对象一致性判别,包括以下步骤:
d1,对新进入缓冲区的日志判断日志类型,如果是不可合并日志,执行步骤d2,否则转至步骤d3;
d2,清空hash表,为后面的插入行操作日志做好准备,并转至步骤d8;
d3,取得本日志描述的数据对象的内存地址rAddr;
d4,依据rAddr计算hash值,查找hash表;
d5,判断是否有相同地址的日志,如果有,执行步骤d6,否则转至步骤d7;
d6,执行日志合并,并转至步骤d8;
d7,将本条日志插入hash表;
d8,向缓冲块中插入本条日志;
e,判断是否执行日志数据对象一致合并,若是则执行步骤f,否则执行步骤g;
f,执行基于数据对象的日志合并;
g,将新日志插入到缓存块中。
按上述方案,所述日志缓存块内采用hash结构组织。
另一方面,本发明提供一种对应于上述方法的日志合并系统,包括内存中的日志缓存块、日志管理文件和日志文件,所述日志缓存块由缓存块头和多个缓存块组成,用于缓存日志;所述日志管理文件用于记录日志文件的相应管理信息,由文件头和信息区组成;所述日志文件用于存储已经经过合并后的日志。
按上述方案,所述日志合并系统还包括写磁盘日志线程。
按上述方案,所述文件头用于记录相关管理信息。
按上述方案,所述信息区用于记录对应数据库映像文件、检查点和日志文件链表信息。
实施本发明具有如下有益效果:
在本发明所提出的一种内存数据库的日志合并方法及系统中,通过对每条日志进行hash查找匹配可合并的日志然后合并这些日志,不仅减少了内存数据库的日志数量,而且加快了数据库的恢复速度,解决了内存数据库的日志数量大的技术问题,同时降低了部署成本,提高了系统性能。
附图说明
下面结合附图和具体实施方式对本发明的技术方案作进一步具体说明。
图1为内存数据库的日志系统功能模块示意图。
图2为缓冲区中日志逻辑关系示例。
图3为逻辑相关性判别算法流程图。
图4为一个日志缓存块的组织结构图。
图5为数据对象一致性判别算法流程图。
图6为整体的日志合并方法流程图。
具体实施方式
如图1所示,本发明提供的日志系统包括内存中的日志缓存区,日志管理文件和日志文件。日志系统拥有自己的内存日志缓存区,自己管理磁盘日志文件,并拥有自己的写磁盘日志线程。其中日志缓冲区缓存日志,由缓冲区头和多个缓存块组成,在缓存块上建立hash索引,提供日志合并功能。缓冲区采用多个缓冲块的策略,当一个缓存块被充满并继续往日志系统增添日志时,另一个空闲的块就作为当前日志缓存块。当收到检查点日志的时候,将所有缓存区的日志写入磁盘日志文件。日志管理文件管理日志文件,记录日志文件的相应管理信息,由文件头和信息区组成:文件头记录相关管理信息,负责管理信息区,记录当前最近有效信息区(恢复的时候根据这个变量定位最近有效恢复点)等信息;信息区用来记录对应数据库映像文件、检查点和日志文件链表等信息。日志文件是日志数据文件,存储已经经过合并后的日志。写磁盘操作和增日志函数并行进行,使得写日志对数据库操作的影响减到最小。
在缓冲区中的每个日志都属于某个事务,并且由日志头中的信息被串成一个链如图2例示。
日志系统维护一个标识最后一个不可合并日志的信息,用以在合并时用来判别合并的可行性。当插入日志时执行日志逻辑相关性判别算法,具体流程如图3所示,包括:
步骤31,根据日志类型判别是该事务的最后一个日志且是可合并日志,若是,执行步骤32,否则结束。
步骤32,根据日志头中记录的该日志在事务内的逻辑顺序信息,在日志缓存块中查找上一个日志。
步骤33,判别是否找到日志,若没找到则执行步骤34,否则转至步骤35。
步骤34,合并所查找到的一系列日志,合并然后插入到最后一个日志的位置上,并将原被已经合并的日志删除,然后结束。
步骤35,判别该日志是否在最后一个不可合并的日志以前,若是则结束,否则转至步骤32。
日志缓存块结构如图4所示,在缓存块内采用hash结构组织,并整合日志合并技术,降低了日志量,提高了日志缓存块的利用效率。
当向缓存块内插入一条日志时,数据库借助hash表判断是否有可以合并的日志,如果有则合并,否则直接插入缓存块中。数据对象一致性判别算法的日志合并流程如图5所示,具体包括:
步骤51,对本日志判断日志类型,如果是不可合并日志,执行步骤52,否则转至步骤53。
步骤52,清空hash表,为后面的插入行操作日志做好准备。转至步骤58。
步骤53,取得本日志描述的内存地址rAddr。
步骤54,依据rAddr计算hash值,查找hash表。
步骤55,判断是否有同地址的日志,如果有,执行步骤56,否则转至步骤57。
步骤56,合并日志,转至步骤58。
步骤57,将本条日志插入hash。
步骤58,向缓冲块中插入本条日志。日志合并结束。
对每一条日志插入,日志合并的总体流程如图6所示,包括:
步骤61,执行逻辑相关性判别。
步骤62,判断是否执行逻辑合并,若是则执行步骤63,否则转至步骤64。
步骤63,执行逻辑合并。
步骤64,执行数据对象一致性判别。
步骤65,判断是否执行日志数据对象一致合并,若是则执行步骤66,否则执行步骤67。
步骤66,执行步骤对象合并。
步骤67,日志插入到缓存块中。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (6)
1.一种内存数据库的日志合并方法 ,其特征在于,该方法包括以下步骤:
a,对新进入缓冲区的日志执行事务逻辑相关性判别,包括以下步骤:
a1,对新进入缓冲区的日志,根据日志类型判别是否是其对应事务的最后一个日志且是可合并日志,若是,执行步骤a2,否则结束;
a2,根据日志头中记录的该日志在事务内的逻辑顺序信息,在日志缓存块中查找上一个日志;
a3,判别是否找到日志,若没找到则执行步骤a4,否则转至步骤a5;
a4,合并所查找到的一系列日志,合并然后插入到最后一个日志的位置上,并将原被已经合并的日志删除,然后结束;
a5,判别步骤a2获取的上一个日志是否在最后一个不可合并的日志以前,若是则结束,否则转至步骤a2;
b,判断是否执行逻辑合并,若是则执行步骤c,否则转至步骤d;
c,执行基于事务逻辑的日志合并;
d,对新日志包含的数据对象执行数据对象一致性判别,包括以下步骤:
d1,对新进入缓冲区的日志判断日志类型,如果是不可合并日志,执行步骤d2,否则转至步骤d3;
d2,清空hash表,为后面的插入行操作日志做好准备,并转至步骤d8;
d3,取得本日志描述的数据对象的内存地址rAddr;
d4,依据rAddr计算hash值,查找hash表;
d5,判断是否有相同地址的日志,如果有,执行步骤d6,否则转至步骤d7;
d6,执行日志合并,并转至步骤d8;
d7,将本条日志插入hash表;
d8,向缓冲块中插入本条日志;
e,判断是否执行日志数据对象一致合并,若是则执行步骤f,否则执行步骤g;
f,执行基于数据对象的日志合并;
g,将新日志插入到缓存块中。
2.根据权利要求1所述的内存数据库的日志合并方法,其特征在于,所述日志缓存块内采用hash结构组织 。
3.一种用于权利要求1或2所述方法的日志合并系统,其特征在于,包括内存中的日志缓存块、日志管理文件和日志文件,所述日志缓存块由缓存块头和多个缓存块组成,用于缓存日志;所述日志管理文件用于记录日志文件的相应管理信息,由文件头和信息区组成;所述日志文件用于存储已经经过合并后的日志。
4.根据权利要求3所述的日志合并系统,其特征在于,所述日志合并系统还包括写磁盘日志线程。
5.根据权利要求3所述的日志合并系统,其特征在于,所述文件头用于记录相关管理信息。
6.根据权利要求3所述的日志合并系统,其特征在于,所述信息区用于记录对应数据库映像文件、检查点和日志文件链表信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009103059326A CN101625703B (zh) | 2009-08-21 | 2009-08-21 | 一种内存数据库的日志合并方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009103059326A CN101625703B (zh) | 2009-08-21 | 2009-08-21 | 一种内存数据库的日志合并方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101625703A CN101625703A (zh) | 2010-01-13 |
CN101625703B true CN101625703B (zh) | 2011-02-09 |
Family
ID=41521552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009103059326A Expired - Fee Related CN101625703B (zh) | 2009-08-21 | 2009-08-21 | 一种内存数据库的日志合并方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101625703B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629250A (zh) * | 2012-02-28 | 2012-08-08 | 杭州丰城信息技术有限公司 | 一种内存数据库重做日志文件的恢复方法 |
CN103207907B (zh) * | 2013-03-28 | 2016-06-29 | 新浪网技术(中国)有限公司 | 一种索引文件合并方法及装置 |
CN104657229A (zh) * | 2015-03-19 | 2015-05-27 | 哈尔滨工业大学 | 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法 |
CN105516307A (zh) * | 2015-12-09 | 2016-04-20 | 浪潮电子信息产业股份有限公司 | 一种基于压缩的优化云存储系统日志存储的方法 |
CN108255692B (zh) * | 2016-12-28 | 2021-02-26 | 新华三技术有限公司 | 信息处理方法及装置 |
CN107038231A (zh) * | 2017-04-11 | 2017-08-11 | 南京南瑞集团公司 | 一种数据库高并发事务合并方法 |
CN109508446B (zh) * | 2017-09-14 | 2023-04-18 | 北京国双科技有限公司 | 一种日志处理方法和装置 |
CN110321410B (zh) * | 2019-06-21 | 2021-08-06 | 东软集团股份有限公司 | 日志提取的方法、装置、存储介质和电子设备 |
CN110716695A (zh) * | 2019-09-12 | 2020-01-21 | 北京浪潮数据技术有限公司 | 一种节点日志的存储方法、系统、电子设备及存储介质 |
CN113656645A (zh) * | 2020-05-12 | 2021-11-16 | 北京字节跳动网络技术有限公司 | 日志消费方法和装置 |
CN114610721B (zh) * | 2022-03-23 | 2022-12-27 | 北京涵鑫盛科技有限公司 | 一种多层级分布式存储系统及存储方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101018121A (zh) * | 2007-03-15 | 2007-08-15 | 杭州华为三康技术有限公司 | 日志的聚合处理方法及聚合处理装置 |
-
2009
- 2009-08-21 CN CN2009103059326A patent/CN101625703B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101018121A (zh) * | 2007-03-15 | 2007-08-15 | 杭州华为三康技术有限公司 | 日志的聚合处理方法及聚合处理装置 |
Non-Patent Citations (1)
Title |
---|
张虎等.一种基于日志合并优化的数据库同步机制.《小型微型计算机系统》.2006,第27卷(第12期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN101625703A (zh) | 2010-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101625703B (zh) | 一种内存数据库的日志合并方法和系统 | |
CN100590609C (zh) | 一种基于非连续页的动态内存管理方法 | |
US9298578B2 (en) | Method and apparatus for power loss recovery in a flash memory-based SSD | |
CN103116661B (zh) | 一种数据库的数据处理方法 | |
KR101994491B1 (ko) | 데이터 중복제거를 위한 백업 및 복원 전략 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
CN108319543A (zh) | 一种计算机日志数据的异步处理方法及其介质、系统 | |
CN102436408B (zh) | 基于Map/Dedup的数据存储云化和云备份方法 | |
CN111400408A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN100541453C (zh) | 大容量缓存实现方法及存储系统 | |
US7406489B2 (en) | Apparatus, system and method for persistently storing data in a data synchronization process | |
CN109445702B (zh) | 一种块级数据去重存储系统 | |
CN101533408A (zh) | 一种海量数据的处理方法及处理装置 | |
CN110389942B (zh) | 一种无垃圾回收的键值分离存储方法和系统 | |
CN101329642A (zh) | 基于时间戳日志存储的连续数据保护和恢复方法 | |
CN105045850B (zh) | 云存储日志文件系统中垃圾数据回收方法 | |
CN102436420A (zh) | 使用辅助存储器的低ram空间、高吞吐量的持久键值存储 | |
CN101777017A (zh) | 一种连续数据保护系统的快速恢复方法 | |
CN106503051A (zh) | 一种基于元数据分类的贪婪预取型数据恢复系统及恢复方法 | |
CN100424699C (zh) | 一种属性可扩展的对象文件系统 | |
CN107678892B (zh) | 基于跳跃恢复链的连续数据保护方法 | |
CN103218176A (zh) | 数据处理方法及装置 | |
CN103577513A (zh) | 藉延迟节点实例化以缓存xml信息集的系统和/或方法 | |
CN102722450B (zh) | 一种基于位置敏感哈希的删冗块设备存储方法 | |
CN104778100A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110209 Termination date: 20110821 |