一种数据去重方法及终端、服务器与流程

文档序号:11215842阅读:664来源:国知局
一种数据去重方法及终端、服务器与流程

本发明涉及云存储技术,尤其涉及一种数据去重方法及终端、服务器。



背景技术:

随着云存储技术的进步,以及云存储产品的普及,大多用户都或多或少将文件存储于云存储提供商的服务器中,并存在继续存储更多文件的需求;与此同时,云存储提供商积累了大量的数据。在用户与数据量迅速增长的过程中,有如下问题日益凸显:一方面,云存储提供商多数不收费或者收费较低,而用户的数据量与日俱增,且存储用户数据需要大量的硬件和运维成本,这样,增加了运营商的运营成本;另一方面,用户使用云存储技术存储数据的意愿越来越强烈,云存储提供商提供的存储能力也越来越强,用户与云存储提供商的服务器之间的网络速度成为制约云存储技术发展的瓶颈。因此,若发明一种新型去重方法,能使云存储提供商的服务器中尽可能少地存储相似数据,进而变相降低运营商的运营成本,变相提升用户与云存储提供商的服务器之间的网络速度,成为现在亟待解决的问题。



技术实现要素:

为解决现有存在的技术问题,本发明实施例提供了一种数据去重方法及终端、服务器。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种数据去重方法,包括:

获取待传输数据;

根据数据内容对所述待传输数据进行分块处理,得到至少两个第一数据块;

判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相 同;

根据判断结果确定是否将所述至少两个第一数据块发送至所述服务器。

本发明实施例还提供了一种数据去重方法,包括:

接收至少两个第二数据块,其中,所述至少两个第二数据块与至少一个目标存储数据对应;

以至少两个第二数据块形式存储所述至少一个目标存储数据;

接收至少两个第一数据块,其中,所述至少两个第一数据块是终端根据数据内容对待传输数据进行划分后得到的;

判断所述至少两个第一数据块与自身存储的所述至少两个第二数据块是否相同,得到判断结果;

根据判断结果确定是否存储所述至少两个第一数据块。

本发明实施例又提供了一种终端,包括:

输入装置,用于获取待传输数据;

第一处理器,用于根据数据内容对所述待传输数据进行分块处理,得到至少两个第一数据块;判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同;根据判断结果确定是否将所述至少两个第一数据块发送至所述服务器。

本发明实施例还提供了一种服务器,包括:

接收器,用于接收至少两个第二数据块,其中,所述至少两个第二数据块与至少一个目标存储数据对应;还用于接收至少两个第一数据块,其中,所述至少两个第一数据块是终端根据数据内容对待传输数据进行划分后得到的;

存储器,用于以至少两个第二数据块形式存储所述至少一个目标存储数据;

第二处理器,用于判断所述至少两个第一数据块与自身存储的所述至少两个第二数据块是否相同,得到判断结果;根据判断结果确定是否存储所述至少两个第一数据块。

本发明实施例所述的数据去重方法及终端、服务器,通过终端基于数据内容对待传输数据进行分块处理,且在将分块处理后得到的至少两个第一数据块 上传至服务器前,判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同,进而根据判断结果确定是否将所述至少两个第一数据块上传至服务器;因此,与现有去重方法相比,能够最大化的实现去重目的,节约服务器的存储空间,降低服务器的存储量,如本发明实施例所述的方法能够使云存储提供商的服务器中尽可能少地存储相似数据,进而为变相降低运营商的运营成本,变相提升用户与云存储提供商的服务器之间的网络速度奠定了基础。

附图说明

图1为本发明实施例数据去重方法的实现流程示意图一;

图2为现有去重方法的去重效果示意图;

图3为本发明实施例数据去重方法的去重效果示意图;

图4为本发明实施例数据去重方法的实现流程示意图二;

图5为本发明实施例具体应用场景示意图;

图6为本发明实施例基于数据内容对所述待传输数据进行分块处理的实现流程示意图一;

图7为本发明实施例基于数据内容对所述待传输数据进行分块处理的实现流程示意图二;

图8为本发明实施例终端的具体结构示意图;

图9为本发明实施例服务器的具体结构示意图。

具体实施方式

为了能够更加详尽地了解本发明的特点与技术内容,下面结合附图对本发明的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。

实施例一

图1为本发明实施例数据去重方法的实现流程示意图一;所述方法应用于终端;如图1所示,所述方法包括:

步骤101:获取待传输数据;

步骤102:根据数据内容对所述待传输数据进行分块处理,得到至少两个第一数据块;

步骤103:判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同;

本实施例中,所述服务器以数据块形式存储数据;具体地,所述服务器存储的所述至少两个第二数据块是任意终端根据数据内容对目标存储数据进行分块处理后而得到的;也就是说,任意终端在将目标存储数据上传至服务器进行存储之前,先采用步骤102的方式根据数据内容对所述目标存储数据进行分块处理,进而得到至少两个第二数据块,随后,该任意终端在确定出所述至少两个第二数据块未存储于所述服务器中时,将所述至少两个第二数据块发送至所述服务器;所述服务器接收到所述至少两个第二数据块后,以数据块形成存储数据,进而便于其他终端将待传输数据对应的至少两个第一数据块与所述服务器存储的所述至少两个第二数据块进行比对,将所述至少两个第一数据块中的未存储在所述服务器中的数据块发送至服务器中,进而最大化实现去重效果,最大化地节省了服务器的存储空间。

步骤104:根据判断结果确定是否将所述至少两个第一数据块发送至所述服务器。

在一具体实施例中,步骤104可以具体为:根据判断结果将所述至少两个第一数据块中的与所述服务器存储的至少两个第二数据块不相同的第一数据块发送至所述服务器;或者,根据判断结果限制将所述至少两个第一数据块中的与所述服务器存储的至少两个第二数据块相同的第一数据块发送至所述服务器;也就是说,所述终端仅将所述服务器中未存储的数据块上传至服务器,而不将所述服务器中已存储的数据块上传至服务器,进而为服务器实现去重、节省存储空间等目的奠定了基础。进一步地,由于服务器以数据块形式存储数据,所以,终端能够在将待传输数据对应的至少两个第一数据块上传至所述服务器前,先判断是否与服务器存储的至少两个第二数据块相同,进而再将与所述服务器存储的所述至少两个第二数据块不相同的第一数据块上传至所述服务器, 为服务器不存储重复数据,节约存储空间,最大化实现去重效果奠定了基础。

以下结合图2和图3进一步说明本发明实施例的去重效果;具体地,

图2为现有去重方法的去重效果示意图;如图2所示,现有终端将待传输数据上传至服务器之前通常会按照固定数据量的分块方式对该待传输数据进行切块处理,比如按照每一数据块为4mb的标准将待传输数据切分为三个数据块,分别为数据块a,数据块b和数据块c;分块完成后,终端将所述待传输数据对应的数据块a,数据块b和数据块c上传至服务器。这时,当用户对所述待传输数据进行部分修改后,欲重新将修改后的所述待传输数据上传至所述服务器时,所述终端同样会按照固定数据量的分块方式对修改后的所述待传输数据进行切块处理,得到数据块a1、数据块b1、数据块c1和数据块d;其中,图2中的阴影部分为新增加数据;这里,由于现有方式是按照固定数据量对待传输数据进行切块处理的,又由于修改后的待传输数据增量了部分新数据,所以,很容易出现修改位置处的数据块、以及修改位置之后的数据块全都不相同的情况,即对修改后的所述待传输数据进行切块后得到的数据块a1、数据块b1、数据块c1和数据块d,与对修改前的所述待传输数据进行切块后得到的数据块a、数据块b和数据块c不相同;当终端欲将数据块a1、数据块b1、数据块c1和数据块d上传至服务器时,由于服务器中未存储有所述数据块a1、数据块b1、数据块c1和数据块d,所以,终端会将所有数据块a1、数据块b1、数据块c1和数据块d均上传于服务器中,而此时上传的所述数据块a1、数据块b1、数据块c1和数据块d与服务器存储的所述数据块a、数据块b和数据块c除新增数据不相同外,其余部分均相同;通过上述分析可以看出,现有去重方法容易出现数据块重复上传的问题,去重效果较差。

图3为本发明实施例数据去重方法的去重效果示意图;如图3所示,终端基于数据内容对待传输数据进行分块处理,得到数据块1、数据块2、数据块3、数据块4、数据块5、数据块6和数据块7;这里,由于是基于数据内容对待传输数据进行分块处理的,所以分块处理后得到的数据块的大小可能相同也可能不同。并在确定服务器中未存储有上述数据块的情况下,将待传输数据对应的 数据块1至数据块7上传至服务器,并存储于服务器中;这时,当用户对所述待传输数据进行部分修改后,欲重新将修改后的所述待传输数据上传至所述服务器时,所述终端同样会基于数据内容对修改后的所述待传输数据进行分块处理,得到数据块1、数据块8、数据块9、数据块4、数据块5、数据块6和数据块7;其中,数据块8和数据块9中的阴影部分表征新增加的数据;这里,由于本发明实施例是基于数据内容对修改后的所述待传输数据进行切块处理的,因此,能够尽可能地保证较多的数据块对应相同,如修改后的待传输数据与修改前的待传输数据对应的相同的数据块包括:数据块1、数据块4、数据块5、数据块6和数据块7;进一步地,当终端欲将修改后的待传输数据对应的数据块1、数据块8、数据块9、数据块4、数据块5、数据块6和数据块7上传至服务器时,由于服务器已经存储有所述数据块1、数据块4、数据块5、数据块6和数据块7,所以,终端只需将服务器中未存储的数据块8和数据块9上传至服务器即可,无需将修改后的待传输数据对应的所有数据块均上传至服务器;因此,与现有去重方法相比,本实施例所述方法能够达到很好的去重效果,且能够很好地应对文件增删查改的情况,如仅对待传输数据的部分数据进行修改的情况下,本发明实施例能够最大化地实现去重目的,节约了服务器的存储空间,如节约了数据块1、数据块4、数据块5、数据块6和数据块7对应的存储空间,降低了服务器的存储量,进而为降低运营商的运营成本,提升用户与云存储提供商的服务器之间的网络速度奠定了实践基础。

另外,本发明实施例还能够减少终端与服务器之间的数据传输量,进而降低了服务器提供商的运营成本;同时,缩短了用户上传数据的时间,提升了用户的使用体验。

本实施例中,由于所述服务器是以数据块形式存储数据的,所以,为便于终端向服务器去获取待传输数据,所述方法还包括:终端基于所述待传输数据与所述至少两个第一数据块之间的数据关系,设置映射关系列表;这里,所述映射关系列表表征有所述待传输数据与所述至少两个第一数据块的对应关系,例如所述映射关系列表中包含有待传输数据的数据标识、与至少两个第一数据 块的数据标识的对应关系,且该对应关系还表征了所述至少两个第一数据块在所述待传输数据中的位置。进而当所述终端将所述映射关系列表发送至所述服务器中时,所述服务器能够基于所述映射关系列表从自身存储的数据块中选取出所述至少两个第一数据块以组成所述待传输数据,实现终端向服务器去获取待传输数据的目的。

本发明实施例所述的方法,通过终端基于数据内容对待传输数据进行分块处理,且在将分块处理后得到的至少两个第一数据块上传至服务器前,判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同,进而根据判断结果确定是否将所述至少两个第一数据块上传至服务器;因此,与现有去重方法相比,能够最大化的实现去重目的,节约服务器的存储空间,降低服务器的存储量,如本发明实施例所述的方法能够使云存储提供商的服务器中尽可能少地存储相似数据,进而为变相降低运营商的运营成本,变相提升用户与云存储提供商的服务器之间的网络速度奠定了基础。

实施例二

图4为本发明实施例数据去重方法的实现流程示意图二;所述方法应用于终端;如图4所示,所述方法包括:

步骤401:获取待传输数据;

步骤402:根据数据内容对所述待传输数据进行分块处理,得到至少两个第一数据块;

步骤403:计算所述至少两个第一数据块所对应的特征值;

步骤404:基于所述至少两个第一数据块所对应的特征值,判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同;

在一具体实施例中,所述终端并非直接判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同,而且,将所述至少两个第一数据块所对应的特征值发送至服务器中,使所述服务器去判断至少两个第一数据块与服务器存储的至少两个第二数据块是否相同;具体地,所述终端将所述至少两 个第一数据块所对应的特征值发送至所述服务器,以使所述服务器根据接收到的所述至少两个第一数据块所对应的特征值判断是否与自身存储的所述至少两个第二数据块相同。进一步地,所述服务器将得到的判断结果发送至所述终端,进而使所述终端根据判断结果确定是否将所述至少两个第一数据块发送至所述服务器。

本实施例中,所述服务器以数据块形式存储数据;具体地,所述服务器存储的所述至少两个第二数据块是任意终端根据数据内容对目标存储数据进行分块处理后而得到的;也就是说,任意终端在将目标存储数据上传至服务器进行存储之前,先采用步骤402的方式根据数据内容对所述目标存储数据进行分块处理,进而得到至少两个第二数据块,随后,该任意终端在确定出所述至少两个第二数据块未存储于所述服务器中时,将所述至少两个第二数据块发送至所述服务器;所述服务器接收到所述至少两个第二数据块后,以数据块形成存储数据,进而便于其他终端将待传输数据对应的至少两个第一数据块与所述服务器存储的所述至少两个第二数据块进行比对,将所述至少两个第一数据块中的未存储在所述服务器中的数据块发送至服务器中,进而最大化实现去重效果,最大化地节省了服务器的存储空间。

步骤405:根据判断结果确定是否将所述至少两个第一数据块发送至所述服务器。

在一具体实施例中,步骤104可以具体为:根据判断结果将所述至少两个第一数据块中的与所述服务器存储的至少两个第二数据块不相同的第一数据块发送至所述服务器;或者,根据判断结果限制将所述至少两个第一数据块中的与所述服务器存储的至少两个第二数据块相同的第一数据块发送至所述服务器;也就是说,所述终端仅将所述服务器中未存储的数据块上传至服务器,而不将所述服务器中已存储的数据块上传至服务器,进而为服务器实现去重、节省存储空间等目的奠定了基础。进一步地,由于服务器以数据块形式存储数据,所以,终端能够在将待传输数据对应的至少两个第一数据块上传至所述服务器前,先判断是否与服务器存储的至少两个第二数据块相同,进而再将与所述服 务器存储的所述至少两个第二数据块不相同的第一数据块上传至所述服务器,为服务器不存储重复数据,节约存储空间,最大化实现去重效果奠定了基础。

以下结合图2、图3和图5进一步说明本发明实施例的去重效果;具体地,

图2为现有去重方法的去重效果示意图;如图2所示,现有终端将待传输数据上传至服务器之前通常会按照固定数据量的分块方式对该待传输数据进行切块处理,比如按照每一数据块为4mb的标准将待传输数据切分为三个数据块,分别为数据块a,数据块b和数据块c;分块完成后,终端将所述待传输数据对应的数据块a,数据块b和数据块c上传至服务器。这时,当用户对所述待传输数据进行部分修改后,欲重新将修改后的所述待传输数据上传至所述服务器时,所述终端同样会按照固定数据量的分块方式对修改后的所述待传输数据进行切块处理,得到数据块a1、数据块b1、数据块c1和数据块d;其中,图2中的阴影部分为新增加数据;这里,由于现有方式是按照固定数据量对待传输数据进行切块处理的,又由于修改后的待传输数据增量了部分新数据,所以,很容易出现修改位置处的数据块、以及修改位置之后的数据块全都不相同的情况,即对修改后的所述待传输数据进行切块后得到的数据块a1、数据块b1、数据块c1和数据块d,与对修改前的所述待传输数据进行切块后得到的数据块a、数据块b和数据块c不相同;当终端欲将数据块a1、数据块b1、数据块c1和数据块d上传至服务器时,由于服务器中未存储有所述数据块a1、数据块b1、数据块c1和数据块d,所以,终端会将所有数据块a1、数据块b1、数据块c1和数据块d均上传于服务器中,而此时上传的所述数据块a1、数据块b1、数据块c1和数据块d与服务器存储的所述数据块a、数据块b和数据块c除新增数据不相同外,其余部分均相同;通过上述分析可以看出,现有去重方法容易出现数据块重复上传的问题,去重效果较差。

图3为本发明实施例数据去重方法的去重效果示意图;如图3所示,终端基于数据内容对待传输数据进行分块处理,得到数据块1、数据块2、数据块3、数据块4、数据块5、数据块6和数据块7;这里,由于是基于数据内容对待传输数据进行分块处理的,所以分块处理后得到的数据块的大小可能相同也可能 不同。并在确定服务器中未存储有上述数据块的情况下,将待传输数据对应的数据块1至数据块7上传至服务器,并存储于服务器中;这时,当用户对所述待传输数据进行部分修改后,欲重新将修改后的所述待传输数据上传至所述服务器时,所述终端同样会基于数据内容对修改后的所述待传输数据进行分块处理,得到数据块1、数据块8、数据块9、数据块4、数据块5、数据块6和数据块7;其中,数据块8和数据块9中的阴影部分表征新增加的数据;这里,由于本发明实施例是基于数据内容对修改后的所述待传输数据进行切块处理的,因此,能够尽可能地保证较多的数据块对应相同,如修改后的待传输数据与修改前的待传输数据对应的相同的数据块包括:数据块1、数据块4、数据块5、数据块6和数据块7;进一步地,当终端欲将修改后的待传输数据对应的数据块1、数据块8、数据块9、数据块4、数据块5、数据块6和数据块7上传至服务器时,由于服务器已经存储有所述数据块1、数据块4、数据块5、数据块6和数据块7,所以,终端只需将服务器中未存储的数据块8和数据块9上传至服务器即可,无需将修改后的待传输数据对应的所有数据块均上传至服务器;因此,与现有去重方法相比,本实施例所述方法能够达到很好的去重效果,且能够很好地应对文件增删查改的情况,如仅对待传输数据的部分数据进行修改的情况下,本发明实施例能够最大化地实现去重目的,节约了服务器的存储空间,如节约了数据块1、数据块4、数据块5、数据块6和数据块7对应的存储空间,降低了服务器的存储量,进而为降低运营商的运营成本,提升用户与云存储提供商的服务器之间的网络速度奠定了实践基础。

在本实施例中,所述终端基于数据内容将待传输数据进行分块处理,得到数据量大小不固定的至少两个第一数据块后,计算所述至少两个第一数据块所对应的特征值,例如,计算所述至少两个第一数据块所对应的哈希值,并将所述至少两个第一数据块所对应的哈希值发送至所述服务器,以使所述服务器根据接收到的所述至少两个第一数据块所对应的哈希值判断是否与自身存储的所述至少两个第二数据块相同,随后,所述服务器将判断结果反馈至所述终端,以便于所述终端仅上传所述服务器中未存储的数据块;因此,本实施例所述方 法能够达到很好的去重效果,且能够很好地应对文件增删查改的情况。

另外,本发明实施例还能够减少终端与服务器之间的数据传输量,进而降低了服务器提供商的运营成本;同时,缩短了用户上传数据的时间,提升了用户的使用体验。

图5为本发明实施例具体应用场景示意图;基于如图5所示的应用场景,本实施例中,终端向服务器上传待传输数据的传输流程具体为:

步骤a:终端使用基于内容的数据分片算法,基于数据内容对待传输数据进行分块处理,得到至少两个第一数据块;并计算所述至少两个第一数据块对应的哈希值,将所述至少两个第一数据块对应的哈希值存储到待处理队列中;

步骤b:从待处理队列中取出第一个第一数据块对应的哈希值,通过第一接口,例如chunksquery接口上传至服务器,以通过所述服务器去判断第一个第一数据块是否已存储于所述服务器中;如果终端基于所述服务器反馈的判断结果确定出所述服务器未存储有所述第一个第一数据块时,则终端通过第二接口,例如chunkput接口将所述第一个第一数据块上传服务器;

步骤c:判断所述待处理队列是否为空;若是,执行步骤d;否则执行步骤b;

步骤d:所述终端调用第三接口,例如filemake接口确认所述待传输数据上传完毕。这里,所述终端再调用filemake接口时,需要告知所述服务器所述待传输数据是由哪些数据块组成的,数据块的排列顺序是怎样的,这样,便于服务器从自身存储的数据块中提取出组成所述待传输数据的数据块。

