CN107046812A - 一种数据保存方法和装置 - Google Patents

一种数据保存方法和装置 Download PDF

Info

Publication number
CN107046812A
CN107046812A CN201580056658.7A CN201580056658A CN107046812A CN 107046812 A CN107046812 A CN 107046812A CN 201580056658 A CN201580056658 A CN 201580056658A CN 107046812 A CN107046812 A CN 107046812A
Authority
CN
China
Prior art keywords
block
sub
saved
data
referring
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.)
Granted
Application number
CN201580056658.7A
Other languages
English (en)
Other versions
CN107046812B (zh
Inventor
李夫路
张程伟
徐培
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN107046812A publication Critical patent/CN107046812A/zh
Application granted granted Critical
Publication of CN107046812B publication Critical patent/CN107046812B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据保存方法和装置,用于对保存于数据库的数据进行重删和压缩处理。该方法包括:将待保存数据块和参照数据块分别划分为大小相同的N个待保存子数据块,比较对应相同位置标识的待保存子数据块和参照子数据块,从N个待保存子数据块中确定可重删子数据块和不可重删子数据块,对可重删子数据块进行重删操作,选择不可重删子数据块的代表子数据块,并将不可重删子数据块的数据与代表子数据块的数据进行异或操作,使用游程编码对异或操作的结果进行压缩,并保存压缩结果和不可重删子数据块的位置信息。通过对待保存数据块的重删和压缩操作,可以减小保存待保存数据块需要的存储空间。

Description

一种数据保存方法和装置 技术领域
本发明实施例涉及计算机领域,尤其涉及一种数据保存方法和装置。
背景技术
随着数字信息量的爆炸式增长,数据占用空间越来越大;随着数据的指数级增长,企业面临的快速备份和恢复的时间点越来越多,管理保存数据的成本及数据中心空间和能耗也变得越来越严重。研究发现,应用系统所保存的数据中高达60%是冗余的,而且随着时间的推移,数据冗余占比将会越来越大。
为了缓解存储系统的空间增长问题,缩减数据占用空间和降低成本,最大程度地利用已有资源,重复数据删除技术已成为一个热门的研究课题。一方面,利用重复数据删除技术(以下简称“重删”)可以对存储空间的利用率进行优化,以消除分布在存储系统中的相同文件或者数据块。另一方面,利用重复数据删除技术可以减少在网络中传输的数据量,进而降低能量消耗和网络成本,并为数据复制大量节省网络带宽。
随着重复数据删除技术的发展,该技术大量应用于存储备份和归档系统中,该系统中的重复数据删除模块负责对数据内容进行比对分析,查找出冗余数据,对于重复出现的数据单元只需要记录已存放的可参考的相同数据的位置,最后只将不重复的数据存入到存储介质中。
现有技术中,压缩效果较好的重删算法运算量都比较大,运算量小的重删算法的压缩效果又比较差。研究发现,数据库应用中的数据块存在较大的相似度,需要一种有效的保存算法来实现数据库应用中数据的压缩。
发明内容
有鉴于此,本发明实施例提供了一种数据保存方法和装置。以实现对待存储数据块的重删和压缩,从而减少存储待存储数据块需要的存储空间
第一方面,本申请提供了一种数据保存方法,包括:
将待保存数据块划分为大小相同的N个待保存子数据块,N个待保存子数据块对应N个位置标识,每个待保存子数据块对应一个位置标识,其中,N为大于1的正整数;从已保存的至少两个对比数据块中选择一个作为参照数据块,参照数据块包括N个参照子数据块,N个参照子数据块对应该N个位置标识,每个参照子数据块对应一个位置标识;将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较,从N个待保存子数据块中确定第一子数据块,其中,i为从1递增至N的正整数,第一子数据块为与所比较的参照子数据块不相同的待保存子数据块;选择第一子数据块的代表子数据块;将第一子数据块的数据与代表子数据块的数据进行异或操作;使用游程编码对异或操作的结果进行压缩,并保存压缩结果和第一子数据块的位置信息。
具体实现过程中,因为待保存数据块和参照数据块的大小相同,待保存子数据块与参照子数据块的大小也相同,可以用子数据块在数据块中的顺序作为该位置标识。例如,按照位置顺序,第i个待保存子数据块的位置标识为“i”。比较对应相同位置标识的待保存子数据块和参照子数据块,即比较相同位置的待保存子数据块和参照子数据块。
结合第一方面,在第一方面第一种可能的实现方式中,该方法还包括:通过对应相同位置标识的待保存子数据块和参照子数据块的比较,从N个待保存子数据块中确定第二子数据块,其中,第二子数据块为与所比较的参照子数据块相同的待保存子数据块,并对第二子数据块进行重删操作。
根据数据库中数据相似性与位置相关的特点,通过将待保存数据块分为更小粒度的子数据块,并对待保存数据块和参照数据块相同位置的子数据块分别进行比较,以较小的计算量对相同子数据块进行重删操作,并将不同子数据块与参照子数据块进行异或操作,对异或结果进行游程编码压缩,大大降低了记录待保存数据块所需要的存储空间。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第二种可能的实现方式中,将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较包括:将对应第i位置标识的待保存子数据块的指纹和对应第i位置标识的参照子数据块的指纹进行比较,如果指纹相同,则表示二者相同,如果指纹不同,则表示二者不同。
通过对子数据块的指纹的比较,避免了子数据块之间比较时的按位比较, 从而减小了比较运算的复杂度。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第三种可能的实现方式中,从已保存的至少两个对比数据块中选择一个作为参照数据块,包括:从至少两个对比数据块中选择与待保存数据块有最多相同子数据块的对比数据块作为参照数据块。更进一步的,可以选取与待保存数据块相同子数据块最多,且不同子数据块的分簇最少的对比数据块作为参照数据块,其中,不同子数据块的一个分簇是指位置连续的不同子数据块组成的集合,且所述集合的相邻位置的子数据块为相同子数据块。
通过待保存数据块与多个对比数据块的比较,可以判断每一个对比数据块与待保存数据块的相似度,与待保存数据块相同子数据块最多的对比数据块是与待保存数据块相似度最高的数据块。进一步的,通过在与待保存数据块相似度最高的对比数据块中选择不同子数据块的分簇最少的对比数据块作为参照数据块,可以减少记录不同子数据块的位置所需要的信息,进一步的增加了重删操作的压缩比。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第四种可能的实现方式中,选择第一子数据块的代表子数据块,包括:选择与每一个第一子数据块对应相同位置标识的参照子数据块作为该每一个第一子数据块的代表子数据块。
因为数据库中存储的数据块存在很大的相似度,而且不同数据块的相同部分在数据块内部的相对位置一般是相同的,所以选择与每一个第一子数据块对应相同位置标识的参照子数据块作为该每一个第一子数据块的代表子数据块,可以使异或结果中出现大量连续的“0”,从而大大降低游程编码的压缩率。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第五种可能的实现方式中,选择第一子数据块的代表子数据块,包括:将第一子数据块与至少两个已保存子数据块分别进行异或操作,根据异或操作的结果的游程编码压缩率,选择与第一子数据块的异或结果的游程编码压缩率最小的已保存子数据块作为代表子数据块。
通过比较,从已保存的子数据块中选取使第一子数据块与其异或操作结果的游程编码压缩率最小的已保存子数据块作为该代表子数据块,可以在较大程度上减小保存待保存数据块需要的存储空间。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第六种可能的实现方式中,选择第一子数据块的代表子数据块,包括:将第一子数据块进行两两异或操作,根据异或操作的结果的游程编码压缩率,选择与其他第一子数据块的异或结果的游程编码压缩率最小的第一子数据块作为代表子数据块。
通过从第一子数据块中寻找一个与其他第一子数据块最相似的一个第一子数据块作为代表子数据块,可以在不依附于已保存子数据块的情况下,降低存储待保存数据块需要的存储空间。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第七种可能的实现方式中,将待保存数据块划分为大小相同的N个待保存子数据块之前,还包括:从待保存数据中抽取样本,根据不同的待保存子数据块大小,分别确定样本的保存压缩率、保存速度和读取速度,根据保存速度和读取速度满足约束条件,且保存压缩率最小的子数据大小确定N的大小,其中,约束条件为:保存速度大于等于预设的第一阈值,读取速度大于等于预设的第二阈值。
通过抽取样本,选择最合适的数据块分割方法,可以在满足保存处理速度和读取处理速度的前提下,最大限度的降低存储到保存数据块需要的存储空间。
结合第一方面或第一方面以上任一种可能的实现方式,在第一方面第八种可能的实现方式中,该方法还包括:保存第一子数据块的指纹。从而使第一子数据块后续作为其他数据块的参照子数据块时,不用重复计算指纹。
第二方面,本申请提供了一种计算机可读介质,包括计算机执行指令,当计算机的处理器执行该计算机执行指令时,该计算机执行第一方面或第一方面任一种可能的实现方式中的方法。
第三方面,本申请提供了一种计算设备,包括:处理器、存储器、总线和通信接口;该存储器用于存储执行指令,该处理器与该存储器通过该总线连接,当该计算设备运行时,该处理器执行该存储器存储的该执行指令,以使该计算设备执行第一方面或第一方面任一种可能的实现方式中的方法。
第四方面,本申请提供了一种数据保存装置,包括:
分割单元,用于将待保存数据块划分为大小相同的N个待保存子数据块,N个待保存子数据块对应N个位置标识,每个待保存子数据块对应一个位置 标识,其中,N为大于1的正整数;选择单元,用于从已保存的至少两个对比数据块中选择一个作为参照数据块,参照数据块包括N个参照子数据块,N个参照子数据块对应N个位置标识,每个参照子数据块对应一个位置标识;比较单元,用于将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较,从N个待保存子数据块中确定第一子数据块,其中,i为从1递增至N的正整数,第一子数据块为与所比较的参照子数据块不相同的待保存子数据块;选择单元还用于选择第一子数据块的代表子数据块;计算单元,用于将第一子数据块的数据与代表子数据块的数据进行异或操作;压缩单元,用于使用游程编码对异或操作的结果进行压缩,并保存压缩结果和第一子数据块的位置信息。
具体实现过程中,因为待保存数据块和参照数据块的大小相同,待保存子数据块与参照子数据块的大小也相同,可以用子数据块在数据块中的顺序作为该位置标识。例如,按照位置顺序,第i个待保存子数据块的位置标识为“i”。比较对应相同位置标识的待保存子数据块和参照子数据块,即比较相同位置的待保存子数据块和参照子数据块。
结合第四方面,在第四方面第一种可能的实现方式中,装置还包括重删单元,比较单元还用于从N个待保存子数据块中确定第二子数据块,其中,第二子数据块为与所比较的参照子数据块相同的待保存子数据块;重删单元用于对第二子数据块进行重删操作。
根据数据库中数据相似性与位置相关的特点,通过将待保存数据块分为更小粒度的子数据块,并对待保存数据块和参照数据块相同位置的子数据块分别进行比较,以较小的计算量对相同子数据块进行重删操作,并将不同子数据块与参照子数据块进行异或操作,对异或结果进行游程编码压缩,大大降低了记录待保存数据块所需要的存储空间。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二种可能的实现方式中,比较单元具体用于将对应第i位置标识的待保存子数据块的指纹和对应第i位置标识的参照子数据块的指纹进行比较,如果指纹相同,则表示二者相同,如果指纹不同,则表示二者不同。
通过对子数据块的指纹的比较,避免了子数据块之间比较时的按位比较,从而减小了比较运算的复杂度。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二 种可能的实现方式中,选择单元用于从已保存的至少两个对比数据块中选择一个作为参照数据块,包括:选择单元用于从至少两个对比数据块中选择与待保存数据块有最多相同子数据块的对比数据块作为参照数据块。
通过待保存数据块与多个对比数据块的比较,可以判断每一个对比数据块与待保存数据块的相似度,与待保存数据块相同子数据块最多的对比数据块是与待保存数据块相似度最高的数据块。进一步的,通过在与待保存数据块相似度最高的对比数据块中选择不同子数据块的分簇最少的对比数据块作为参照数据块,可以减少记录不同子数据块的位置所需要的信息,进一步的增加了重删操作的压缩比。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二种可能的实现方式中,选择单元用于选择第一子数据块的代表子数据块,包括:选择单元用于选择与每一个第一子数据块对应相同位置标识的参照子数据块作为每一个第一子数据块的代表子数据块。更进一步的,改选单元可以用于选取与待保存数据块相同子数据块最多,且不同子数据块的分簇最少的对比数据块作为参照数据块,其中,不同子数据块的一个分簇是指位置连续的不同子数据块组成的集合,且所述集合的相邻位置的子数据块为相同子数据块。
因为数据库中存储的数据块存在很大的相似度,而且不同数据块的相同部分在数据块内部的相对位置一般是相同的,所以选择与每一个第一子数据块对应相同位置标识的参照子数据块作为该每一个第一子数据块的代表子数据块,可以使异或结果中出现大量连续的“0”,从而大大降低游程编码的压缩率。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二种可能的实现方式中,选择单元用于选择第一子数据块的代表子数据块,包括:选择单元用于通过异或单元将第一子数据块与至少两个已保存子数据块分别进行异或操作,根据异或操作的结果的游程编码压缩率,选择与第一子数据块的异或结果的游程编码压缩率最小的已保存子数据块作为代表子数据块。
通过比较,从已保存的子数据块中选取使第一子数据块与其异或操作结果的游程编码压缩率最小的已保存子数据块作为该代表子数据块,可以在较大程度上减小保存待保存数据块需要的存储空间。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二种可能的实现方式中,选择单元用于选择第一子数据块的代表子数据块,包括:选择单元用于通过异或单元将第一子数据块进行两两异或操作,根据异或操作的结果的游程编码压缩率,选择与其他第一子数据块的异或结果的游程编码压缩率最小的第一子数据块作为代表子数据块。
通过从第一子数据块中寻找一个与其他第一子数据块最相似的一个第一子数据块作为代表子数据块,可以在不依附于已保存子数据块的情况下,降低存储待保存数据块需要的存储空间。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二种可能的实现方式中,选择单元还用于:从待保存数据中抽取样本,根据不同的待保存子数据块大小,分别确定样本的保存压缩率、保存速度和读取速度,根据保存速度和读取速度满足约束条件,且保存压缩率最小的子数据大小确定N的大小,其中,约束条件为:保存速度大于等于预设的第一阈值,读取速度大于等于预设的第二阈值。
通过抽取样本,选择最合适的数据块分割方法,可以在满足保存处理速度和读取处理速度的前提下,最大限度的降低存储到保存数据块需要的存储空间。
结合第四方面或第四方面以上任一种可能的实现方式,在第四方面第二种可能的实现方式中,比较单元还用于保存第一子数据块的指纹。从而使第一子数据块后续作为其他数据块的参照子数据块时,不用重复计算指纹。
根据本发明公开的技术方案,根据数据库中数据相似性与位置相关的特点,通过将待保存数据块分为更小粒度的子数据块,并对待保存数据块和参照数据块相同位置的子数据块分别进行比较,以较小的计算量对相同子数据块进行重删操作,并将不同子数据块与参照子数据块进行异或操作,对异或结果进行游程编码压缩,大大降低了记录待保存数据块所需要的存储空间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种数据保存系统的示例性联网环境框图;
图2为依据本发明一实施例的计算设备硬件结构示意图;
图3为依据本发明一实施例的数据保存方法的示范性流程图;
图4为依据本发明一实施例的数据块分割方法示意图;
图5为依据本发明一实施例的对比数据块比较示意图;
图6为依据本发明一实施例的数据保存装置的逻辑结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
根据本申请,数据库服务器的存储设备上保存着供客户端使用的数据信息,可以对待存储在该数据库服务器的存储设备上的数据进行重删和压缩,或者不进行重删和压缩,但是进行重删和压缩可以大大的减小待存储数据在数据库服务器上的存储设备上需要的存储空间,节省存储资源。图1示出了一种数据保存系统100的示例性联网环境框图,数据保存系统100包含客户端102和数据库服务器104,进一步的,还可以包括存储装置108。应了解,以上命名仅仅是为了描述方便,不应对本发明有任何限制。
数据库服务器104的存储设备上保存有供客户端102使用的数据,用于为客户端102的应用提供服务,这些服务可以是存储、查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。其中,数据库服务器104可以由一台或多台计算机和数据库管理系统软件共同构成。
数据库服务器104和客户端102都配置有供二者进行通讯的通信接口。可选的,数据库服务器104和客户端102通过网络106进行通信。
网络106可以是因特网,内联网,局域网(Local Area Networks,简称LANs),广域网络(Wireless Local Area Networks,简称WLANs),存储区域网络(Storage Area Networks,简称SANs)等,或者以上网络的组合。
存储装置108可以通过通信接口与数据库服务器104和/或客户端102进行耦合,也可以通过网络106与数据库服务器104和/或客户端102进行耦合,数据库服务器104和客户端102二者或二者中的任意一个可以访问存储装置108。可选的,存储装置108可以充当数据库服务器104的存储设备,存储数据库服务器104重删和压缩后的数据。
应理解,图1的目的仅仅是示例性的引入数据保存系统100的参与者以及它们的相互关系。因此,所描绘的系统100被大大地简化,本发明实施例仅仅对其进行概括性的说明,并不对其实现方式进行任何的限定。且图1中的客户端102和数据库服务器104可以是任意体系结构的,本发明实施例并不对此进行限定。
图1所示的客户端102和/或数据库服务器104可以由图2所示的计算设备200来实现。
图2为计算设备200的简化的逻辑结构示意图,如图2所示,计算设备200包括处理器202、内存单元204、输入/输出接口206、通信接口208、总线210和存储设备212。其中,处理器202、内存单元204、输入/输出接口206、通信接口208和存储设备212,通过总线210实现彼此之间的通信连接。
处理器202是计算设备200的控制中心,用于执行相关程序,以实现本发明实施例所提供的技术方案。可选的,处理器202包含一个或多个中央处理器单元(Central Processing Unit,CPU),例如,图2所示的中央处理器单元1和中央处理器单元2。可选的,计算设备200还可以包含多个处理器202,每一个处理器202可以是一个单核处理器(包含一个CPU)或多核处理器(包含多个CPU)。除非另有说明,在本发明中,一个用于执行特定功能的组件,例如,处理器202或内存单元204,可以通过配置一个通用的组件来执行相应功能来实现,也可以通过一个专门执行特定功能的专用组件来实现,本申请并不对此进行限定。处理器202可以采用通用的中央处理器,微处理器,应用专用集成电路(Application SQecific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请所提供的技术方案。
处理器202可以通过总线210与一个或多个存储方案相连接。存储方案可以包含内存单元204和存储设备212。其中,存储设备212可以为只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。内存单元204可以为随机存取存储器。内存单元204可以与处理器202集成在一起或集成在处理器202的内部,也可以是独立于处理器202的一个或多个存储单元。
供处理器202或处理器202内部的CPU执行的程序代码可以存储在存储设备212或内存单元204中。可选的,存储在存储设备212内部的程序代码(例如,操作系统、应用程序、重删压缩模块或通信模块等)被拷贝到内存单元204中,以供处理器202执行。
存储设备212可以包含高速随机存储器(RAM),也可以包含非易失性存储器,例如一个或者多个磁盘存储器,闪速存储器,或者其他非易失性存储器。在一些实施例中,存储设备还可能进一步包含与所述一个和多个处理器202分离的远程存储器,例如通过通信接口208与通信网络进行访问的网盘,该通信网络可以为因特网,内联网,局域网(LANs),广域网络(WLANs),存储区域网络(SANs)等,或者以上网络的组合。存储设备212还可以用于存储数据库服务器104重删压缩后的数据。
操作系统(例如Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS或是诸如Vxworks之类的嵌入式操作系统)包括用于控制和管理常规系统任务(例如内存管理、存储设备控制、电源管理等等)以及有助于各种软硬件组件之间通信的各种软件组件和/或驱动器。
输入/输出接口206用于接收输入的数据和信息,输出操作结果等数据。
通信接口208使用例如但不限于收发器一类的收发装置,来实现计算设备200与其他设备或通信网络之间的通信。
总线210可包括一通路,在计算设备200各个部件(例如处理器202、内存单元204、输入/输出接口206、通信接口208和存储设备212)之间传送信息。可选的,总线210可以使用有线的连接方式或采用无线的通讯方式,本申请并不对此进行限定。
应注意,尽管图2所示的计算设备200仅仅示出了处理器202、内存单元204、输入/输出接口206、通信接口208、总线210以及存储设备212,但是在具体实现过程中,本领域的技术人员应当明白,计算设备200还包含实现正常运行所必须的其他器件。
计算设备200可以为一般的通用计算机或专门用途的计算设备,包括但不限于便携计算机,个人台式计算机,网络服务器,平板电脑,手机,个人数字助理(PDA)等任何电子设备,或者以上两种或者多种的组合设备,本申请并不对计算设备200的具体实现形式进行任何限定。
此外,图2的计算设备200仅仅是一个计算设备200的例子,计算设备200可能包含相比于图2展示的更多或者更少的组件,或者有不同的组件配置方式。根据具体需要,本领域的技术人员应当明白,计算设备200还可包含实现其他附加功能的硬件器件。本领域的技术人员应当明白,计算设备200也可仅仅包含实现本发明实施例所必须的器件,而不必包含图2中所示的全部器件。同时,图2中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。
图2所示的硬件结构以及上述描述适用于本发明实施例所提供的各种计算设备,适用于执行本发明实施例所提供的各种数据保存方法。
如图2所示,计算设备200的内存单元204中包含重删压缩模块,处理器202执行该重删压缩模块程序代码,实现对待存储在数据库服务器104的存储设备212中的数据进行重删和压缩操作。数据库服务器104在进行数据库存储时是基于数据块对待存储数据进行存储的,不同的数据块之间存在较大的相似性,且不同数据块之间数据相同的部分在数据块中的相对位置是相同的,根据这一特点,在进行相似数据重删操作的时候,可以针对待存储数据块与参照数据块中相对位置相同的数据进行比较,从而避免了相对位置不同的数据间的交叉比较,大大降低了比较的复杂度。
重删压缩模块可以由一个或者多个操作指令构成,以使计算设备根据以上描述执行一个或多个方法步骤。具体的方法步骤在本申请的以下部分进行详细描述。
图3为依据本发明一实施例的数据保存方法300的示范性流程图,如图3所示,方法300包括:
S302:将待保存数据块分为大小相同的N个待保存子数据块。
其中,该N个待保存子数据块对应N个位置标识,每个待保存子数据块对应一个位置标识,N为大于1的正整数。具体的,将待保存数据块分为N个待保存子数据块,可以使用待保存子数据块在该待保存数据块中的位置顺序来表示待保存子数据块的位置标识。
在具体实现过程中,待保存数据块大小可以为数据库存储中的基本存储单元大小,将数据库中的基本存储单位数据库进一步细化,切分成更小的子数据块。例如,基本存储单位数据块为8K字节,如果256字节是最佳的待 保存子数据块的大小,则把待保存数据块分为32个大小为256字节的待保存子数据块。把8K字节的待保存数据块切成更小的待保存子数据块,每个待保存子数据块的大小为256字节,这样进行相似重删比较的基本单位变为256字节。
S304:从已保存的至少两个对比数据块中选择一个作为参照数据块。
其中,参照数据块包括N个参照子数据块,该N个参照子数据块对应N个位置标识,每个参照子数据块对应一个位置标识。参照数据块的分割方式与待保存数据块的分割方式相同,位置标识的表示方式与待保存数据块相同。
S306:比较对应相同位置标识的待保存子数据块和参照子数据块,确定第一子数据块,其中,第一子数据块为与所比较的参照子数据块不相同的待保存子数据块。
具体的,将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较,从N个待保存子数据块中确定第一子数据块,其中,i为从1递增至N的正整数。其中,第一子数据块的数目可以为1个或大于1的正整数个。
S308:选择第一子数据块的代表子数据块。
S310:将第一子数据块与第一子数据块的代表子数据块进行异或操作。
S312:使用游程编码对步骤S310的异或操作的结果进行压缩,并保存压缩结果和第一子数据块的位置信息。
步骤S306中,比较对应相同位置标识的待保存子数据块和参照子数据块时,为了避免按字节进行比较,可以比较到保存子数据块和参照子数据块的指纹,如果指纹相同,则表明两个子数据块相同,如果指纹不同,则表明两个子数据块不同,指纹即子数据块身份的凭证。计算子数据块指纹的方法多种多样,例如,可以通过计算SHA1或MD5散列值等方法进行子数据块的哈希指纹计算,本发明实施例并不对此进行限定。
比较对应相同位置标识的待保存子数据块与参照子数据块的指纹,确定第一子数据块,并保存第一子数据块的位置信息。
待保存数据块和参照数据块的一种可能的划分和比较方式如图4所示,待保存数据块402按照数据顺序分为第1到第N的N个大小相同的待保存子数据块,可以用待保存子数据块的顺序表示待保存子数据块的位置标识,例如i表示第i个待保存子数据块的位置标识,同理,参照数据块404也分为 第1到第N的N个大小相同的子数据块,比较待保存数据块402与参照数据块404相同位置标识上的子数据块的指纹,按照位置顺序,一一比较对应相同位置标识的待保存子数据块与参照子数据块的指纹,如果指纹相同,则表明子数据块相同,如果指纹不同,则表明子数据块不同。即将对应第i位置标识的待保存子数据块的指纹和对应第i位置标识的参照子数据块的指纹进行比较,如果指纹相同,则表示二者相同,如果指纹不同,则表示二者不同,其中i从1递增至N。
如果指纹相同,则可以对第i位置标识的待保存子数据块进行重删操作,即不保存第i个待保存子数据块,在进行数据读取的时候,使用参照数据块404的第i个参照子数据块来恢复待保存数据块402的第i个待保存子数据块;如果指纹不同,则说明待保存数据块402与参照数据块404的第i个子数据块不同,则保存第i个待保存子数据块的位置信息,并对待保存数据块402的第i个数据块进行后续步骤S308-S312的操作,并保留操作后的信息。其中,i从1递增到N。
可选的,在本发明实施例的一种实现方式中,可以通过“二分法”来比较待保存数据块和参照数据块,以寻找待保存数据块与参照数据块的相同位置标识的子数据块指纹不同的位置信息。
具体实现流程为:将待保存数据块和参照数据块分别分为两个大小相同的“左数据块”和“右数据块”,并计算待保存数据块的“左数据块”的指纹与“右数据块”的指纹;比较待保存数据块与参照数据块的“左数据块”指纹,并比较待保存数据块与参照数据块的“右数据块”的指纹(如果保存了参照数据块的“左数据块”和“右数据块”的指纹,则可以直接使用保存的指纹值;如果没有保存参照数据块的“左数据块”和“右数据块”的指纹,则计算参照数据块的“左数据块”和“右数据块”的指纹),如果待保存数据块与参照数据块的“左(右)数据块”的指纹相同,则表明二者的“左(右)数据块”相同,对其不再进行分割;如果待保存数据块与参照数据块的“左(右)数据块”指纹不同,则表明二者的“左(右)数据块”不同,则按照相同原理,将二者的“左(右)数据块”进行“二分法”分割,并分别比较分割后的数据块的指纹,以此类推,直至分割后的数据块的大小等于子数据块的大小,从而寻找出待保存数据块与参照数据块的所有的相同位置的子数据块指纹不同的位置信息,并记录指纹不同的位置信息。
当待保存数据块与参照数据块的相似度较高时,采用二分法可以减少寻找待保存数据块与参照数据块的相同位置的子数据块指纹不同的位置信息的运算量,增加重删压缩的速度。
应理解,保存第一子数据块的位置信息的方式多种多样,可以通过记录第一子数据块的位置信息来实现,则没有记录的位置信息上的待保存子数据块为第二子数据块;也可以通过记录第二子数据块的位置信息来实现,则没有记录的位置信息上的待保存子数据块为第一子数据块。本发明实施例,并不对保存第一子数据块的位置信息的方式进行限定。
在具体实现过程中,可以使用第一子数据块在待保存数据块中的顺序来表示第一子数据块的位置信息,例如,如图4所示,可以使用i表示第i个待保存子数据块在待保存数据块中的位置信息,其中,i为大于0小于等于N的正整数。在记录第一子数据块的位置信息时,可以通过记录第一子数据块在待保存数据块中的位置顺序来实现,没有记录的位置顺序上的待保存子数据块为第二子数据块;也可以通过记录第二子数据块的位置顺序来实现,没有记录的位置顺序上的待保存子数据块为第一子数据块。
在具体实现过程中,也可以通过记录第一子数据块的首地址和尾地址,或者记录第一子数据块的首地址与地址长度来记录第一子数据块的位置信息,如果有多个第一子数据块的位置信息连续,则只需要记录连续位置的首地址和尾地址,或连续位置的首地址和地址长度来记录该连续位置信息,从而节省记录该连续位置信息所需要的存储空间。应理解,此处的第一子数据块的首地址可以为相对待保存数据块首地址的偏移量。
因为数据库服务器104中存储的数据块存在很大的相似度,而且不同数据块的相同部分在数据块内部的相对位置一般是相同的。根据不同数据块相同部分的位置一般相同这一特点,通过把待保存数据块分割为更小粒度的待保存子数据块,并比较待保存数据块与参照数据块相同位置标识上的子数据块的指纹,避免了对不同位置标识上的子数据块的交叉比较,能够以较小的计算量,找出待保存数据块与参照数据块相同的部分,并对相同部分进行重删操作,即不保存待保存数据块的与参照数据块相同位置且指纹相同的子数据块,在进行数据恢复时,相同子数据块可以根据参照数据块对应位置的子数据块对重删的子数据块进行恢复,从而大大减小了记录待保存数据块所需要的存储单元。
参照数据块的参照子数据块的指纹可以在保存参照数据块的时候进行计算,保存在数据库;也可以在比较参照数据块与待保存数据块的对应相同位置标识的参照子数据块和待保存子数据块时进行指纹计算,本发明实施例并不对此进行限定。
具体的,S304中,从已保存的至少两个对比数据块中选择一个作为参照数据块具体包括:比较待保存数据块与至少两个对比数据块,按照步骤306的方式进行比较,从该至少两个对比数据块中选择与待保存数据块有最多相同子数据块的对比数据块作为所述参照数据块。更进一步的,可以选取与待保存数据块相同子数据块最多,且不同子数据块的分簇最少的对比数据块作为参照数据块,其中,不同子数据块的一个分簇是指位置连续的不同子数据块组成的集合,且所述集合的相邻位置的子数据块为相同子数据块。
通过待保存数据块与多个对比数据块的比较,可以判断每一个对比数据块与待保存数据块的相似度,与待保存数据块相同子数据块最多的对比数据块是与待保存数据块相似度最高的数据块。进一步的,通过在与待保存数据块相似度最高的对比数据块中选择不同子数据块的分簇最少的对比数据块作为参照数据块,可以减少记录不同子数据块的位置所需要的信息,进一步的增加了重删操作的压缩比。
例如,如图5所示,将待保存数据块402与对比数据块502、对比数据块504以及对比数据块506三个对比数据块进行比较,分别比较待保存数据块402与每一个对比数据块相同位置上的子数据块的指纹,指纹相同,则表明是相同子数据块,指纹不同,则表明是不同子数据块。如图5所示,对比数据块502与待保存数据块402相比,有3个不同子数据块,分别为第2个子数据块,第N-2个子数据块,第N-1个子数据块;对比数据块504与待保存数据块402相比,有2个不同子数据块,分别为第2个子数据块和第N-2个子数据块;对比数据块506与待保存数据块402相比,有2个不同子数据块,分别为第2个子数据块和第3个子数据块。通过比较发现,对比数据块504和对比数据块506与待保存数据块402相同子数据块最多,均为N-2个。因为对比数据块506的不同子数据块的分簇为1,即第2子数据块和第3个子数据块组成的集合;对比数据块504的不同子数据块的分簇为2,即第2个子数据块和第N-2个子数据块。所以选择不同子数据块的分簇最少的对比数据块506作为参照数据块。
比较待保存数据块402与对比数据块506相同位置的子数据块的指纹,发现待保存数据块402与对比数据块506的第2个子数据块和第3个子数据块的指纹不同,则记录第2个子数据块和第3个子数据块的位置信息。例如,可以记录第2个子数据块和第3个子数据块组成的分簇的初始位置和结束位置,或者记录该分簇的初始位置和分簇的数据长度,本发明实施例并不对此进行限定。
可选的,S308中,选择第一子数据块的代表子数据块包括:选择与每一个第一子数据块对应相同位置标识的参照子数据块作为所述每一个第一子数据块的代表子数据块。
例如,如图5所示,待保存数据块402的参照数据块为对比数据块506。如图5所示,对比数据块506与待保存数据块402相比,有2个不同子数据块,分别为第2个子数据块和第3个子数据块。则选取对比数据块506的第2个子数据块作为待保存数据块402的第2个待保存子数据块的代表数据块,选取对比数据块506的第3个子数据块作为待保存数据块402的第3个待保存子数据块的代表数据块,将待保存数据块402的第2个子数据块与对比数据块506的第2个子数据块进行异或操作,将待保存数据块402的第3个子数据块与对比数据块506的第3个子数据块进行异或操作。因为第2和第3两个待保存子数据块位置连续,则可以对其异或结果进行统一的游程编码,并统一记录位置信息。
可选的,S308中,选择第一子数据块的代表子数据块包括:将第一子数据块与至少两个已保存子数据块分别进行异或操作,根据异或操作的结果的游程编码压缩率,选择与第一子数据块的异或结果的游程编码压缩率最小的已保存子数据块作为所述代表子数据块。
即在多个可选的已保存子数据块中,通过分别与所有第一子数据块进行异或操作,并分别统计异或操作的结果的游程编码压缩率,选择一个对应游程编码压缩率最小的已保存子数据块作为参照数据块。
可选的,S308中,选择第一子数据块的代表子数据块包括:将所述第一子数据块进行两两异或操作,根据异或操作的结果的游程编码压缩率,选择与其他第一子数据块的异或结果的游程编码压缩率最小的第一子数据块作为所述代表子数据块。并保存所述代表子数据块。
例如,待保存数据块的第一子数据块有M个,为了描述方便,按照在待 保存数据块中的位置顺序对其进行编号,从第1到第M个,则将该M个第一子数据块分别两两进行异或操作。并统计每一个第一子数据块与其他M-1个第一子数据块的异或结果的游程编码压缩率,即统计第1个第一子数据块与第2到第M个第一子数据块的异或结果的游程编码压缩率,第2个第一子数据块与其他M-1个第一子数据块(第1个和第3到第M个第一子数据块)的异或结果的游程编码压缩率,以此类推,统计第M个第一子数据块与前M-1个第一子数据块的异或结果的游程编码压缩率,并选择与其他M-1个第一子数据块的异或结果的游程编码压缩率最小的第一子数据块作为参照子数据块。
具体的,因为游程编码是通过记录连续出现的字符,以及该字符连续出现的次数进行压缩编码,所以在具体实现的时候,可以通过统计异或结果中连续出现的字符进行游程编码带来的压缩空间大小,来判断每一个第一子数据块与其他第一子数据块的异或结果的游程编码的压缩率,游程编码带来的压缩空间越大,则游程编码的压缩率越大。例如,连续出现3个相同的字符,即连续出现24个“0”,则3个字节减去记录出现3个连续相同字符这一信息需要的存储空间,即其带来的压缩空间大小,如果记录连续出现3个相同字符这一信息需要的存储空间为2个字节,则带来的压缩空间为1个字节。
S310中,将第一子数据块与第一子数据块的代表子数据块进行异或操作,其中,异或操作是针对子数据块的二进制数据位(bit)进行的,即将待保存子数据块与参照子数据块进行位异或操作,如果二者相同位置上的bit位数值相同,则异或结果为0,如果二者相同位置上的bit位数值不同,则异或结果为1。
因为异或结果是由“0”和/或“1”组成的二进制字符串,通过使用游程编码对异或结果进行压缩,节省了记录信息所需要的存储空间。
方法300还包括:保存所述第一子数据块的指纹。从而使第一子数据块后续作为其他数据块的参照子数据块时,不用重复计算指纹。
在进行数据读取的时候,根据保存的游程编码结果即可还原出异或结果;根据还原出来的异或结果和保存的代表子数据块,即可还原出不同子数据块,异或结果为“1”的位置,表明该位置上第一子数据块的值与代表子数据块的值相反,异或结果为“0”的位置,表明该位置上第一子数据块的 值与代表子数据块的值相同;根据还原出的第一子数据块,保存的第一子数据块的位置信息和保存的参照数据块,即可还原出原始待保存数据块。
在本发明实施例的一种实现方式中,在步骤302之前,方法300进一步包括:从待保存数据中抽取样本,根据不同的待保存子数据块大小,分别确定所述样本的保存压缩率、保存速度和读取速度,根据所述保存速度和所述读取速度满足约束条件,且保存压缩率最小的子数据大小确定N的大小,其中,所述约束条件为:所述保存速度大于等于预设的第一阈值,所述读取速度大于等于预设的第二阈值。
在具体过程中,在子数据块N的确定过程中,可以根据样本数据,确定合适的子数据块的大小和子数据块的数目N,假设待保存数据块的大小为K,待保存子数据块的大小M,则M的取值需满足以下约束:
M>0,即M的取值需要为正数;
K/M>=2,即待保存子数据块的个数应该大于等于2;
KmodM=0,即K对M取模的结果为0,从而保证待保存子数据块的大小是相同的。
在满足以上条件的M取值中,根据方法300的流程,针对不同的待保存子数据块大小M,对样本的保存压缩率、保存速度和读取速度进行统计,在满足约束条件:保存速度大于等于预设的第一阈值,读取速度大于等于预设的第二阈值的M取值中,选择保存压缩率最小的M值,根据N=K/M确定子数据块的数目N。其中,保存压缩率为重删压缩后的数据大小与待保存数据块大小的比值,重删压缩后的数据为保存待保存数据块的信息需要的数据,包含游程编码结果、记录参照数据块和参照子数据块信息需要的数据,以及记录第一子数据块的位置信息的数据。
应了解,以上仅仅是对子数据块大小和子数据块数目N的确定过程进行举例说明,可以通过样本数据的统计结果进行确定,也可以通过其他方式进行确定,例如,基于经验值动态变化,或者在系统运行前进行设定,本发明实施例并不对此进行限定。
应理解,方法300可以由客户端102执行,或者由数据库服务器104进行,或者部分步骤由客户端102执行,部分步骤由数据库服务器104执行,例如,可以由客户端将待保存数据块分为N个待保存子数据块,并分别计 算每个待保存子数据块的指纹,然后将N个待保存子数据块的指纹发送给服务器104,服务器104执行步骤S304,为待保存数据块选择一个参照数据块,并通过相同位置标识的待保存子数据块和参照子数据块的比较,确定第一子数据块,并将第一子数据块的指示信息发送给客户端102,客户端102再将第一子数据块发送至该数据库服务器104,由数据库服务器执行后续操作。本发明实施例并不对方法300的具体执行主体进行限定。
根据本发明实施例公开的技术方案,根据数据库中数据相似性与位置相关的特点,通过将待保存数据块分为更小粒度的子数据块,并对待保存数据块和参照数据块相同位置的子数据块分别进行比较,以较小的计算量对相同子数据块进行重删操作,并将不同子数据块与参照子数据块进行异或操作,对异或结果进行游程编码压缩,大大降低了记录待保存数据块所需要的存储空间。
图6是依据本发明一实施例的数据保存装置600的逻辑结构示意图。如图6所示,装置600包含分割单元602、选择单元604、比较单元606、计算单元608和压缩单元610,其中,
分割单元602,用于将待保存数据块划分为大小相同的N个待保存子数据块,所述N个待保存子数据块对应N个位置标识,每个待保存子数据块对应一个位置标识,其中,N为大于1的正整数。
选择单元604,用于从已保存的至少两个对比数据块中选择一个作为参照数据块,所述参照数据块包括N个参照子数据块,所述N个参照子数据块对应所述N个位置标识,每个参照子数据块对应一个位置标识。
比较单元606,用于将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较,从所述N个待保存子数据块中确定第一子数据块,其中,i为从1递增至N的正整数,所述第一子数据块为与所比较的参照子数据块不相同的待保存子数据块。
所述选择单元604还用于选择所述第一子数据块的代表子数据块。
计算单元608,用于将所述所述第一子数据块的数据与所述代表子数据块的数据进行异或操作。
压缩单元610,用于使用游程编码对所述异或操作的结果进行压缩,并保存压缩结果和所述第一子数据块的位置信息。
具体实现过程中,装置600还包括重删单元,所述比较单元606还用于从所述N个待保存子数据块中确定第二子数据块,其中,所述第二子数据块为与所比较的参照子数据块相同的待保存子数据块;所述重删单元用于对所述第二子数据块进行重删操作。
根据数据库中数据相似性与位置相关的特点,通过将待保存数据块分为更小粒度的子数据块,并对待保存数据块和参照数据块相同位置的子数据块分别进行比较,以较小的计算量对相同子数据块进行重删操作,并将不同子数据块与参照子数据块进行异或操作,对异或结果进行游程编码压缩,大大降低了记录待保存数据块所需要的存储空间。
比较对应相同位置标识的待保存子数据块和参照子数据块时,为了避免按字节进行比较,比较单元606具体用于将对应第i位置标识的待保存子数据块的指纹和对应第i位置标识的参照子数据块的指纹进行比较,如果指纹相同,则表示二者相同,如果指纹不同,则表示二者不同。通过对子数据块的指纹的比较,避免了子数据块之间比较时的按位比较,从而减小了比较运算的复杂度。
可选的,所述选择单元604用于从已保存的至少两个对比数据块中选择一个作为参照数据块,包括:所述选择单元604用于从所述至少两个对比数据块中选择与所述待保存数据块有最多相同子数据块的对比数据块作为所述参照数据块。更进一步的,选择单元604可以选取与待保存数据块相同子数据块最多,且不同子数据块的分簇最少的对比数据块作为参照数据块,其中,不同子数据块的一个分簇是指位置连续的不同子数据块组成的集合,且所述集合的相邻位置的子数据块为相同子数据块。
通过待保存数据块与多个对比数据块的比较,可以判断每一个对比数据块与待保存数据块的相似度,与待保存数据块相同子数据块最多的对比数据块是与待保存数据块相似度最高的数据块。进一步的,通过在与待保存数据块相似度最高的对比数据块中选择不同子数据块的分簇最少的对比数据块作为参照数据块,可以减少记录不同子数据块的位置所需要的信息,进一步的增加了重删操作的压缩比。
可选的,所述选择单元604用于选择所述第一子数据块的代表子数据块,包括:所述选择单元604用于选择与每一个第一子数据块对应相同位置标识的参照子数据块作为所述每一个第一子数据块的代表子数据块。
因为数据库中存储的数据块存在很大的相似度,而且不同数据块的相同部分在数据块内部的相对位置一般是相同的,所以选择与每一个第一子数据块对应相同位置标识的参照子数据块作为该每一个第一子数据块的代表子数据块,可以使异或结果中出现大量连续的“0”,从而大大降低游程编码的压缩率。
可选的,所述选择单元604用于选择所述第一子数据块的代表子数据块,包括:所述选择单元604用于通过所述异或单元将所述第一子数据块与至少两个已保存子数据块分别进行异或操作,根据所述异或操作的结果的游程编码压缩率,选择与所述第一子数据块的异或结果的游程编码压缩率最小的已保存子数据块作为所述代表子数据块。
通过比较,从已保存的子数据块中选取使第一子数据块与其异或操作结果的游程编码压缩率最小的已保存子数据块作为该代表子数据块,可以在较大程度上减小保存待保存数据块需要的存储空间。
可选的,所述选择单元604用于选择所述第一子数据块的代表子数据块,包括:所述选择单元604用于通过所述异或单元将所述第一子数据块进行两两异或操作,根据异或操作的结果的游程编码压缩率,选择与其他第一子数据块的异或结果的游程编码压缩率最小的第一子数据块作为所述代表子数据块。
通过从第一子数据块中寻找一个与其他第一子数据块最相似的一个第一子数据块作为代表子数据块,可以在不依附于已保存子数据块的情况下,降低存储待保存数据块需要的存储空间。
为了确定最佳的N取值,选择单元604还用于:从待保存数据中抽取样本,根据不同的待保存子数据块大小,分别确定所述样本的保存压缩率、保存速度和读取速度,根据所述保存速度和所述读取速度满足约束条件,且保存压缩率最小的子数据大小确定N的大小,其中,所述约束条件为:所述保存速度大于等于预设的第一阈值,所述读取速度大于等于预设的第二阈值。
通过抽取样本,选择最合适的数据块分割方法,可以在满足保存处理速度和读取处理速度的前提下,最大限度的降低存储到保存数据块需要的存储空间。
可选的,所述比较单元606还用于保存所述第一子数据块的指纹。从而使第一子数据块后续作为其他数据块的参照子数据块时,不用重复计算指纹。
本发明实施例是方法300对应的装置实施例,方法300实施例部分的特征描述,适用于本发明实施例,在此不再赘述。
根据本发明公开的技术方案,根据数据库中数据相似性与位置相关的特点,通过将待保存数据块分为更小粒度的子数据块,并对待保存数据块和参照数据块相同位置的子数据块分别进行比较,以较小的计算量对相同子数据块进行重删操作,并将不同子数据块与参照子数据块进行异或操作,对异或结果进行游程编码压缩,大大降低了记录待保存数据块所需要的存储空间。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:移动硬盘、只读存储器(英文:Read-Only Memory,简称ROM)、随机存取存储器(英文:Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对 其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (20)

  1. 一种数据保存方法,其特征在于,包括:
    将待保存数据块划分为大小相同的N个待保存子数据块,所述N个待保存子数据块对应N个位置标识,每个待保存子数据块对应一个位置标识,其中,N为大于1的正整数;
    从已保存的至少两个对比数据块中选择一个作为参照数据块,所述参照数据块包括N个参照子数据块,所述N个参照子数据块对应所述N个位置标识,每个参照子数据块对应一个位置标识;
    将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较,从所述N个待保存子数据块中确定第一子数据块,其中,i为从1递增至N的正整数,所述第一子数据块为与所比较的参照子数据块不相同的待保存子数据块;
    选择所述第一子数据块的代表子数据块;
    将所述所述第一子数据块的数据与所述代表子数据块的数据进行异或操作;
    使用游程编码对所述异或操作的结果进行压缩,并保存压缩结果和所述第一子数据块的位置信息。
  2. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    从所述N个待保存子数据块中确定第二子数据块,其中,所述第二子数据块为与所比较的参照子数据块相同的待保存子数据块;
    对所述第二子数据块进行重删操作。
  3. 根据权利要求1或2所述的方法,其特征在于,将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较包括:将对应第i位置标识的待保存子数据块的指纹和对应第i位置标识的参照子数据块的指纹进行比较,如果指纹相同,则表示二者相同,如果指纹不同,则表示二者不同。
  4. 根据权利要求1-3任一项所述的方法,其特征在于,所述从已保存的至少两个对比数据块中选择一个作为参照数据块,包括:从所述至少两个对比数据块中选择与所述待保存数据块有最多相同子数据块的对比数据块作为所述参照数据块。
  5. 根据权利要求1-4任一项所述的方法,其特征在于,所述选择所述第一子数据块的代表子数据块,包括:选择与每一个第一子数据块对应相同位置标识的参照子数据块作为所述每一个第一子数据块的代表子数据块。
  6. 根据权利要求1-4任一项所述的方法,其特征在于,所述选择所述第一子数据块的代表子数据块,包括:将所述第一子数据块与至少两个已保存子数据块分别进行异或操作,根据所述异或操作的结果的游程编码压缩率,选择与所述第一子数据块的异或结果的游程编码压缩率最小的已保存子数据块作为所述代表子数据块。
  7. 根据权利要求1-4任一项所述的方法,其特征在于,所述选择所述第一子数据块的代表子数据块,包括:将所述第一子数据块进行两两异或操作,根据异或操作的结果的游程编码压缩率,选择与其他第一子数据块的异或结果的游程编码压缩率最小的第一子数据块作为所述代表子数据块。
  8. 根据权利要求1-7任一项所述的方法,其特征在于,所述将待保存数据块划分为大小相同的N个待保存子数据块之前,还包括:
    从待保存数据中抽取样本,根据不同的待保存子数据块大小,分别确定所述样本的保存压缩率、保存速度和读取速度,根据所述保存速度和所述读取速度满足约束条件,且保存压缩率最小的子数据大小确定N的大小,其中,所述约束条件为:所述保存速度大于等于预设的第一阈值,所述读取速度大于等于预设的第二阈值。
  9. 根据权利要求3所述的方法,其特征在于,所述方法还包括:保存所述第一子数据块的指纹。
  10. 一种数据保存装置,其特征在于,包括:
    分割单元,用于将待保存数据块划分为大小相同的N个待保存子数据块,所述N个待保存子数据块对应N个位置标识,每个待保存子数据块对应一个位置标识,其中,N为大于1的正整数;
    选择单元,用于从已保存的至少两个对比数据块中选择一个作为参照数据块,所述参照数据块包括N个参照子数据块,所述N个参照子数据块对应所述N个位置标识,每个参照子数据块对应一个位置标识;
    比较单元,用于将对应第i位置标识的待保存子数据块和对应第i位置标识的参照子数据块进行比较,从所述N个待保存子数据块中确定第一子数据块,其中,i为从1递增至N的正整数,所述第一子数据块为与所比较 的参照子数据块不相同的待保存子数据块;
    所述选择单元还用于选择所述第一子数据块的代表子数据块;
    计算单元,用于将所述所述第一子数据块的数据与所述代表子数据块的数据进行异或操作;
    压缩单元,用于使用游程编码对所述异或操作的结果进行压缩,并保存压缩结果和所述第一子数据块的位置信息。
  11. 根据权利要求10所述的装置,其特征在于,所述装置还包括重删单元,所述比较单元还用于从所述N个待保存子数据块中确定第二子数据块,其中,所述第二子数据块为与所比较的参照子数据块相同的待保存子数据块;所述重删单元用于对所述第二子数据块进行重删操作。
  12. 根据权利要求10或11所述的装置,其特征在于,所述比较单元具体用于将对应第i位置标识的待保存子数据块的指纹和对应第i位置标识的参照子数据块的指纹进行比较,如果指纹相同,则表示二者相同,如果指纹不同,则表示二者不同。
  13. 根据权利要求10-12任一项所述的装置,其特征在于,所述选择单元用于从已保存的至少两个对比数据块中选择一个作为参照数据块,包括:所述选择单元用于从所述至少两个对比数据块中选择与所述待保存数据块有最多相同子数据块的对比数据块作为所述参照数据块。
  14. 根据权利要求10-13任一项所述的装置,其特征在于,所述选择单元用于选择所述第一子数据块的代表子数据块,包括:所述选择单元用于选择与每一个第一子数据块对应相同位置标识的参照子数据块作为所述每一个第一子数据块的代表子数据块。
  15. 根据权利要求10-13任一项所述的装置,其特征在于,所述选择单元用于选择所述第一子数据块的代表子数据块,包括:所述选择单元用于通过所述异或单元将所述第一子数据块与至少两个已保存子数据块分别进行异或操作,根据所述异或操作的结果的游程编码压缩率,选择与所述第一子数据块的异或结果的游程编码压缩率最小的已保存子数据块作为所述代表子数据块。
  16. 根据权利要求10-13任一项所述的装置,其特征在于,所述选择单元用于选择所述第一子数据块的代表子数据块,包括:所述选择单元用于通过所述异或单元将所述第一子数据块进行两两异或操作,根据异或操作的结 果的游程编码压缩率,选择与其他第一子数据块的异或结果的游程编码压缩率最小的第一子数据块作为所述代表子数据块。
  17. 根据权利要求10-16任一项所述的装置,其特征在于,所述选择单元还用于:
    从待保存数据中抽取样本,根据不同的待保存子数据块大小,分别确定所述样本的保存压缩率、保存速度和读取速度,根据所述保存速度和所述读取速度满足约束条件,且保存压缩率最小的子数据大小确定N的大小,其中,所述约束条件为:所述保存速度大于等于预设的第一阈值,所述读取速度大于等于预设的第二阈值。
  18. 根据权利要求12所述的装置,其特征在于,所述比较单元还用于保存所述第一子数据块的指纹。
  19. 一种计算机可读介质,其特征在于,包括计算机执行指令,当计算机的处理器执行所述计算机执行指令时,所述计算机执行权利要求1-9任一项所述的方法。
  20. 一种计算设备,其特征在于,包括:处理器、存储器、总线和通信接口;
    所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述计算设备运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述装置执行权利要求1-9任一项所述的方法。
CN201580056658.7A 2015-12-08 2015-12-08 一种数据保存方法和装置 Active CN107046812B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/096696 WO2017096532A1 (zh) 2015-12-08 2015-12-08 一种数据保存方法和装置

Publications (2)

Publication Number Publication Date
CN107046812A true CN107046812A (zh) 2017-08-15
CN107046812B CN107046812B (zh) 2021-02-12

Family

ID=59012447

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580056658.7A Active CN107046812B (zh) 2015-12-08 2015-12-08 一种数据保存方法和装置

Country Status (4)

Country Link
US (1) US20180285014A1 (zh)
EP (1) EP3376393B1 (zh)
CN (1) CN107046812B (zh)
WO (1) WO2017096532A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541828A (zh) * 2023-07-03 2023-08-04 北京双鑫汇在线科技有限公司 一种服务信息数据的智能管理方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853257B1 (en) * 2016-06-24 2020-12-01 EMC IP Holding Company LLC Zero detection within sub-track compression domains
US10963436B2 (en) * 2018-10-31 2021-03-30 EMC IP Holding Company LLC Deduplicating data at sub-block granularity
CN110007855B (zh) * 2019-02-28 2020-04-28 华中科技大学 一种硬件支持的3d堆叠nvm内存数据压缩方法及系统
US10990565B2 (en) 2019-05-03 2021-04-27 EMC IP Holding Company, LLC System and method for average entropy calculation
US10817475B1 (en) 2019-05-03 2020-10-27 EMC IP Holding Company, LLC System and method for encoding-based deduplication
US10963437B2 (en) * 2019-05-03 2021-03-30 EMC IP Holding Company, LLC System and method for data deduplication
US11138154B2 (en) 2019-05-03 2021-10-05 EMC IP Holding Company, LLC System and method for offset-based deduplication
US10733158B1 (en) 2019-05-03 2020-08-04 EMC IP Holding Company LLC System and method for hash-based entropy calculation
EP4111591A1 (en) * 2020-03-25 2023-01-04 Huawei Technologies Co., Ltd. Method and system of differential compression
WO2022089755A1 (en) * 2020-10-30 2022-05-05 Huawei Technologies Co., Ltd. Method and system for differential deduplication in untrusted storage
US20230049329A1 (en) * 2021-08-10 2023-02-16 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for processing data at a storage device
CN113641308B (zh) * 2021-08-12 2024-04-23 南京冰鉴信息科技有限公司 压缩文件索引增量更新方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060643A1 (en) * 2003-08-25 2005-03-17 Miavia, Inc. Document similarity detection and classification system
CN101039374A (zh) * 2006-03-14 2007-09-19 联想(北京)有限公司 一种图像无损压缩和图像解压缩方法
CN101796492A (zh) * 2007-04-11 2010-08-04 Emc公司 使用细分段的集群存储
CN102592682A (zh) * 2012-02-20 2012-07-18 中国科学院声学研究所 一种测试数据编码压缩方法
CN103955355A (zh) * 2013-03-18 2014-07-30 清华大学 一种应用于非易失处理器中的分段并行压缩方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102218732B1 (ko) * 2014-01-23 2021-02-23 삼성전자주식회사 저장 장치 및 그것의 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060643A1 (en) * 2003-08-25 2005-03-17 Miavia, Inc. Document similarity detection and classification system
CN101039374A (zh) * 2006-03-14 2007-09-19 联想(北京)有限公司 一种图像无损压缩和图像解压缩方法
CN101796492A (zh) * 2007-04-11 2010-08-04 Emc公司 使用细分段的集群存储
CN102592682A (zh) * 2012-02-20 2012-07-18 中国科学院声学研究所 一种测试数据编码压缩方法
CN103955355A (zh) * 2013-03-18 2014-07-30 清华大学 一种应用于非易失处理器中的分段并行压缩方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541828A (zh) * 2023-07-03 2023-08-04 北京双鑫汇在线科技有限公司 一种服务信息数据的智能管理方法
CN116541828B (zh) * 2023-07-03 2023-09-22 北京双鑫汇在线科技有限公司 一种服务信息数据的智能管理方法

Also Published As

Publication number Publication date
US20180285014A1 (en) 2018-10-04
EP3376393A4 (en) 2018-12-19
WO2017096532A1 (zh) 2017-06-15
EP3376393B1 (en) 2021-02-17
EP3376393A1 (en) 2018-09-19
CN107046812B (zh) 2021-02-12

Similar Documents

Publication Publication Date Title
CN107046812A (zh) 一种数据保存方法和装置
US9984093B2 (en) Technique selection in a deduplication aware client environment
US9727629B2 (en) System, methods, and media for compressing non-relational database objects
US9753937B2 (en) File aware block level deduplication
US20160283505A1 (en) Methods and apparatus for efficient compression and deduplication
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
US20120089775A1 (en) Method and apparatus for selecting references to use in data compression
US20120191672A1 (en) Dictionary for data deduplication
CN110636141B (zh) 基于云雾协同的多云存储系统及其管理方法
US10459886B2 (en) Client-side deduplication with local chunk caching
CN103116615B (zh) 一种基于版本矢量的数据索引方法及服务器
US9990352B2 (en) Chunk compression in a deduplication aware client environment
CN103118104B (zh) 一种基于版本矢量的数据还原方法及服务器
WO2017020576A1 (zh) 一种键值存储系统中文件压实的方法和装置
CN108415671B (zh) 一种面向绿色云计算的重复数据删除方法及系统
US10339124B2 (en) Data fingerprint strengthening
US20160044077A1 (en) Policy use in a data mover employing different channel protocols
US11314432B2 (en) Managing data reduction in storage systems using machine learning
CN112162973A (zh) 指纹碰撞规避、去重及恢复方法、存储介质和去重系统
Zhou et al. An Efficient Data Fingerprint Query Algorithm Based on Two-Leveled Bloom Filter.
Wu et al. A feature-based intelligent deduplication compression system with extreme resemblance detection
KR102127785B1 (ko) 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램
Vikraman et al. A study on various data de-duplication systems
CN113220211A (zh) 数据存储系统、数据访问方法及相关装置
Devarajan et al. Enhanced Storage Management Optimization in IaaS Cloud Environment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant