一种数据编解码方法及设备
技术领域
本发明涉及通信技术领域,尤其涉及一种数据编解码方法及设备。
背景技术
当前,编码端与解码端之间可以通过指纹值来代替重复数据段来进行数据的传输,比如说当前网络中存在当前编码端之前已经向解码端发送过第一数据段,此时编码端与解码端都保存了该数据段以及该数据段对应的指纹值,当下次编码端需要再向该解码端发送第一数据段时,则该编码端将直接使用第一数据段对应的指纹值进行编码。
当在当前网络中存在多个编码端与多个解码端之间通讯时,比如说第一编码端向第一解码端发送第一数据段,此时该第一编码端以及第一解码端将保存第一数据段以及第一数据段对应的指纹值,当第二编码端向第二解码端发送第一数据段时,第二编码端以及第二解码端也将保存第一数据段以及第一数据段对应的指纹值,这样就使得整个网络中的不同编码端以及不同解码端重复存储相同的数据段以及指纹值,导致了存储空间的消耗以及存储空间的浪费,并且编码端与解码端之间重复传输相同的数据内容也会给网络带宽造成压力以及浪费。
发明内容
本发明实施例提供了一种数据编解码方法及设备,用以解决现有技术编码端以及解码端中存在存储空间浪费以及网络带宽浪费的问题。
其具体的技术方案如下:
本发明实施例第一方面提供了一种数据编码方法,包括:
在当前编码端检测到用于标识当前数据段的指纹值未存在于当前编码端的指纹字典中时,查看所述当前数据段的指纹值是否存在于全局指纹服务器中,所述全局指纹服务器保存有各个编码端的指纹字典中的指纹值;
在所述当前数据段的指纹值存在于全局指纹服务器中时,生成至少包含所述指纹值的压缩数据;
将所述压缩数据发送至解码端。
结合第一方面,在第一种可能的实现的方式中,当所述全局指纹服务器中还保存有指纹值与解码端标识之间的对应关系时,所述生成包含指纹值的压缩数据,具体为:
当前编码端根据当前数据段对应指纹值,在所述全局指纹值服务器中获取所述指纹值对应的解码端标识,并生成包含所述指纹值和获取的解码端标识的压缩数据。
结合第一方面,在第二种可能实现的方式中,还包括:
在所述当前数据段的指纹值未存在于全局指纹服务器中时,所述当前编码端生成包含当前数据段和当前数据段的指纹值的压缩数据;并
将所述压缩数据发送至解码端;
将当前数据段的指纹值以及接收当前数据段的解码端的标识对应存储至全局指纹服务器中。
本发明实施例第二方面提供了一种数据解码方法,包括:
当前解码端接收编码端发送的压缩数据;
当所述压缩数据中包含指纹值,并且所述指纹值未存在于当前解码端的指纹字典中时,将所述指纹值发送至全局指纹服务器,所述全局指纹服务器保存有指纹值和解码端标识的对应关系,其中指纹值为各个编码端中的指纹字典中的指纹值,解码端标识为保存有所述指纹值对应的数据段的解码端的标识;
当前解码端接收所述全局指纹服务器返回的对应所述指纹值的解码端标识,以及从所述解码端标识对应的解码端获取所述指纹值对应的数据段;或者接收所述全局指纹服务器返回的从所述解码端标识对应的解码端中获取的与所述指纹值对应的数据段;
根据接收到的数据段进行解码。
结合第二方面,在第一种可能的实现方式中,当所述压缩数据包含指纹值以及解码端标识时,还包括:
根据解码端标识,将接收到的指纹值发送至所述解码端标识对应的解码端;
接收所述解码端标识对应的解码端返回的所述指纹值对应的数据段;
根据接收到的数据段进行解码。
本发明实施例第三方面提供了一种数据编码设备,包括:
检测模块,用于在检测到用于标识当前数据段的指纹值未存在于的指纹字典中时,查看所述当前数据段的指纹值是否存在于全局指纹服务器中,所述全局指纹服务器保存有各个编码端的指纹字典中的指纹值;
压缩模块,用于在所述当前数据段的指纹值存在于全局指纹服务器中时,生成至少包含所述指纹值的压缩数据;
发送模块,用于将所述压缩数据发送至解码端。
结合第三方面,在第一种可能实现的方式中,所述压缩模块具体用于在所述全局指纹服务器中还保存有指纹值与解码端标识之间的对应关系时,根据当前数据段对应指纹值,在全局指纹服务器中获取指纹值对应的解码端标识,并生成包含指纹值和获取的解码端标识的压缩数据。
结合第三方面,在第二种可能的实现方式中,所述压缩模块还用于在所述当前数据段的指纹值未存在于全局指纹服务器中时,生成包含当前数据段和当前数据段的指纹值的压缩数据;
所述发送模块,还用于将所述压缩数据发送至解码端,并将当前数据段的指纹值以及接收当前数据段的解码端的标识对应存储至全局指纹服务器中。
本发明实施例第四方面提供了一种数据解码设备,包括:
接收模块,用于接收编码端发送的压缩数据;
发送模块,用于当所述压缩数据中包含指纹值,并且所述指纹值未存在于当前解码端的指纹字典中时,将所述指纹值发送至全局指纹服务器,所述全局指纹服务器保存有指纹值和解码端标识的对应关系,其中指纹值为各个编码端中的指纹字典中的指纹值,解码端标识为保存所述指纹值对应的数据段的解码端的标识;
处理模块,用于接收所述全局指纹服务器返回的对应所述指纹值的解码端标识,以及从接收到的所述解码端标识对应的解码端获取所述指纹值对应的数据段;或者接收所述全局指纹服务器返回的从所述解码端标识对应的解码端中获取与所述指纹值对应的数据段;
解码模块,用于根据接收到的数据段进行解码。
结合第四方面,在第一种可能的实现方式中,所述处理模块还用于当所述压缩数据包含指纹值以及解码端标识时,根据解码端标识,将接收到的指纹值发送至解码端标识对应的解码端,接收所述解码端标识对应的解码端返回的所述指纹值对应的数据段。
第五方面本发明实施例提供了一种设备,包括:
接收模块,用于接收当前解码端发来的指纹值;
获取模块,用于从预先保存的指纹值和解码端标识的对应关系中,获取接收到的指纹值对应的解码端标识,其中指纹值为各个编码端中的指纹字典中的指纹值,解码端标识为已保存指纹值对应的数据段的解码端的标识;
发送模块,用于将获取的解码端标识发送给当前解码端;或者从获取的解码端标识对应的解码端中获取对应接收到的指纹值的数据段,并将获取的数据段发送给当前解码端。
在本发明实施例中编码端检测到用于标识当前数据段的指纹值未在自身存储的包含自身已编码数据段对应指纹值的指纹字典中时,该编码端会向保存有所有指纹字典中指纹值的全局指纹服务器查找当前数据段对应的指纹值,在全局指纹服务器中查找出该指纹值时,将该指纹值替代当前数据段进行数据编码,生成包含该指纹值的压缩数据,并将该压缩数据发送至目的解码端,也就是说若是编码端自身没有当前数据段对应指纹值,而全局指纹服务器存在该指纹值时,该编码端将确定此数据段为重复数据,所以该编码端将直接使用该指纹值替代该数据段进行编码,而不是直接使用该数据段进行编码,这样避免了重复数据段被重复存储的问题,进而减少了存储空间的占用量以及存储空间的浪费。同时也避免了编码端与多个解码端之间重复的传输相同的数据段造成的网络带宽浪费,提升了网络带宽的利用率。
附图说明
图1所示为本发明实施例中一种数据编码方法的流程图;
图2所示为本发明实施例中编码端与全局指纹服务器的交互流程示意图;
图3所示为本发明实施例中一种数据解码方法的流程图;
图4所示为本发明实施例中解码端与全局指纹服务器之间的交互流程示意图;
图5所示为本发明实施例中解码端与其他解码端之间的交互流程示意图;
图6所示为本发明实施例中一种数据段发送方法的流程图;
图7所示为本发明实施例中一种数据编码设备的结构示意图;
图8所示为本发明实施例中一种据解码设备的结构示意图;
图9所示为本发明实施例中一种数据段发送设备的结构示意图;
图10所示为本发明实施例中一种编码器的结构示意图;
图11所示为本发明实施例中一种解码器的结构示意图;
图12所示为本发明实施例中一种服务器的结构示意图。
具体实施方式
下面通过附图以及具体实施例对基于网络功能虚拟化的编解码方法进行详细的说明,在本发明实施例中提供了以下的实现方式来实现编解码的方法,当然本发明技术方案并不限于以下实施例中的实施方式。
实施例一:
如图1所示为本发明实施例中一种数据编码方法的流程图,该方法包括:
步骤101,当前编码端检测到用于标识当前数据段的指纹值未存在于当前编码端的指纹字典中时,查看当前数据段的指纹值是否存在于全局指纹服务器中。
步骤102,在当前数据段的指纹值存在于全局指纹服务器中时,生成包含指纹值的压缩数据。
步骤103,将压缩数据发送至解码端。
当前编码端包括编码器、指纹(FP,Fingerprint)字典、数据段(chunk)字典和地址管理。编码器控制整个流程,并完成对数据的分段。FP字典存储之前出现过的数据段的指纹值。Chunk字典用来存储之前出现过的数据段,地址管理用来管理chunk字典中的空闲地址,当出现新数据段时,提供存放新数据段的存储地址。
解码端包括解码器、FP字典、chunk字典。解码器控制解码端的整个解码流程,对接收到的数据进行重构。FP字典存放指纹值对应的数据段存储地址,利用该地址可以从chunk字典中读出数据段。Chunk字典存放数据段的内容。编码端与解码端的FP字典以及chunk字典同步更新。
在本发明实施例中就以一个编码端以及一个解码端的实施过程进行说明,其他编码端以及解码端的处理方式与该编码端以及解码端的处理方式相同。
首先,当前编码端接收到一个数据之后,当前编码端中的编码器会通过对接收到数据分段处理,并对得到的当前数据段进行计算,得到当前数据段对应的指纹值。
在得到当前数据段对应的指纹值之后,当前编码端将确定得到的指纹值是否在自身预存的指纹字典中,其中,预存的指纹字典中的指纹值为当前编码端已编码数据段对应的指纹值。
若是得到的指纹值存在于当前编码端存储的指纹字典中时,当前编码端将直接使用该指纹值替代当前数据段进行编码,并将包含指纹值的压缩数据发送至解码端。
若是得到的指纹值未存在于当前编码端存储的指纹字典中时,当前编码端将向全局指纹服务器中确定是否存在该指纹值。其中,该全局指纹服务器中保存了当前网络中各个编码端中的指纹字典中的指纹值,当然为了进一步减少服务器所占用的存储空间,该全局指纹服务器会不重复的保存指纹值,比如说:编码端A中保存的指纹值包括:1、2、3;编码端B中保存的指纹值包括:3、4、5;编码端C中保存的指纹值包括:4、5、6;,此时在全局指纹服务器中保存的指纹值就应该是1、2、3、4、5、6。
若是当前编码端在全局指纹服务器中查找出当前数据段对应的指纹值,也就是说对于当前编码端来讲该指纹值对应的当前数据段为新数据段,但是该数据段其实已被网络中的其他编码端编码过,因此对于整个网络来讲该当前数据段并不是新数据段。
此时当前编码端将使用该指纹值替代该当前数据段进行编码,生成包含该指纹值的压缩数据,并将该压缩数据发送至解码端。然后解码端在接收到包含指纹值的压缩数据之后,会根据该指纹值,通过全局指纹服务器获取到该指纹值对应的数据段,然后根据获取到的该指纹值对应的数据段进行解码。
当然,在上述的过程中是在全局指纹服务器中包括了编码端对应数据段的指纹值,若是当前数据段的指纹值未存在于全局指纹服务器中时,当前编码端会将当前数据段的指纹值以及将要接收当前数据段的解码端的标识对应存储至全局指纹服务器中。
具体来讲,若是当前数据段对应的指纹值既不在当前编码端自身预存的指纹字典中,也不在全局指纹服务器中,则该指纹值对应的当前数据段未被任何编码端编码,所以当前数据段为全新的数据段,对于这样的数据段,当前编码端首先将生成包含当前数据段和当前数据段的指纹值的压缩数据,并将压缩数据发送至解码端,然后当前编码端还会将当前数据段的指纹值以及接收当前数据段的解码端的解码端标识对应存储至全局指纹服务器中。比如说:当前数据段对应的指纹值为8,而当前编码端以及全局指纹值服务器中都不存在指纹值8,此时该当前编码端就会将该指纹值8以及接收当前数据段的解码端的解码端标识保存至全局指纹服务器中,或者是当前编码端将指纹值以及解码端标识发送至全局指纹服务器,由全局指纹服务器自行进行保存。
当然,当前编码端为了后续能够快速的调用该新的当前数据段,因此在将数据段对应的指纹值保存至全局指纹服务器中之后,当前编码端还将当前数据段对应的指纹值保存至自身存储的指纹字典中,同时当前编码端中的编码器还会在当前编码端存储的数据段字典中确定出一个空闲存储地址,然后当前编码端会将当前数据段保存至该空闲存储地址对应的存储空间中,这样在下次出现该当前数据段时,编码端可以快速直接调用该当前数据段对应的指纹值来替代当前数据段进行编码。
下面结合图2来对编码端与全局指纹服务器之间的实现流程进行说明。
步骤1,编码端中的编码器向自身存储的FP字典确定是否存在当前数据段对应的FP,若存在,则直接执行步骤5,若是不存在,则执行步骤2;
步骤2,FP字典向编码器返回编码端FP字典中不存在该指纹值的信息;
步骤3,编码器向全局指纹服务器中的全局指纹字典查找该FP,若是全局指纹字典中存在该FP时,则执行步骤4,若是全局指纹字典中不存在该FP时,则执行步骤6;
步骤4,接收全局指纹服务器返回的在全局指纹字典存在该FP的信息;
步骤5,用该FP替代当前数据段进行编码;
步骤6,接收全局指纹服务器返回的在全局指纹字典不存在该FP的信息;
步骤7,编码器向地址管理请求编码端的chunk字典中的空闲地址;
步骤8,接收地址管理返回的空闲地址;
步骤9,存储新的FP;
步骤10,存储新的chunk;
步骤11,用新的FP以及新的chunk一起编码;
步骤12,将FP以及接收chunk的解码端标识存储至全局指纹服务器;
需要说明的是:指纹值保存在全局指纹字典,解码端标识保存至解码端标识表中,当然,全局指纹字典中的指纹值与解码端标识是存在对应关系,并且全局指纹服务器中也保存了指纹值与解码端标识之间的对应关系,也就说每个指纹值都对应一个解码端标识。
由于在全局指纹服务器中还存储了指纹值与解码端标识之间的对应关系,因此,在本发明实施例中在当前编码端获取到当前数据段对应的指纹值时,当前编码端还会根据当前数据段对应指纹值,获取保存有该指纹值对应数据段的解码端的解码端标识,生成包含当前数据段的指纹值和获取的解码端标识的压缩数据,也就是说当前编码端除了在全局指纹服务器中获取指纹值之外,还会在全局指纹服务器中获取该指纹值对应的解码端标识。
当前编码端接收到全局指纹服务器返回的解码端标识之后,当前编码端将使用指纹值替代当前数据段进行编码,并且将接收到的解码端标识一起编码,得到包含指纹值以及解码端标识的压缩数据,最后将压缩数据发送至解码端。
在实施例一中,当前编码端在检测到当前数据段对应的指纹值未在自身存储的指纹字典中时,当前编码端还会向全局指纹服务器查找该指纹值,若是该指纹值在全局指纹服务器中存在时,当前编码端将直接使用该指纹值替代当前数据段进行编码,这样避免了当前编码端与其他编码端重复的存储相同的指纹值以及相同的数据段,从而减少了指纹字典以及数据段字典占用和浪费存储空间,并且也避免了当前编码端重复的向其他解码端发送相同的数据段,从而极大的减少编码端与解码端之间网络带宽的浪费。
对应上述的编码方法,在实施例中还提供了一种解码方法,如图3所示为本发明实施例中一种数据解码方法的流程图,包括:
步骤301,当前解码端接收编码端发送的压缩数据;
步骤302,当压缩数据中包含指纹值,并且指纹值未存在于当前解码端的指纹字典中时,将指纹值发送至全局指纹服务器;
在全局指纹服务器中除了保存有指纹值之外,还保存有指纹值和解码端标识的对应关系,其中指纹值为各个编码端中的指纹字典中的指纹值,解码端标识为以接收到对应指纹值对应的数据段的解码端标识。
简单的来讲,就是全局指纹服务器中包括了一全局指纹字典,该全局指纹字典中包括了网络中所有编码端中的指纹字典中的指纹值。在全局指纹服务器中还保存了一解码端标识表,该解码端标识表保存有接收数据段的解码端的特定标识,根据这个特定标识能够直接定位出解码端,在全局指纹服务器中还保存了指纹值与解码端标识之间的对应关系,也就是每个指纹值都对应有一个解码端标识。
步骤303,接收全局指纹服务器返回的对应指纹值的解码端标识,以及从解码端标识对应的解码端获取指纹值对应的数据段;
该步骤303还可以是接收全局指纹服务器返回的从解码端标识对应的解码中获取与该指纹值对应的数据段,简单的来讲,就是全局服务器会根据接收到的指纹值确定出该指纹值对应的解码端标识,然后根据该解码端标识到对应的解码端获取指纹值对应的数据段,最后将获取到的数据段返回至当前解码端。
步骤304,根据接收到的数据段进行解码。
对于当前解码端来讲,在接收到编码端发送的压缩数据之后,首先会解析确定在压缩数据中是否存在指纹值,当在压缩数据中存在指纹值时,当前解码端首先确定该指纹值是否存在于自身存储的指纹字典中,若是存在的话,则直接调取该指纹值对应的数据段进行解码。
若是该指纹值不存在于自身存储的指纹字典中时,则当前解码端会将该指纹值发送至全局指纹服务器,全局指纹服务器在接收到该指纹值之后,会根据该指纹值在解码端标识表中确定出该指纹值对应的解码端标识,然后当前解码端接收到全局指纹服务器返回的该指纹值对应的解码端标识,当前解码端将根据得到的解码端标识,将该指纹值发送至该解码端标识对应的解码端,最后当前解码端将接收到解码端标识对应解码端返回的对应该指纹值的数据段,当前解码端将根据返回的数据段进行解码。
另外,在上述步骤303中是全局指纹服务器向当前解码端返回指纹值对应的解码端标识,然后当前解码端根据解码端标识去其他解码端索取指纹值对应数据段。
在本发明实施例中步骤303还可以是接收全局指纹服务器返回的从解码端标识对应的解码端中获取的与指纹值对应的数据段,也就是说全局指纹服务器在接收到解码端发送的指纹值之后,全局指纹服务器将根据接收到的指纹值以及保存的指纹值与解码端标识之间的对应关系,确定该指纹值对应的解码端标识,然后全局指纹服务器将向该解码端标识对应的解码端发送该指纹值,并接收解码端返回的该指纹值对应的数据段,最后全局指纹服务器将该数据段发送至当前解码端,从而当前解码端根据该数据段进行解码。
另外,在本发明实施例中当压缩数据包含指纹值以及解码端标识时,根据解码端标识,将接收到的指纹值发送至解码端标识对应的解码端,然后接收解码端标识对应的解码端返回的指纹值对应的数据段。
具体来讲,当前解码端接收到编码端发送的携带有指纹值以及解码端标识的压缩数据时,当前解码端首先从压缩数据中获取到指纹值以及解码端标识,然后当前解码端将根据得到的解码端标识,将得到的指纹值发送至该解码端标识对应的解码端,该解码端标识对应的解码端根据得到的指纹值确定出该指纹值对应的数据段,并将该数据段发送至当前解码端。
简单的来讲,若是当前解码端接收到指纹值以及解码端标识时,当前解码端就可以选择不向全局指纹服务器确定是否存在该指纹值以及确定该指纹值是否存在对应的解码端标识,而是向解码端标识对应的解码端获取该指纹值对应的数据段,这样就减少了解码端与全局指纹服务器之间的信息传输过程,减小了解码端的通讯压力,这样也可以使得编解码的过程更加的简便、快捷。
下面结合图4来对解码端与全局指纹服务器之间的实现流程进行说明。
步骤1,解码端的解码器在自身存储的FP字典中查找是否存在当前FP,若存在,则进入步骤11;若不存在,则进入步骤2;
步骤2,解码器接收FP字典返回的当前FP不存在的信息;
步骤3,解码器将当前FP发送至全局指纹服务器的全局指纹字典,并在全局指纹字典中查找当前FP;
步骤4,全局指纹服务器根据当前FP,在解码端标识表中确定当前FP对应的解码端标识,在得到解码端标识之后,进入到步骤5或者是进入到步骤8;
步骤5,全局指纹服务器将得到的解码端标识返回至解码端;
步骤6,解码端根据解码端标识,将当前FP发送至该解码端标识对应的其他解码端;
步骤7、解码端接收其他解码端返回的当前FP对应的数据段,并进入到步骤11;
步骤8,全局指纹服务器根据得到的解码端标识,将当前FP发送至该解码端标识对应的其他解码端;
步骤9,全局指纹服务器接收其他解码端返回的当前FP对应的数据段;
步骤10,全局指纹服务器将得到的数据段发送至解码端;
步骤11,解码端使用接收到的数据段替换当前FP来解码。
除了图6所示的解码流程之外,还可以是图5中的解码流程,具体如下:
步骤1,解码端的解码器在自身存储的FP字典中查找是否存在当前FP,若存在,则进入步骤5;若不存在,则进入步骤2;
步骤2,解码器接收FP字典返回的当前FP不存在的信息;
步骤3,解码器向其他解码端发送接收到的FP;
步骤4,接收其他解码端返回的对应所述指纹值的数据段;
步骤5,解码端使用接收到的数据段替换当前FP来解码;
在上述的解码方法中,解码端在确定接收到的指纹值未在自身存储的指纹字典中时,解码端直接将该指纹值发送至全局指纹服务器,然后根据全局指纹服务器返回的解码端标识向解码端标识对应的解码端获取指纹值对应的数据段,或者是直接接收全局指纹服务器返回的该指纹值对应的数据段,这样就避免了解码端与编码端之间直接传输数据段,降低了编码端与解码端之间的带宽压力,并且也避免了网络中多个解码端重复的保存一个指纹值以及重复保存该指纹值对应的数据段,进而就减少了系统中指纹字典以及数据段字典所占用的存储空间以及重复存储造成的存储空间浪费。
对应于上述的编码方法以及解码方法,本发明实施例中还提供了一种数据段发送方法,如图6所示为本发明实施例中一种数据段发送方法的流程图,包括:
步骤601,接收当前解码端发来的指纹值;
步骤602,从预先保存的指纹值和解码端标识的对应关系中,获取接收到的指纹值对应的解码端标识;
步骤603,将获取的解码端标识发送给当前解码端;或者从获取的解码端标识对应的解码端中获取对应接收到的指纹值的数据段,并将获取的数据段发送给当前解码端。
首先来讲,该方法应用到全局指纹服务器中,该全局指纹服务器与多个编码端以及多个解码端之间有相互通讯,并且在全局指纹值服务器中保存了所有编码端的指纹字典中的指纹值,并且还保存了已接收指纹值对应数据段的解码端的解码端标识,比如说解码端接收了指纹值为6所对应的数据段,该解码端ID为JD2,则全局指纹服务器中就保存了指纹值6以及该指纹值对应的解码端标识JD2。
因此,当全局指纹服务器在接收到当前解码端发送来的指纹值之后,全局指纹服务器将直接获取包含该指纹值的解码端的解码端标识,在获取到该解码端标识之后,该全局指纹服务器有两种可以选择的实施过程。一种方式是全局指纹服务器可以直接将获取的解码端标识发送至当前解码端,然后由当前解码端根据解码端标识,向解码端标识对应的其他解码端获取该指纹值对应的数据段;第二种方式是全局指纹服务器在确定指纹值对应的解码端标识之后,全局指纹服务器将根据该解码端标识,向该解码端标识对应的其他解码端发送该指纹值,并接收其他解码端根据该指纹值返回的该指纹值对应的数据段,最后全局指纹服务器将获取的数据段直接返回给发送指纹值的当前解码端。这两种方式都是可行的实施的方式。
在上述的数据段发送方法中,全局指纹服务器可以根据解码端发送的指纹值向解码端返回解码端标识或者是数据段,这样就避免了解码端重复的向编码端请求数据段,这样也就减少了编码端与解码端之间的带宽压力以及带宽的浪费,并且由于全局指纹服务器中保存了各个编码端的指纹字典中的指纹值,因此可以避免各个编码端重复的保存相同的指纹值以及相同的数据段,进而避免了网络中存储空间的消耗以及浪费。
实施例三
对应实施例一中的编码方法,本发明实施例中还提供了一种数据编码设备,如图7所示为本发明实施例中一种数据编码设备的结构示意图,设备包括:
检测模块701,用于在检测到用于标识当前数据段的指纹值未存在于的指纹字典中时,查看当前数据段的指纹值是否存在于全局指纹服务器中,全局指纹服务器保存有各个编码端的指纹字典中的指纹值;
压缩模块702,用于在当前数据段的指纹值存在于全局指纹服务器中时,生成包含指纹值的压缩数据;
发送模块703,用于将压缩数据发送至解码端。
进一步,压缩模块702具体用于在全局指纹服务器中还保存有指纹值与解码端标识之间的对应关系时,根据当前数据段对应指纹值,在全局指纹服务器中获取指纹值对应的解码端标识,并生成包含指纹值和获取的解码端标识的压缩数据。
进一步,压缩模块702还用于在当前数据段的指纹值未存在于全局指纹服务器中时,生成包含当前数据段和当前数据段的指纹值的压缩数据;
发送模块703,还用于将压缩数据发送至解码端;并将当前数据段的指纹值以及接收当前数据段的解码端的标识对应存储至全局指纹服务器中。
如图8为本发明实施例中一种数据解码设备,该解码设备包括:
接收模块801,用于接收编码端发送的压缩数据;
发送模块802,用于当压缩数据中只包含指纹值,并且指纹值未存在于当前解码端的指纹字典中时,将指纹值发送至全局指纹服务器,全局指纹服务器保存有指纹值和解码端标识的对应关系,其中指纹值为各个编码端中的指纹字典中的指纹值,解码端标识为保存对应指纹值的数据段的解码端的标识;
处理模块803,用于接收全局指纹服务器返回的对应指纹值的解码端标识,以及从解码端标识对应的解码端获取指纹值对应的数据段;或者接收全局指纹服务器返回的从解码端标识对应的解码端中获取与指纹值对应的数据段;
解码模块804,用于根据接收到的数据段进行解码。
进一步,处理模块803还用于当压缩数据包含指纹值以及解码端标识时,根据解码端标识,将接收到的指纹值发送至解码端标识对应的解码端,并接收解码端标识对应的解码端返回的指纹值对应的数据段。
本发明实施例还提供了一种设备,如图9所示为本发明实施例中一种设备的结构示意图,该设备包括:
接收模块901,用于接收当前解码端发来的指纹值;
获取模块902,用于从预先保存的指纹值和解码端标识的对应关系中,获取接收到的指纹值对应的解码端标识,其中指纹值为各个编码端中的指纹字典中的指纹值,解码端标识为已保存所述指纹值对应的数据段的解码端的标识;
发送模块903,用于将获取的解码端标识发送给当前解码端;或者从获取的解码端标识对应的解码端中获取对应接收到的指纹值的数据段,并将获取的数据段发送给当前解码端。
实施例五
本发明实施例还提供了一种编码器,如图10所示为一种编码器的结构示意图,包括:
处理器110,用于在当前编码器检测到用于标识当前数据段的指纹值未存在于当前编码器的指纹字典中时,查看当前数据段的指纹值是否存在于全局指纹服务器中,全局指纹服务器保存有各个编码器的指纹字典中的指纹值,在当前数据段的指纹值存在于全局指纹服务器中时,生成包含指纹值的压缩数据;
通讯接口111,用于将压缩数据发送至解码端。
对应上述的编码器,本发明实施例提供了一种对应的解码器,如图11所示为本发明实施例中一种解码器的结构示意图,包括:
通讯接口121,用于接收编码器发送的压缩数据;
处理器122,用于当压缩数据中包含指纹值,并且指纹值未存在于当前解码器的指纹字典中时,将指纹值发送至全局指纹服务器,全局指纹服务器保存有指纹值和解码器标识的对应关系,其中指纹值为各个编码器中的指纹字典中的指纹值,解码器标识为已接收到对应指纹值对应的数据段的解码器的标识;接收全局指纹服务器返回的对应指纹值的解码器标识,以及从解码器标识对应的解码器获取指纹值对应的数据段;或者接收全局指纹服务器返回的从解码器标识对应的解码器中获取的与指纹值对应的数据段,根据接收到的数据段进行解码。
进一步,处理器122具体用于当压缩数据包含指纹值以及解码端标识时,根据解码端标识,将接收到的指纹值发送至解码器标识对应的解码器,接收解码器标识对应的解码器返回的指纹值对应的数据段,
对应上述的解码器,本发明实施例中还提供了一种服务器,如图12所示为本发明实施例中一种服务器的具体结构示意图,包括:
通讯接口131,用于接收解码器发送来的指纹值;
处理器132,用于从预先保存的指纹值和解码器标识的对应关系中,获取接收到的指纹值对应的解码器标识,其中指纹值为各个编码器中的指纹字典中的指纹值,解码器标识为已接收到对应指纹值对应的数据段的解码器的标识;将获取的解码器标识发送给当前解码器;或者从获取的解码器标识对应的解码器中获取对应接收到的指纹值的数据段,并将获取的数据段发送给当前解码器。
在本发明实施例中编码端检测到用于标识当前数据段的指纹值未在自身存储的包含自身已编码数据段对应指纹值的指纹字典中时,该编码端会向保存有所有指纹字典中指纹值的全局指纹服务器查找当前数据段对应的指纹值,在全局指纹服务器中查找出该指纹值时,将该指纹值替代当前数据段进行数据编码,生成包含该指纹值的压缩数据,并将该压缩数据发送至目的解码端,也就是说若是编码端自身没有当前数据段对应指纹值,而全局指纹服务器存在该指纹值时,该编码端将确定此数据段为重复数据,所以该编码端将直接使用该指纹值替代该数据段进行编码,而不是直接使用该数据段进行编码,这样避免了重复数据段被重复存储的问题,进而减少了存储空间的占用量以及存储空间的浪费。同时也避免了编码端与多个解码端之间重复的传输相同的数据段造成的网络带宽浪费,提升了网络带宽的利用率。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。