一种数据处理的方法和装置

文档序号:195340 发布日期:2021-11-02 浏览:12次 >En<

阅读说明:本技术 一种数据处理的方法和装置 (Data processing method and device ) 是由 李金虎 王广官 于 2021-09-30 设计创作,主要内容包括:本发明实施例提供了一种数据处理的方法和装置,所述方法包括:获取目标数据;对所述目标数据进行分块,得到一个或多个数据块;针对每个数据块,确定一个或多个数据单元集,并分别对所述一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据;根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据所述一个或多个数据块的压缩数据,得到所述目标数据的压缩数据。通过本发明实施例,实现了更加高效的并行数据压缩,具有较高的压缩率和较快的压缩速度,且压缩率无需依赖分块的大小。(The embodiment of the invention provides a data processing method and a data processing device, wherein the method comprises the following steps: acquiring target data; partitioning the target data to obtain one or more data blocks; determining one or more data unit sets aiming at each data block, and respectively compressing the one or more data unit sets to obtain compressed data of each data unit set; and obtaining compressed data of each data block according to the compressed data of the contained data unit set, and obtaining compressed data of the target data according to the compressed data of the one or more data blocks. By the embodiment of the invention, more efficient parallel data compression is realized, the compression ratio is higher, the compression speed is higher, and the compression ratio does not need to depend on the size of the blocks.)

一种数据处理的方法和装置

技术领域

本发明涉及压缩技术领域,特别是涉及一种数据处理的方法和装置。

背景技术

随着计算机及互联网技术的发展,产生的数据量越来越多,庞大的数据量对数据存储和网络传输带来了很大的挑战,为节省存储空间或传输带宽,已经在计算机系统中广泛地使用了数据压缩技术。

在磁介质存储数据或网络传输数据时,通常使用基于硬件或软件的各种压缩技术,但现有的压缩技术均无法获得较高的压缩率和较快的压缩速度。

例如,在熵编码中,通过统计待压缩数据中的某些数据段或字符串出现概率,生成码字,概率高的数据使用最短的码字,用码字+少量数据的内容替换原始数据,一般码字+少量数据的长度小于原始数据的长度,从而达到压缩的效果,但由于需要先基于统计信息生成一定的码字,需要对整个待压缩数据进行一次以上遍历,影响了压缩算法的速度。

又如,在字典编码中,使用滑动窗口对待压缩数据进行扫描,扫描中的数据与已经扫描过的数据进行字典匹配,得到匹配数据信息,使用匹配信息对数据进行编码以达到压缩效果,但滑动窗口扫描的方式只能串行进行。

发明内容

鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种数据处理的方法和装置,包括:

一种数据处理的方法,所述方法包括:

获取目标数据;

对目标数据进行分块,得到一个或多个数据块;

针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据;

根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据。

可选地,分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据,包括:

对于每个数据单元集,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,并按照一种或多种字节组合方式,对数据单元集进行压缩,得到一个或多个候选压缩数据;

从一个或多个候选压缩数据中,确定数据单元集的压缩数据。

可选地,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,包括:

在当前数据单元集所包含的数据单元的字节长度之和等于预设字节长度的情况下,根据预设字节长度,确定一个或多种字节组合方式;

在当前数据单元集所包含的数据单元的字节长度之和小于预设字节长度的情况下,根据当前数据单元所包含的数据单元的字节长度之和,确定一种或多种字节组合方式。

可选地,从一个或多个候选压缩数据中,确定数据单元集的压缩数据,包括:

从一个或多个候选压缩数据中,确定字节长度最短的候选压缩数据为数据单元集的压缩数据。

可选地,针对每个数据块,确定一个或多个数据单元集,包括:

针对每个数据块,从所包含的数据单元中,依次确定字节长度之和等于预设字节长度的一个或多个数据单元,作为一个数据单元集;

在剩余的数据单元的字节长度之和小于预设字节长度的情况下,将剩余的数据单元作为一个数据单元集。

可选地,对目标数据进行分块,得到一个或多个数据块,包括:

按照预设字节长度或预设字节长度的倍数,对目标数据进行分块,得到一个或多个数据块;