需要注意的是,在云存储系统的实现中,为安全考虑,可以仅作针对每一用户的数据去重,不做跨用户之间的数据去重。

本实施例中,由于所述服务器是以数据块形式存储数据的,所以,为便于终端向服务器去获取待传输数据,所述方法还包括:终端基于所述待传输数据与所述至少两个第一数据块之间的数据关系,设置映射关系列表;这里,所述映射关系列表表征有所述待传输数据与所述至少两个第一数据块的对应关系,例如所述映射关系列表中包含有待传输数据的数据标识、与至少两个第一数据 块的数据标识的对应关系,且该对应关系还表征了所述至少两个第一数据块在所述待传输数据中的位置。进而当所述终端将所述映射关系列表发送至所述服务器中时,所述服务器能够基于所述映射关系列表从自身存储的数据块中选取出所述至少两个第一数据块以组成所述待传输数据,实现终端向服务器去获取待传输数据的目的。

本发明实施例所述的方法,通过终端基于数据内容对待传输数据进行分块处理,且在将分块处理后得到的至少两个第一数据块上传至服务器前,判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同,进而根据判断结果确定是否将所述至少两个第一数据块上传至服务器;因此,与现有去重方法相比,能够最大化的实现去重目的,节约服务器的存储空间,降低服务器的存储量,如本发明实施例所述的方法能够使云存储提供商的服务器中尽可能少地存储相似数据,进而为变相降低运营商的运营成本,变相提升用户与云存储提供商的服务器之间的网络速度奠定了基础。

实施例三

基于实施例一或实施例二所述的方法,本发明实施例提供了一种基于数据内容对所述待传输数据进行分块处理的具体方法。如图6所示,所述实施例一步骤102或实施例二步骤402具体包括:

步骤601:在所述待传输数据中选取出目标子数据;

步骤602:计算所述目标子数据对应的特征值;

在实际应用中,所述特征值可以具体为哈希值,例如,计算所述目标子数据对应的哈希值。

这里,为便于控制对所述待传输数据进行分块处理后得到的每一数据块的数据量,本实施例中,可以提前设置预设数据量,进而将分块处理后得到的所述至少两个第一数据块中的每一个第一数据块的数据量控制在所述预设数据量左右。

步骤603:基于所述目标子数据对应的特征值以及预期数据量之间的数据 关系,对所述待传输数据进行分块处理,得到至少两个第一数据块。

这里,所述目标子数据的数据量小于等于所述预设数据量。

在一具体实施例中,所述步骤603可以具体为:对所述目标子数据对应的特征值和预期数据量进行取模运算,得到第一运算结果;判断所述第一运算结果是否满足预设规则;基于判断结果对所述待传输数据进行分块处理,得到至少两个第一数据块。例如,对所述目标子数据对应的哈希值和预设数据量进行取模运算,得到第一运算结果,判断所述第一运算结果是否等于预设阈值,进而基于判断结果确定是否在所述目标子数据处对所述待传输数据进行分块处理,这样,基于该分块方式得到至少两个第一数据块。

具体地,所述基于判断结果对所述待传输数据进行分块处理,得到至少两个第一数据块,包括:

当所述第一运算结果满足所述预设规则时,例如,所述第一运算结果等于所述预设阈值时,将当前所述目标子数据作为分块界限,对所述待传输数据进行分块,得到第一个第一数据块;

按照该分块方式,对所述待传输数据中除所述第一个第一数据块以外的至少部分其他数据进行分块处理,以最终得到至少两个第一数据块。

或者,当所述第一运算结果不满足所述预设规则时,例如,所述第一运算结果不等于所述预设阈值时,从所述待传输数据中重新选取出目标子数据,以使重新选取出的目标子数据与未重新选取前的目标子数据部分相同;在一优选实施例中,使重新选取出的目标子数据与未重新选取前的目标子数据最大可能地相同,如仅相差一个字节;进一步地,在实际应用中,为便于重新选取出目标子数据,且使重新选取出的目标子数据与未重新选取前的目标子数据最大可能地相同,可以将未重新选取前的目标子数据向有移动一个字节,进而满足重新选取出的目标子数据与未重新选取前的目标子数据部分相同的要求,即仅相差一个字节;

