一种NewSQL数据库中的增量式快照方法

文档序号:8258960阅读:352来源:国知局
一种NewSQL数据库中的增量式快照方法
【技术领域】
[0001]本发明属于数据库技术领域,涉及一种快照方法,具体涉及一种NewSQL数据库中的增量式快照方法。
【背景技术】
[0002]NewSQL数据库:NewSQL数据库是一类能够具有类似nosql数据库的良好可扩展性,同时又支持传统数据库例如ACID事务以及sql语言特性的新型数据库系统。NewSQL数据库主要的应用场景是OLTP在线事务交易系统,但现有的快照方法在写入快照数据时,只存在快照数据重复写入的问题,由于快照数据的重复写入,从而有效的增加了快照数据的写入时间,并使快照数据消耗外存空间增长。

【发明内容】

[0003]本发明的目的在于克服上述现有技术的缺点,提供了一种NewSQL数据库中的增量式快照方法,该方法可以快速的将快照数据写入,并且避免快照数据消耗外存空间的增长。
[0004]为达到上述目的,本发明所述的NewSQL数据库中的增量式快照方法包括以下步骤:
[0005]I)快照引擎将当前内存数据库中的数据进行串行化后分为若干数据块,然后将各数据块依次写入到环形缓冲区中,开始快照后,重复数据删除引擎连续从环形缓冲区中读取数据块,并计算各数据块对应的hash值;
[0006]2)查找hash值查找指纹索引表,分别判断步骤I)得到的各数据块对应的hash值是否存在于hash值查找指纹索引表,当任意一个数据块对应的hash值存在于hash值查找指纹索引表中时,则将该数据块记作重复数据块,然后将该重复数据块对应的hash值写入到摘要文件中;当任意一个数据块对应的hash值不存在于hash值查找指纹索引表中时,则将该数据块记作新数据块,并将新数据块写入数据块存储引擎中,同时将新数据块对应的hash值以及该新数据块在数据文件中的偏移地址写入到hash值查找指纹索引表中,并将该新数据块对应的hash值写入到摘要文件中。
[0007]设环形缓冲区的头指针为head,尾指针为tail,环形缓冲区的长度为length,则有:
[0008]当head等于tail时,则缓冲缓冲区为空的,当head不等于tail时,则环形缓冲区为非空的;
[0009]判断(head+1)% Ienth 是否等于 tail,当(head+1) % Ienth 等于 tail 时,则环形缓冲区已经存储满,当(head+1) % Ienth不等于tail时,则环形缓冲区未存储满;
[0010]重复数据删除引擎通过Get方法从环形缓冲区读取数据块,当读取一次数据块后,则将tail指针指向内存单元数据,并将tail指针调整为tail = (tail+1) % length ;
[0011]采用put方法将数据块写入到环形缓冲区中,写入一次数据块中,则将head指针指向内存单元数据,并将head指针调整为head = (head+1) % length。
[0012]采用固定分块的方法或可变分块的方法将串行化的数据分为数据块;
[0013]hash值查找指纹索引表中保存有数据块对应的hash值以及该数据块在数据文件中的偏移地址;
[0014]通过SHA-1 hash函数计算各数据块对应的hash值。
[0015]当需要进行数据恢复时,选择要恢复到的快照检测点,根据所述快照检测点读取相对应的摘要文件,再从摘要文件中逐个读取hash值,并且每读取一条hash值,则通过hash值在hash值查找指纹索引表查找相应的偏移地址,然后根据对应的偏移地址及hash值从数据块存储引擎中读取数据块,再加载到内存中。
[0016]本发明具有以下有益效果:
[0017]本发明所述的NewSQL数据库中的增量式快照方法在使用时,先将内存数据库中的数据进行串行化后分为若干数据块,然后将各数据块依次写入到环形缓冲区中,再通过重复数据删除引擎从环形缓冲区中读取各数据块,并计算各数据块对应的hash值,根据各数据块对应的hash值查找hash值查表指纹索引表,删除重复的数据块,从而避免快照数据重复写入的问题,降低快照数据的写入时间,避免快照数据消耗外存空间的增长,同时先将数据块写入到环形缓冲区中,避免内存反复申请-释放带来的性能开销,减少快照时间。
【附图说明】
[0018]图1为本发明的原理图;
[0019]图2为本发明的流程图;
[0020]图3为本发明中数据恢复的流程图。
【具体实施方式】
[0021]下面结合附图对本发明做进一步详细描述:
[0022]参考图1及图2,本发明所述的NewSQL数据库中的增量式快照方法包括以下步骤:
[0023]I)快照引擎将当前内存数据库中的数据进行串行化后分为若干数据块,然后将各数据块依次写入到环形缓冲区中,开始快照后,重复数据删除引擎连续从环形缓冲区中读取数据块,并计算各数据块对应的hash值;
[0024]2)查找hash值查找指纹索引表,分别判断步骤I)得到的各数据块对应的hash值是否存在于hash值查找指纹索引表,当任意一个数据块对应的hash值存在于hash值查找指纹索引表中时,则将该数据块记作重复数据块,然后将该重复数据块对应的hash值写入到摘要文件中;当任意一个数据块对应的hash值不存在于hash值查找指纹索引表中时,则将该数据块记作新数据块,并将新数据块写入数据块存储引擎中,同时将新数据块对应的hash值以及该新数据块在数据文件中的偏移地址写入到hash值查找指纹索引表中,并将该新数据块对应的hash值写入到摘要文件中。
[0025]需要说明的是,设环形缓冲区的头指针为head,尾指针为tail,环形缓冲区的长度为length,则有:当head等于tail时,则缓冲缓冲区为空的,当head不等于tail时,则环形缓冲区为非空的;判断(head+1) % Ienth是否等于tail,当(head+1) % Ienth等于tail时,则环形缓冲区已经存储满,当(head+1) % Ienth不等于tail时,则环形缓冲区未存储满;重复数据删除引擎通过Get方法从环形缓冲区读取数据块,当读取一次数据块后,则将tail指针指向内存单元数据,并将tail指针调整为tail = (tail+1) % length ;采用put方法将数据块写入到环形缓冲区中,写入一次数据块中,则将head指针指向内存单元数据,并将head指针调整为head = (head+1) % length。
[0026]采用固定分块的方法或可变分块的方法将串行化的数据分为数据块;hash值查找指纹索引表中保存有数据块对应的hash值以及该数据块在数据文件中的偏移地址;通过SHA-1 hash函数计算各数据块对应的hash值。
[0027]参考图3,当需要进行数据恢复时,选择要恢复到的快照检测点,根据所述快照检测点读取相对应的摘要文件,再从摘要文件中逐个读取hash值,并且每读取一条hash值,则通过hash值在hash值查找指纹索引表查找相应的偏移地址,然后根据对应的偏移地址及hash值从数据块存储引擎中读取数据块,再加载到内存中。
【主权项】
1.一种NewSQL数据库中的增量式快照方法,其特征在于,包括以下步骤: 1)快照引擎将当前内存数据库中的数据进行串行化后分为若干数据块,然后将各数据块依次写入到环形缓冲区中,开始快照后,重复数据删除引擎连续从环形缓冲区中读取数据块,并计算各数据块对应的hash值; 2)查找hash值查找指纹索引表,分别判断步骤I)得到的各数据块对应的hash值是否存在于hash值查找指纹索引表,当任意一个数据块对应的hash值存在于hash值查找指纹索引表中时,则将该数据块记作重复数据块,然后将该重复数据块对应的hash值写入到摘要文件中;当任意一个数据块对应的hash值不存在于hash值查找指纹索引表中时,则将该数据块记作新数据块,并将新数据块写入数据块存储引擎中,同时将新数据块对应的hash值以及该新数据块在数据文件中的偏移地址写入到hash值查找指纹索引表中,并将该新数据块对应的hash值写入到摘要文件中。
2.根据权利要求1所述的NewSQL数据库中的增量式快照方法,其特征在于,设环形缓冲区的头指针为head,尾指针为tail,环形缓冲区的长度为length,则有: 当head等于tail时,则缓冲缓冲区为空的,当head不等于tail时,则环形缓冲区为非空的; 判断(head+1) % Ienth是否等于tail,当(head+1) % Ienth等于tail时,则环形缓冲区已经存储满,当(head+1) % Ienth不等于tail时,则环形缓冲区未存储满; 重复数据删除引擎通过Get方法从环形缓冲区读取数据块,当读取一次数据块后,则将tail指针指向内存单元数据,并将tail指针调整为tail = (tail+1) % length ; 采用put方法将数据块写入到环形缓冲区中,写入一次数据块中,则将head指针指向内存单元数据,并将head指针调整为head = (head+1) % length。
3.根据权利要求1所述的NewSQL数据库中的增量式快照方法,其特征在于,采用固定分块的方法或可变分块的方法将串行化的数据分为数据块。
4.根据权利要求1所述的NewSQL数据库中的增量式快照方法,其特征在于,所述hash值查找指纹索引表中保存有数据块对应的hash值以及该数据块在数据文件中的偏移地址。
5.根据权利要求1所述的NewSQL数据库中的增量式快照方法,其特征在于,通过SHA-1hash函数计算各数据块对应的hash值。
6.根据权利要求1所述的NewSQL数据库中的增量式快照方法,其特征在于,当需要进行数据恢复时,选择要恢复到的快照检测点,根据所述快照检测点读取相对应的摘要文件,再从摘要文件中逐个读取hash值,并且每读取一条hash值,则通过hash值在hash值查找指纹索引表查找相应的偏移地址,然后根据对应的偏移地址及hash值从数据块存储引擎中读取数据块,再加载到内存中。
【专利摘要】本发明公开了一种NewSQL数据库中的增量式快照方法,该方法可以快速的将快照数据写入,包括以下步骤:1)快照引擎将当前内存数据库中的数据进行串行化后分为若干数据块,然后将各数据块依次写入到环形缓冲区中,开始快照后,重复数据删除引擎连续从环形缓冲区中读取数据块,并计算各数据块对应的hash值;2)查找hash值查找指纹索引表,删除于hash值查找指纹索引表中hash值抽重复的数据块,再将各数据块对应的hash值写入到摘要文件中。发明可以快速的将快照数据写入,并且避免快照数据消耗外存空间的增长。
【IPC分类】G06F17-30
【公开号】CN104573089
【申请号】CN201510046499
【发明人】董小社, 王龙翔, 张兴军, 魏晓林
【申请人】西安交通大学
【公开日】2015年4月29日
【申请日】2015年1月29日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1