在剩余的数据的字节长度之和小于预设字节长度或预设字节长度的倍数的情况下,将剩余的数据作为一个数据块。

可选地,每个数据单元集的压缩数据携带有用于记录压缩前数据的字节长度的信息。

可选地,多个数据块之间采用并行的方式压缩,在每个数据块内部采用串行的方式压缩。

一种数据处理的方法,方法包括:

获取目标数据的压缩数据;其中,目标数据的压缩数据为根据一个或多个数据块的压缩数据得到的,每个数据块的压缩数据为根据所包含的数据单元集的压缩数据得到的,每个数据单元集的压缩数据为对目标数据进行分块,得到一个或多个数据块,针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩得到的;

根据目标数据的压缩数据,得到一个或多个数据块的压缩数据;

对每个数据块的压缩数据进行解压缩,得到每个数据块的解压缩数据;

根据一个或多个数据块的解压缩数据,得到目标数据。

一种数据处理的装置,装置包括:

目标数据获取模块,用于获取目标数据;

数据块得到模块,用于对目标数据进行分块,得到一个或多个数据块;

数据单元集的压缩数据得到模块,用于针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据;

目标数据的压缩数据得到模块,用于根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据。

一种数据处理的装置,装置包括:

待解压缩数据获取模块,用于获取目标数据的压缩数据;其中,目标数据的压缩数据为根据一个或多个数据块的压缩数据得到的,每个数据块的压缩数据为根据所包含的数据单元集的压缩数据得到的,每个数据单元集的压缩数据为对目标数据进行分块,得到一个或多个数据块,针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩得到的;

数据块的压缩数据得到模块,用于根据目标数据的压缩数据,得到一个或多个数据块的压缩数据;

数据块的解压缩数据得到模块,用于对每个数据块的压缩数据进行解压缩,得到每个数据块的解压缩数据;

目标数据得到模块,用于根据一个或多个数据块的解压缩数据,得到目标数据。

一种电子设备,包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上的数据处理的方法。

一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上的数据处理的方法。

本发明实施例具有以下优点:

在本发明实施例中,通过获取目标数据,对目标数据进行分块,得到一个或多个数据块,针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据,然后根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据,实现了更加高效的并行数据压缩,具有较高的压缩率和较快的压缩速度,且压缩率无需依赖分块的大小。

附图说明

为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种数据处理的方法的步骤流程图;

图2是本发明一实施例提供的另一种数据处理的方法的步骤流程图;

图3是本发明一实施例提供的另一种数据处理的方法的步骤流程图;

图4是本发明一实施例提供的一种数据处理示例的示意图;

图5是本发明一实施例提供的另一种数据处理的方法的步骤流程图;

图6是本发明一实施例提供的另一种数据处理示例的示意图;

图7是本发明一实施例提供的一种数据处理的装置的结构框图;

图8是本发明一实施例提供的一种数据处理的装置的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参照图1,示出了本发明一实施例提供的一种数据处理的方法的步骤流程图,该方法可以应用于云计算平台中弹性计算服务(ECS,Elastic Compute Service)的相关产品,具体可以包括如下步骤:

步骤101,获取目标数据。

在需要进行数据压缩时,可以获取待压缩的目标数据,目标数据可以为结构化数据,也可以为如文件、图像、音频等非结构化数据。

步骤102,对目标数据进行分块,得到一个或多个数据块。

其中,多个数据块之间可以采用并行的方式压缩,在每个数据块内部可以采用串行的方式压缩。

为了实现并行压缩、提升压缩速度,在获得目标数据后,可以将按照预设规则对目标数据进行分块,得到一个或多个数据块,进而可以在多个数据块之间进行并行压缩编码,提升压缩速度。

在本发明一实施例中,步骤102可以包括如下子步骤:

子步骤11,按照预设字节长度或预设字节长度的倍数,对目标数据进行分块,得到一个或多个数据块。

一方面,不管是结构化数据还是非结构化数据,均可以表示为由一个或多个数据单元组成,数据单元为组成数据的最小单位,其可能会根据不同的编程语言而不同,但不管何种语言,均不会跳出1字节、2字节、4字节、8字节这4个范围,以C语言为例,数据单元可以包括以下几种:1字节长度的字符、2字节长度的short值、4字节长度的int值或float值、8字节长度的long值或double值或指针值。

另一方面,由于处理器对内存访问有对齐的要求,数据单元在内存中出现的位置会按其自身长度对齐,例如,short值的字节长度为2,从第1个字节开始,其需要按照字节长度2进行对齐,则其可能出现在(第3个字节+第4个字节)的位置,但不会出现在(第4个字节+第5个字节)的位置。

基于此,可以确定一预设字节长度,如预设字节长度可以为8字节,进而可以根据预设字节长度进行后续的分块、压缩等操作。

具体的,可以按照预设字节长度或预设字节长度的倍数,如8字节或8字节的倍数长度(16字节、24字节、32字节等),对目标数据进行分块,即将目标数据划分为字节长度为预设字节长度或预设字节长度的倍数长度的一个或多个数据块。

子步骤12,在剩余的数据的字节长度之和小于预设字节长度或预设字节长度的倍数的情况下,将剩余的数据作为一个数据块。

由于目标数据本身的整体长度可能不是按照预设字节长度对齐的,即其整体长度不是预设字节长度或预设字节长度的倍数长度,则在对目标数据按照预设字节长度或预设字节长度的倍数进行分块后,可能存在剩余的数据,剩余的数据的字节长度之和小于预设字节长度或预设字节长度的倍数长度,也可以将该剩余的数据作为一个数据块,即为“尾块(tail)”。

也即是说,将目标数据划分的一个或多个数据块存在两种情况:

1、每个数据块的字节长度为预设字节长度或预设字节长度的倍数。

2、最后一个数据块(即“尾块”)的字节长度小于预设字节长度或预设字节长度的倍数,除最后一个数据块之外的其他数据块的字节长度为预设字节长度或预设字节长度的倍数。

步骤103,针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据。

在获得一个或多个数据块后,针对每个数据块可以采用串行压缩编码,具体的,对于每个数据块,可以依次从中取出一个或多个数据单元,得到一个数据单元集,然后可以对该数据单元集进行压缩,在对该数据单元集压缩成功后,可以重复执行该过程,直至该数据块中数据全部被压缩。

在本发明一实施例中,针对每个数据块,确定一个或多个数据单元集,可以包括如下子步骤:

子步骤21,针对每个数据块,从所包含的数据单元中,依次确定字节长度之和等于预设字节长度的一个或多个数据单元,作为一个数据单元集。

由于确定了预设字节长度,且除了尾块之外数据块的字节长度均为预设字节长度或预设字节长度的倍数长度,则对于每个数据块,可以按照预设字节长度,从数据块所包含的数据单元中,取出字节长度之和等于预设字节长度的一个或多个数据单元,将其作为一个数据单元集,如字节长度之和为8个字节长度的一个或多个数据单元取出为一个数据单元集,重复执行该过程,即可以得到一个或多个数据单元集。

在部分压缩算法中,其是基于统计信息对重复内容的压缩,分块越大,内容重复的概率就越大,重复越多压缩效果越好,反之则越差,其压缩率受分块大小影响,常在分块较大的情况下才有较好的压缩率表现。

而在本发明实施例中,通过在分块后,在每个数据块中按照预设字节长度划分出数据单元集,以预设字节长度为最小压缩块,压缩效果只与该最小压缩块有关,与分块大小没有直接关系,克服了压缩率受分块大小影响的缺点,且通过设置以8字节为最小压缩块,每个数据单元集的压缩数据小于或等于8字节(只有在存在“尾块”的情况下小于8字节),即在预设字节长度可以为8字节时,满足分块大小只需要大于或等于8字节即可达到稳定的压缩率效果。

而且,由于部分压缩算法在压缩过程中会记录如统计信息、压缩状态之类的信息,且这些信息至少在分块内是关联的,但在如现场可编程逻辑门阵列(FPGA,FieldProgrammable Gate Array)、特殊应用集成电路(ASIC,Application SpecificIntegrated Circuit)这类硬件内实现较为复杂且占用很多硬件资源,但在本发明实施例中,所有的状态及信息都在单个数据单元集内,即在8字节单元内,逻辑简单、状态少,具备硬件友好的优势,可以很容易地结合CPU、FPGA、GPU、ASIC等。