进一步地,计算重新选取出的目标子数据对应的特征值;基于重新选取出的目标子数据对应的特征值以及所述预期数据量之间的数据关系,对所述待传 输数据进行分块处理,得到至少两个第一数据块。例如,对重新选取出的目标子数据对应的哈希值和所述预期数据量进行取模运算,得到第一运算结果;判断第一运算结果是否满足预设规则;进而基于判断结果确定是否在重新选取后的所述目标子数据处对所述待传输数据进行分块处理。

以下给出具体实施例对本发明实施例基于数据内容对待传输数据的分块处理的流程做进一步详细说明:

假设待传输数据的数据流为f个字节,且预期基于数据内容将所述f个字节划分为平均大小为n个字节的数据块,也就是说,将所述待传输数据进行分块处理后得到的每一个第一数据块控制在n个字节左右。这里,所述f为大于等于2的正整数,所述n和w为大于等于1的正整数;所述w小于等于n;此时,该流程具体为:

步骤701:设定目标子数据,也即滑动窗口,使所述滑动窗口的数据量大小为w个字节;在所述待传输数据对应的f个字节中选取出前w个字节作为当前窗口w,执行步骤702;

步骤702:使用哈希算法h,计算当前窗口w的哈希值h(w),判断h(w)modn后得到的第一运算结果是否等于预设阈值;当等于所述预设阈值时,执行步骤703;否则,执行步骤704;

这里,所述预设阈值为具体为0至n-1中的任一值。

步骤703:将当前窗口w作为分界,对所述待传输数据进行分块处理,并将当前窗口w对应的w个字节作为切分出的一个第一数据块的最后w个字节,进而得到一个第一数据块;将滑动窗口在数据流中向后移动w个字节,生成新的当前窗口w,并执行步骤702;这里,若数据流中剩余字节数不足w字节时,分块过程结束;

步骤704:将滑动窗口在数据流中向后移动1个字节,生成新的当前窗口w,并执行步骤702,这里,若数据流中剩余字节数不足w字节时,分块过程结束。

这里,值得注意的是,以上算法中的滑动窗口大小w,哈希算法h均有多 种选择,在实际应用中,可以根据实际情况进行调优。

实施例四

本发明实施例还提供了一种应用于服务器的数据去重方法,所述方法包括:

步骤801:接收至少两个第二数据块,其中,所述至少两个第二数据块与至少一个目标存储数据对应;

步骤802:以至少两个第二数据块形式存储所述至少一个目标存储数据;

步骤803:接收至少两个第一数据块,其中,所述至少两个第一数据块是终端根据数据内容对待传输数据进行划分后得到的;

步骤804:判断所述至少两个第一数据块与自身存储的所述至少两个第二数据块是否相同,得到判断结果;

步骤805:根据判断结果确定是否存储所述至少两个第一数据块。

在一具体实施例中,步骤801可以具体为:接收所述至少两个第一数据块所对应的特征值;

对应地,步骤804具体为:基于所述至少两个第一数据块所对应的特征值,判断所述至少两个第一数据块与自身存储的所述至少两个第二数据块是否相同,得到判断结果。

本实施例中,所述根据判断结果确定是否存储所述至少两个第一数据块,包括:根据判断结果接收并存储所述至少两个第一数据块中与所述至少两个第二数据块不相同的第一数据块。

本实施例中,所述方法还包括:接收映射关系列表,其中,所述映射关系列表表征所述待传输数据与所述至少两个第一数据块之间的数据关系;基于所述映射关系列表从自身存储的数据块中选取出所述至少两个第一数据块,以组成所述待传输数据。

本领域技术人员应当理解,本实施例所述服务器为实施例一至实施例三所述的服务器,因此,本实施例所述方法可以参照实施例一至实施例三的有关描述而理解,这里不再赘述。

实施例五

为实现实施例一至实施例三任一项所述的方法,本发明实施例还提供了一种终端,如图8所示,所述终端包括:

输入装置81,用于获取待传输数据;

第一处理器82,用于根据数据内容对所述待传输数据进行分块处理,得到至少两个第一数据块;判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同;根据判断结果确定是否将所述至少两个第一数据块发送至所述服务器。