子步骤22,在剩余的数据单元的字节长度之和小于预设字节长度的情况下,将剩余的数据单元作为一个数据单元集。

对于存在“尾块”的情况,即最后一个数据块(即“尾块”)的字节长度小于预设字节长度或预设字节长度的倍数,则采用预设字节长度从中确定数据单元集后,存在剩余的数据单元,其字节长度之和小于预设字节长度,则也可以将该剩余的数据单元作为一个数据单元集。

也即是说,数据单元集存在两种情况:

1、每个数据单元集的字节长度为预设字节长度。

2、最后一个数据单元集的字节长度小于预设字节长度,除最后一个数据单元集之外的其他数据单元集的字节长度为预设字节长度。

在本发明一实施例中,分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据,可以包括如下子步骤:

子步骤31,对于每个数据单元集,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,并按照一种或多种字节组合方式,对数据单元集进行压缩,得到一个或多个候选压缩数据。

对于每个数据单元集,其可以采用数值压缩算法进行压缩,可以保证无损压缩,数据经过压缩后不会丢失原始数据信息,能准确还原原始数据。

具体的,在现代计算机中,数值可以是1字节长度、2字节长度、4字节长度、8字节长度中的一种,数值依据其大小可在字节的高位出现若干连续bit0(正数)或者连续bit1(负数),而采用数值压缩算法,其可以根据数值的大小,对数值高位出现的连续bit0或者连续bit1冗余信息进行去除。

在具体实现中,数值压缩算法的压缩效果和数值大小有关,以0x00010001这个数据为例,按4字节(数值为65537)压缩,结果为0x848001(3个字节),按2个2字节压缩(数值均为1),结果为0x0101(2个字节)。基于此,可以根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,然后可以根据每种字节组合方式对数据进行拆分后进行压缩,得到每种字节组合方式对应的候选压缩数据。

在一示例中,数值压缩算法的压缩率受数值高位的连续0或连续1的数量影响,也即数值大小的影响,即数值高位出现连续1或者连续0的数量越多,数值越小,压缩率越高,而一般结构化数据中小数值出现的概率远远高于大数值出现的概率,则本发明实施例在结构化数据的压缩中会具备更好的压缩率表现,结构化数据压缩场景常见有内存压缩、序列化数据压缩等,在非结构化数据压缩如文件、图像、音频压缩也有一定的压缩率表现。

在本发明一实施例中,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,可以包括如下子步骤:

子步骤311,在当前数据单元集所包含的数据单元的字节长度之和等于预设字节长度的情况下,根据预设字节长度,确定一个或多种字节组合方式。

在具体实现中,可以根据预设字节长度设置与其对应的一种或多种字节组合方式,如预设字节长度为8字节,则可以将8字节分成1*8字节、2*4字节、1*4字节+2*2字节、2*2字节+1*4字节、4*2字节这5种情况。

在当前数据单元集所包含的数据单元的字节长度之和等于预设字节长度的情况下,如字节长度之和等于8字节,则可以根据预设字节长度,确定一种或多种字节组合方式。

子步骤312,在当前数据单元集所包含的数据单元的字节长度之和小于预设字节长度的情况下,根据当前数据单元所包含的数据单元的字节长度之和,确定一种或多种字节组合方式。

如上文所述,对于存在“尾块”的情况,存在剩余的数据单元,其字节长度之和小于预设字节长度,则也可以将该剩余的数据单元作为一个数据单元集,则在当前数据单元集所包含的数据单元的字节长度之和小于预设字节长度的情况下,不再适用预设字节长度的情况,可以根据当前数据单元所包含的数据单元的字节长度之和,确定一种或多种字节组合方式。

在预设字节长度为8字节的情况下,小于8字节的存在以下7种情况:

1、字节长度之和为1字节,则将该1字节作为一个字节组合方式,直接输入该1字节数值。

2、字节长度之和为2字节,则将该2字节作为一个字节组合方式,直接将该2字节数值压缩后输出。

3、字节长度之和为3字节,则按照2字节+1字节的字节组合方式进行数值压缩后输出。

4、字节长度之和为4字节,则按照1*4字节、2*2字节两种字节组合方式进行数值压缩后输出。

5、字节长度之和为5字节,则按照1*4字节+1字节、2*2字节+1字节两种情况进行数值压缩后输出。

6、字节长度之和为6字节,则按照1*4字节+2字节、2字节+1*4字节、3*2字节三种情况进行数值压缩后输出。

7、字节长度之和为7字节,则按照1*4字节+2字节+1字节、2字节+1*4字节+1字节、3*2字节+1字节三种情况进行数值压缩后输出。

子步骤32,从一个或多个候选压缩数据中,确定数据单元集的压缩数据。

具体的,从一个或多个候选压缩数据中,确定数据单元集的压缩数据,可以包括如下子步骤:从一个或多个候选压缩数据中,确定字节长度最短的候选压缩数据为所述数据单元集的压缩数据。

在确定一个或多个候选压缩数据后,可以从一个或多个候选压缩数据中确定数据长度最短的候选压缩数据,作为数据单元集的压缩数据。

步骤104,根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据。

其中,目标数据的压缩数据为由一个或多个数据块的压缩数据合并得到,可选地,目标数据的压缩数据中相邻数据块的压缩数据之间可以设置有分隔符,通过分隔符的设置在解压缩时也能够进行并行解压缩。

针对每个数据块,在获得所包含的数据单元集的压缩数据后,可以对该数据块所包含的数据单元集的压缩数据进行合并,得到数据块的压缩数据。

在确定每个数据块的压缩数据后,可以将所有的数据块的压缩数据进行合并,并在数据块之间插入分隔符,得到目标数据的压缩数据。

在一示例中,数值压缩算法自带边界,即每个数值编码完后可以通过一定的特征数据判断编码数据边界,如高bit位为0或1区分,如varint数值压缩算法,每个字节的最高bit为1则表示下一个字节和当前字节是一起的,最高bit为0则表示当前字节是当前数值的最后一个字节。

在一示例中,对不同字节长度的原始数据(即压缩前的数据,如每个数据单元集中的数据)进行压缩的结果(压缩后的数据,如每个数据单元集的压缩数据)可能相同,进而会导致在解压缩时不知道原始数据的字节长度,影响解压缩的准确性,例如,原始数据0x01、0x0001、0x00000001、0x0000000000000001用varint压缩后的结果均为0x01。

为了便于在解压缩时能够获知原始数据的字节长度,可以在压缩结果的首字节的最高bit位(MSB,Most Significant Bit)后添加用于记录原始数据字节长度的字节,例如,可以采用2bit来进行标识,00表示原始数据为1字节,01表示原始数据为2字节,10表示原始数据为4个字节,11表示原始数据为8个字节,例如,0x01压缩后为0x01,0x0001压缩后为0x21,0x00000001压缩后为0x41,0x0000000000000001压缩后为0x61。

基于此,在采用不同字节组合方式进行压缩时,压缩数据中也添加有用于记录原始数据字节长度的信息,即每个数据单元集的压缩数据可以携带有用于记录压缩前数据的字节长度的信息。

以0x00010001这个数据为例,在未添加用于标识原始数据字节长度的信息时,按4字节(数值为65537)压缩,结果为0x848001(3个字节),按2个2字节压缩(数值均为1),结果为0x0101(2个字节)。

以0x00010001这个数据为例,在添加用于记录原始数据字节长度的信息后,按4字节(数值为65537)压缩,结果为0xc48001(3个字节)。按2个2字节压缩(数值均为1),结果为0x2121(2个字节)。

在本发明实施例中,通过获取目标数据,对目标数据进行分块,得到一个或多个数据块,针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据,然后根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据,实现了更加高效的并行数据压缩,具有较高的压缩率和较快的压缩速度,且压缩率无需依赖分块的大小。

参照图2,示出了本发明一实施例提供的另一种数据处理的方法的步骤流程图,具体可以包括如下步骤:

步骤201,获取目标数据。

步骤202,对目标数据进行分块,得到一个或多个数据块。