本实施例中,所述第一处理器82,还用于计算所述至少两个第一数据块所对应的特征值;基于所述至少两个第一数据块所对应的特征值,判断所述至少两个第一数据块与服务器存储的至少两个第二数据块是否相同。

本实施例中,所述终端,还包括:

发射器83,用于将所述至少两个第一数据块所对应的特征值发送至所述服务器,以使所述服务器根据接收到的所述至少两个第一数据块所对应的特征值判断是否与自身存储的所述至少两个第二数据块相同。

本实施例中,所述发射器83,还用于根据判断结果将所述至少两个第一数据块中的与所述服务器存储的至少两个第二数据块不相同的第一数据块发送至所述服务器。

本实施例中,所述第一处理器82,还用于基于所述待传输数据与所述至少两个第一数据块之间的数据关系,设置映射关系列表;

所述发射器83,还用于将所述映射关系列表发送至所述服务器,以便于所述服务器基于所述映射关系列表从自身存储的数据块中选取出所述至少两个第一数据块组成所述待传输数据。

本实施例中,所述第一处理器82,还用于在所述待传输数据中选取出目标子数据;计算所述目标子数据对应的特征值;基于所述目标子数据对应的特征值以及预期数据量之间的数据关系,对所述待传输数据进行分块处理,得到至少两个第一数据块。

本实施例中,所述第一处理器82,还用于对所述目标子数据对应的特征值和预期数据量进行取模运算,得到第一运算结果;判断所述第一运算结果是否满足预设规则;基于判断结果对所述待传输数据进行分块处理,得到至少两个第一数据块。

本实施例中,所述第一处理器82,还用于当所述第一运算结果满足所述预设规则时,将当前所述目标子数据作为分块界限,对所述待传输数据进行分块,得到第一个第一数据块;对所述待传输数据中除所述第一个第一数据块以外的至少部分其他数据进行分块处理,以最终得到至少两个第一数据块。

本实施例中,所述第一处理器82,还用于当所述第一运算结果不满足所述预设规则时,从所述待传输数据中重新选取出目标子数据,以使重新选取出的目标子数据与未重新选取前的目标子数据部分相同;计算重新选取出的目标子数据对应的特征值;基于重新选取出的目标子数据对应的特征值以及所述预期数据量之间的数据关系,对所述待传输数据进行分块处理,得到至少两个第一数据块。

本领域技术人员应当理解,本发明实施例的终端中各处理单元的功能,可参照前述实施例一至实施例三所述的数据去重方法的相关描述而理解,这里不再赘述。

实施例六

为实现实施例四所述的方法,本发明实施例还提供了一种服务器,如图9所示,所述服务器包括:

接收器91,用于接收至少两个第二数据块,其中,所述至少两个第二数据块与至少一个目标存储数据对应;还用于接收至少两个第一数据块,其中,所述至少两个第一数据块是终端根据数据内容对待传输数据进行划分后得到的;

存储器92,用于以至少两个第二数据块形式存储所述至少一个目标存储数据;

第二处理器93,用于判断所述至少两个第一数据块与自身存储的所述至少 两个第二数据块是否相同,得到判断结果;根据判断结果确定是否存储所述至少两个第一数据块。

本实施例中,所述接收器91,还用于接收所述至少两个第一数据块所对应的特征值;

所述第二处理器93,还用于基于所述至少两个第一数据块所对应的特征值,判断所述至少两个第一数据块与自身存储的所述至少两个第二数据块是否相同,得到判断结果。

本实施例中,所述存储器92,还用于根据判断结果存储所述至少两个第一数据块中与所述至少两个第二数据块不相同的第一数据块。

本实施例中,所述接收器91,还用于接收映射关系列表,其中,所述映射关系列表表征所述待传输数据与所述至少两个第一数据块之间的数据关系;

所述第二处理器93,还用于基于所述映射关系列表从自身存储的数据块中选取出所述至少两个第一数据块,以组成所述待传输数据。

本领域技术人员应当理解,本发明实施例的服务器中各处理单元的功能,可参照前述实施例一至实施例三所述的数据去重方法的相关描述而理解,这里不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来 实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1