步骤203,针对每个数据块,从所包含的数据单元中,依次确定字节长度之和等于预设字节长度的一个或多个数据单元,作为一个数据单元集。

步骤204,在当前数据单元集所包含的数据单元的字节长度之和等于预设字节长度的情况下,根据预设字节长度,确定一个或多种字节组合方式。

步骤205,按照一种或多种字节组合方式,对数据单元集进行压缩,得到一个或多个候选压缩数据。

步骤206,从一个或多个候选压缩数据中,确定数据单元集的压缩数据。

步骤207,根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据。

参照图3,示出了本发明一实施例提供的另一种数据处理的方法的步骤流程图,具体可以包括如下步骤:

步骤301,获取目标数据。

步骤302,对目标数据进行分块,得到一个或多个数据块。

步骤303,针对每个数据块,在剩余的数据单元的字节长度之和小于预设字节长度的情况下,将剩余的数据单元作为一个数据单元集。

步骤304,在当前数据单元集所包含的数据单元的字节长度之和小于预设字节长度的情况下,根据当前数据单元所包含的数据单元的字节长度之和,确定一种或多种字节组合方式。

步骤305,按照一种或多种字节组合方式,对数据单元集进行压缩,得到一个或多个候选压缩数据。

步骤306,从一个或多个候选压缩数据中,确定数据单元集的压缩数据。

步骤307,根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据。

以下结合图4对本发明进行示例性说明:

1、将待压缩数据分成若干8字节单元,由于待压缩数据整体长度可能不是8字节对齐,尾巴处会有tail长度的尾块数据(1<=tail<=7)。

2、选取8字节长度或者8字节的倍数长度对待压缩数据进行分块(因为尾块的存在,最后一个分块长度可能不是8的倍数),分块之间进行并行编码,分块内采取下列步骤进行串行编码。

3、分块内取出每8字节单元分别进行压缩。

4、将每8字节单元分成1*8字节、2*4字节、1*4字节+2*2字节、2*2字节+1*4字节、4*2字节5种情况,5种情况分别执行一次数值压缩算法,输出5种压缩结果。

5、对5种压缩结果进行对比,选取字节长度最短的结果作为本8字节单元的压缩结果输出。

6、重复步骤4对所有每8字节进行压缩。

7、若存在尾块,则根据尾块的长度进行压缩,如尾块长度为1,则直接将尾块输出;尾块长度为2则直接将尾块进行2字节数值压缩后输出结果;尾块长度为3则按2字节+1字节的方式进行数值压缩后输出;尾块长度为4则分1*4字节、2*2字节两种情况,取最短结果输出;尾块长度为5则分1*4字节+1字节、2*2字节+1字节两种情况进行数值压缩,取最短结果输出;尾块长度为6则分1*4字节+2字节、2字节+1*4字节、3*2字节三种情况进行数值压缩,取最短结果输出;尾块长度为7则分1*4字节+2字节+1字节、2字节+1*4字节+1字节、3*2字节+1字节三种情况进行数值压缩,取最短结果输出。

8、将分块内的所有输出合并,分块之间数据之间插入分隔符,并合并所有分块输出压缩结果。

参照图5,示出了本发明一实施例提供的另一种数据处理的方法的步骤流程图,具体可以包括如下步骤:

步骤501,获取目标数据的压缩数据;其中,目标数据的压缩数据为根据一个或多个数据块的压缩数据得到的,每个数据块的压缩数据为根据所包含的数据单元集的压缩数据得到的,每个数据单元集的压缩数据为对目标数据进行分块,得到一个或多个数据块,针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩得到的。

在需要进行数据解压缩时,可以获取目标数据的压缩数据,目标数据可以为结构化数据,也可以为如文件、图像、音频等非结构化数据。

在本发明一实施例中,分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据,可以包括如下子步骤:

对于每个数据单元集,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,并按照一种或多种字节组合方式,对数据单元集进行压缩,得到一个或多个候选压缩数据;从一个或多个候选压缩数据中,确定数据单元集的压缩数据。

在本发明一实施例中,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,可以包括如下子步骤:

在当前数据单元集所包含的数据单元的字节长度之和等于预设字节长度的情况下,根据预设字节长度,确定一个或多种字节组合方式;在当前数据单元集所包含的数据单元的字节长度之和小于预设字节长度的情况下,根据当前数据单元所包含的数据单元的字节长度之和,确定一种或多种字节组合方式。

在本发明一实施例中,从一个或多个候选压缩数据中,确定数据单元集的压缩数据,可以包括如下子步骤:

从一个或多个候选压缩数据中,确定字节长度最短的候选压缩数据为数据单元集的压缩数据。

在本发明一实施例中,针对每个数据块,确定一个或多个数据单元集,可以包括如下子步骤:

针对每个数据块,从所包含的数据单元中,依次确定字节长度之和等于预设字节长度的一个或多个数据单元,作为一个数据单元集;在剩余的数据单元的字节长度之和小于预设字节长度的情况下,将剩余的数据单元作为一个数据单元集。

在本发明一实施例中,对目标数据进行分块,得到一个或多个数据块,可以包括如下子步骤:

按照预设字节长度或预设字节长度的倍数,对目标数据进行分块,得到一个或多个数据块;在剩余的数据的字节长度之和小于预设字节长度或预设字节长度的倍数的情况下,将剩余的数据作为一个数据块。

在本发明一实施例中,每个数据单元集的压缩数据携带有用于记录压缩前数据的字节长度的信息。

在本发明一实施例中,多个数据块之间采用并行的方式压缩,在每个数据块内部采用串行的方式压缩。

需要说明的是,对于目标数据的压缩过程,其与上文中描述过程(如图1-图4)相同,具体可以参考上文的描述。

步骤502,根据目标数据的压缩数据,得到一个或多个数据块的压缩数据。

在实际应用中,目标数据的压缩数据可以为由一个或多个数据块的压缩数据合并得到,且,目标数据的压缩数据中相邻数据块的压缩数据之间可以设置有分隔符,则可以根据分隔符,从目标数据的压缩数据,得到一个或多个数据块的压缩数据。

步骤503,对每个数据块的压缩数据进行解压缩,得到每个数据块的解压缩数据。

在获得每个数据块的压缩数据后,可以按照其在压缩过程中所采用的数值压缩算法进行解压缩,得到每个数据块的解压缩数据。

步骤504,根据一个或多个数据块的解压缩数据,得到目标数据。

在获得所有数据块的解压缩数据后,可以对所有数据块的解压缩数据进行合并,得到目标数据。

以下结合图6对本发明进行示例性说明:

1、按分隔符解压缩输入分块。

2、分块内按字节读取,并将读出结果根据压缩过程中采用的数值压缩算法进行数值解码,得到数值结果。

3、将各分块解压缩输出合并成解压缩输出。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图7,示出了本发明一实施例提供的一种数据处理的装置的结构示意图,具体可以包括如下模块:

目标数据获取模块701,用于获取目标数据;

数据块得到模块702,用于对目标数据进行分块,得到一个或多个数据块;

数据单元集的压缩数据得到模块703,用于针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据;

目标数据的压缩数据得到模块704,用于根据所包含的数据单元集的压缩数据,得到每个数据块的压缩数据,并根据一个或多个数据块的压缩数据,得到目标数据的压缩数据。

在本发明一实施例中,数据单元集的压缩数据得到模块703,包括:

候选压缩数据得到子模块,用于对于每个数据单元集,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,并按照一种或多种字节组合方式,对数据单元集进行压缩,得到一个或多个候选压缩数据;

候选压缩数据选择子模块,用于从一个或多个候选压缩数据中,确定数据单元集的压缩数据。

在本发明一实施例中,候选压缩数据得到子模块,包括:

第一字节组合方式确定单元,用于在当前数据单元集所包含的数据单元的字节长度之和等于预设字节长度的情况下,根据预设字节长度,确定一个或多种字节组合方式;

第二字节组合方式确定单元,用于在当前数据单元集所包含的数据单元的字节长度之和小于预设字节长度的情况下,根据当前数据单元所包含的数据单元的字节长度之和,确定一种或多种字节组合方式。

在本发明一实施例中,候选压缩数据选择子模块,包括:

最短候选压缩数据选择单元,用于从一个或多个候选压缩数据中,确定字节长度最短的候选压缩数据为数据单元集的压缩数据。

在本发明一实施例中,数据单元集的压缩数据得到模块703,包括:

第一数据单元集确定子模块,用于针对每个数据块,从所包含的数据单元中,依次确定字节长度之和等于预设字节长度的一个或多个数据单元,作为一个数据单元集;

第二数据单元集确定子模块,用于在剩余的数据单元的字节长度之和小于预设字节长度的情况下,将剩余的数据单元作为一个数据单元集。

在本发明一实施例中,数据块得到模块702,包括:

第一分块子模块,用于按照预设字节长度或预设字节长度的倍数,对目标数据进行分块,得到一个或多个数据块;

第二分块子模块,用于在剩余的数据的字节长度之和小于预设字节长度或预设字节长度的倍数的情况下,将剩余的数据作为一个数据块。

在本发明一实施例中,每个数据单元集的压缩数据携带有用于记录压缩前数据的字节长度的信息。

在本发明一实施例中,多个数据块之间采用并行的方式压缩,在每个数据块内部采用串行的方式压缩。

参照图8,示出了本发明一实施例提供的另一种数据处理的装置的结构示意图,具体可以包括如下模块:

待解压缩数据获取模块801,用于获取目标数据的压缩数据;其中,目标数据的压缩数据为根据一个或多个数据块的压缩数据得到的,每个数据块的压缩数据为根据所包含的数据单元集的压缩数据得到的,每个数据单元集的压缩数据为对目标数据进行分块,得到一个或多个数据块,针对每个数据块,确定一个或多个数据单元集,并分别对一个或多个数据单元集进行压缩得到的;

在本发明一实施例中,分别对一个或多个数据单元集进行压缩,得到每个数据单元集的压缩数据,可以包括如下子步骤:

对于每个数据单元集,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,并按照一种或多种字节组合方式,对数据单元集进行压缩,得到一个或多个候选压缩数据;从一个或多个候选压缩数据中,确定数据单元集的压缩数据。

在本发明一实施例中,根据所包含的数据单元的字节长度之和,确定一种或多种字节组合方式,可以包括如下子步骤:

在当前数据单元集所包含的数据单元的字节长度之和等于预设字节长度的情况下,根据预设字节长度,确定一个或多种字节组合方式;在当前数据单元集所包含的数据单元的字节长度之和小于预设字节长度的情况下,根据当前数据单元所包含的数据单元的字节长度之和,确定一种或多种字节组合方式。

在本发明一实施例中,从一个或多个候选压缩数据中,确定数据单元集的压缩数据,可以包括如下子步骤:

从一个或多个候选压缩数据中,确定字节长度最短的候选压缩数据为数据单元集的压缩数据。

在本发明一实施例中,针对每个数据块,确定一个或多个数据单元集,可以包括如下子步骤:

针对每个数据块,从所包含的数据单元中,依次确定字节长度之和等于预设字节长度的一个或多个数据单元,作为一个数据单元集;在剩余的数据单元的字节长度之和小于预设字节长度的情况下,将剩余的数据单元作为一个数据单元集。

在本发明一实施例中,对目标数据进行分块,得到一个或多个数据块,可以包括如下子步骤:

按照预设字节长度或预设字节长度的倍数,对目标数据进行分块,得到一个或多个数据块;在剩余的数据的字节长度之和小于预设字节长度或预设字节长度的倍数的情况下,将剩余的数据作为一个数据块。

在本发明一实施例中,每个数据单元集的压缩数据携带有用于记录压缩前数据的字节长度的信息。

在本发明一实施例中,多个数据块之间采用并行的方式压缩,在每个数据块内部采用串行的方式压缩。

数据块的压缩数据得到模块802,用于根据目标数据的压缩数据,得到一个或多个数据块的压缩数据;

数据块的解压缩数据得到模块803,用于对每个数据块的压缩数据进行解压缩,得到每个数据块的解压缩数据;

目标数据得到模块804,用于根据一个或多个数据块的解压缩数据,得到目标数据。

本发明一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上数据处理的方法。

本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上数据处理的方法。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对所提供的一种数据处理的方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于LCD管脚复用的多按键判断系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类