掌桥专利:专业的专利平台
掌桥专利
首页

一种数据压缩的方法、装置、计算机设备和可读存储介质

文献发布时间:2024-04-18 19:59:31


一种数据压缩的方法、装置、计算机设备和可读存储介质

技术领域

本发明涉及数据压缩技术领域,特别是涉及一种数据压缩的方法、装置、计算机设备和可读存储介质。

背景技术

随着计算机技术的迅速发展,各种各样的海量信息不断增加。在数据仓库系统中,数据的存储往往需要占用大量的磁盘资源,存储的数据越多,数据的处理速度也会越来越慢,所以需要节省磁盘资源,对数据进行压缩。

有些结构化数据是有限并且可以枚举出来的,只需少数几位字节存储即可,但受限于数据库字段类型的限制即使采用最小存储单元往往也是小几十位,浪费存储空间。所以,针对可枚举值的数据,亟需一种进行压缩的方法。

发明内容

基于此,有必要针对上述技术问题,提供一种数据压缩的方法、装置、计算机设备和可读存储介质。

第一方面,提供了一种数据压缩的方法,所述方法包括:

获取多个有限枚举数据的待压缩字段对应的字段值;

将多个所述有限枚举数据的待压缩字段的所有字段值,一对一映射为位图数据的位序号;

根据各所述待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到多个所述待压缩字段的字段值对应组成的字段位图数据。

作为一种可选的实施方式,所述字段位图数据的列表示各所述待压缩字段的字段值对应的位序号,所述字段位图数据的行表示各所述待压缩字段对应的位值。

作为一种可选的实施方式,所述方法还包括:

根据各字段位图数据,创建位图索引,得到字段位图索引;所述字段位图索引的行表示各字段值对应的位值,所述字段位图索引的列表示位值对应的行地址。

作为一种可选的实施方式,所述方法还包括:

获取待查询字段的字段值;

根据所述待查询字段的字段值以及待查询字段的字段值所在的字段位图索引,确定所述待查询字段的字段值对应的目标位值,并基于所述目标位值,确定字段位图数据的目标行地址,以及基于所述目标行地址,确定所述待查询字段的字段值对应的字段位图数据。

第二方面,提供了一种数据压缩的装置,所述装置包括:

第一获取模块,用于获取多个有限枚举数据的待压缩字段对应的字段值;

映射模块,用于将多个所述有限枚举数据的待压缩字段的所有字段值,一对一映射为位图数据的位序号;

得到模块,用于根据各所述待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到多个所述待压缩字段的字段值对应组成的字段位图数据。

作为一种可选的实施方式,所述字段位图数据的列表示各所述待压缩字段的字段值对应的位序号,所述字段位图数据的行表示各所述待压缩字段对应的位值。

作为一种可选的实施方式,所述装置还包括:

创建模块,根据各字段位图数据,创建位图索引,得到字段位图索引;所述字段位图索引的行表示各字段值对应的位值,所述字段位图索引的列表示位值对应的行地址。

作为一种可选的实施方式,所述装置还包括:

第二获取模块,用于获取待查询字段的字段值;

确定模块,用于根据所述待查询字段的字段值以及待查询字段的字段值所在的字段位图索引,确定所述待查询字段的字段值对应的目标位值,并基于所述目标位值,确定字段位图数据的目标行地址,以及基于所述目标行地址,确定所述待查询字段的字段值对应的字段位图数据。

第三方面,提供了一种数据压缩的系统,所述数据压缩的系统包括:如第一方面所述的数据压缩的方法和如第二方面所述的数据压缩的装置。

第四方面,提供了一种计算机设备,包括存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的方法步骤。

第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法步骤。

本申请提供了一种数据压缩的方法、装置、计算机设备和可读存储介质,本申请的实施例提供的技术方案至少带来以下有益效果:获取多个有限枚举数据的待压缩字段对应的字段值;将多个所述有限枚举数据的待压缩字段的所有字段值,一对一映射为位图数据的位序号;根据各所述待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到多个所述待压缩字段的字段值对应组成的字段位图数据。通过将有限的可枚举的数据的待压缩字段的字段值,一对一映射为位图数据中的位序号,并将对应该位序号的位值,由0置为1,这样,就把一个字段值,存储为位图数据中的一个字节中的一位上,这样,不再使用一对一的映射方式,而是聚合映射,将多个字段映射为一个字段,进一步的压缩了数据的存储空间,大大减少了磁盘空间的使用。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

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

图1为本申请实施例提供的一种数据压缩的方法的流程图;

图2为本申请实施例提供的一种数据索引的方法的示例的流程图;

图3为本申请实施例提供的一种数据压缩的装置的结构示意图;

图4为本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

下面将结合具体实施方式,对本申请实施例提供的一种数据压缩的方法进行详细的说明,图1为本申请实施例提供的一种数据压缩的方法的流程图,如图1所示,具体步骤如下:

步骤101,获取多个有限枚举数据的待压缩字段对应的字段值。

在实施中,随着计算机技术的迅速发展,各种各样的海量信息不断增加。在数据仓库系统中,数据的存储往往需要占用大量的磁盘资源,存储的数据越多,数据的处理速度也会越来越慢,所以需要节省磁盘资源,对数据进行压缩。有些结构化数据是有限并且可以枚举出来的,只需少数几位字节存储即可,但受限于数据库字段类型的限制即使采用最小存储单元往往也是小几十位,浪费存储空间。所以,可以对有限的可枚举的数据进行压缩,节省存储空间。对于可枚举的数据的字段,不再使用一对一的映射方法,而是采用聚合映射的方法,将多个字段映射为一个字段。这样,就可以减少磁盘空间的使用。所以,需要先获取多个有限枚举数据的待压缩字段对应的字段值。其中,有限枚举数据的字段可以为性别、月份、星期几、颜色、单位名、学历、职业等。

步骤102,将多个有限枚举数据的待压缩字段的所有字段值,一对一映射为位图数据的位序号。

在实施中,本申请采用聚合压缩的方法,将多个字段映射为一个字段。那么就需要先将多个有限枚举数据的待压缩字段的所有字段值,一对一进行映射,构建数据字典。数据字典将有限枚举数据的待压缩字段的字段值映射为整型数据,这些整型数据不能重复,且有序,从1开始。整型数据的序号也是后续压缩存储的位图数据的位序号。如果按照之前通常的映射方案,将每个字段值使用int类型进行一一映射。若每个int类型占用4个字节,三个字段,需要4

例如,表1为性别、年龄类别、生肖三个待压缩字段的数据字典,如表1所示,字段值为男、女、未成年、成年、鼠……猪,映射值从1开始到16的整型数据,版本为1。其中,版本可以记录当前字典所使用的版本,当字典字段有所变更时,可以增加版本数字来进行区分。这样,通过字段值查询映射值,将待压缩字段的值转换为位图数据的位序号。

表1

表2为性别、年龄类别、生肖三个待压缩字段的字段位图数据,如表2所示,字段值为男、女、未成年、成年、鼠……猪,映射值从1开始到16的整型数据。其中,整型数据即为位图数据的位序号。这样,就可以将该用户的性别、年龄类别、生肖三个待压缩字段,压缩存储为字段位图数据,位图数据的每一个位表示一个字段值,16位两个字节就可以将男性、成年,生肖为狗三个字段全部存储,节省了存储空间。

表2

步骤103,根据各待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到多个所述待压缩字段的字段值对应组成的字段位图数据。

在实施中,位图数据的位值有两种取值:0和1,长度为1位。在输入0以外的其他值时,系统均把它们当1看待。1表示是,0表示否。将每一个待压缩字段的字段值,对应存储到位图数据的一个字节中的对应位序号的位上后,可以根据各待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,多个待压缩字段的字段值对应组成的字段位图数据。其中,字段位图数据可以用二进制数组进行存储,二进制数组存储能够进一步减少存储空间的使用,也便于进行字段值的扩展。其中,字段位图数据的列表示各待压缩字段的字段值对应的位序号,字段位图数据的行表示各待压缩字段对应的位值。例如,在用于存储用户信息时,每一行存储一个用户对应的全部可枚举数据的字段,所以行地址就可以用来区别不同用户的全部可枚举数据的字段。

表3为性别、年龄类别、生肖三个待压缩字段组成的字段位图数据,如表3所示,字段值为男、女、未成年、成年、鼠……猪,映射值从1开始到16的位序号。在存储某一男性、成年,生肖为狗的用户时,将该用户的待压缩字段的字段值,对应的位图数据的位序号中男、成年和狗的位值由0置为1,也就是将位图数据的位序号为1、4和15对应的位值,由0置为1,这样,就可以将该用户的性别、年龄类别、生肖三个待压缩字段,压缩存储组成的字段位图数据,位图数据每一个位表示一个整型数据,16位两个字节就可以将男性、成年,生肖为狗三个字段全部存储,完成了数据压缩,大大节省了存储空间。

表3

进一步的,采用聚合映射之后,无法再使用字段值的索引,所以,还需要针对聚合映射创建字段位图索引。具体的的步骤如下。

根据各字段位图数据,创建位图索引,得到字段位图索引;字段位图索引的行表示各字段值对应的位值,字段位图索引的列表示位值对应的行地址。

在实施中,现有技术中,在原始数据的查询中时,通常会采用在相关字段上创建B-Tree索引的方法来加速数据的查询。比如,要查询性别为男的数据,原来的方法为:selectcolumn1,column2 from table where sex='男',也就是说,在sex字段创建了索引的话,会先查询sex的索引,在数据量较大的情况下,可以认为男女比例为1:1,则需要查找50%的数据,这样在数据量较大的情况下,效率也是比较低下的。本申请中将多个字段值聚合为一个位图数据后,原来这种直接在字段上创建索引的方式就无法使用了,因此需要重新创建索引。所以,可以根据各待压缩字段的字段值对应组成的字段位图数据,创建位图索引,得到字段位图索引。将各字段位图数据中的每一字段值的位值横向存储,也就是说,字段位图索引的行表示各字段值对应的位值。列为该字段值对应的位值所在的字段位图数据对应的行地址。也就是说,字段位图索引的列表示位值对应的行地址。其中,字段位图索引可以用二进制数组进行存储,二进制数组存储能够进一步减少存储空间的使用,也便于进行字段值的扩展。后续步骤中就可以根据字段值,在字段位图索引中进行查找,就可以得到该字段值对应的字段位图数据。这样,通过字段位图索引可以提高数据的查询效率。

表4为的二进制数组的存储的性别的索引,如表4所示,行地址的1、2、3…为字段位图数据所处的行序号,可以根据行地址找到该字段值对应的字段位图数据。例如,字段位图索引中第一列的字段位图数据的性别为男,第二列的字段位图数据的性别为女,第三列的字段位图数据中的性别为女等等。若要查询用户为女性的所有用户的全部个人数据,则将行地址为2、3、6、7的字段位图数据中的所有数据返回输出。

表4

进一步的,创建完字段位图索引之后,可以根据字段位图索引进行数据查询,具体的步骤过程如下。

步骤一,获取待查询字段的字段值。

在实施中,创建完字段位图索引后,就可以根据字段位图索引查询数据。因为,字段位图索引是针对各个字段值进行创建的索引,所以,需要先获取待查询字段的字段值。

步骤二,根据待查询字段的字段值以及待查询字段所在的字段位图索引,确定待查询字段的字段值对应的目标位值,并基于目标位值,确定字段位图数据的目标行地址,以及基于目标行地址,确定待查询字段的字段值对应的字段位图数据。

在实施中,字段位图索引是根据各字段位图数据的字段值构建的,所以根据字段值在字段位图索引中查询想要的目标位值。找到对应的目标位值后,基于目标位值,找到目标位值对应的目标行地址,该目标行地址为满足该字段值的目标字段位图数据中的行序号。根据目标行地址(行序号),就可以查询到满足要求的字段位图数据的所有数据。这样,就可以根据目标行地址,确定待查询满足字段值要求的字段位图数据。因此,可以根据待查询字段的字段值以及待查询字段所在的字段位图索引,确定待查询字段的字段值对应的目标位值,并基于目标位值,确定字段位图数据的目标行地址,以及基于目标行地址,确定待查询字段的字段值对应的字段位图数据。

例如,以字段性别为例,查询性别为男的数据时,直接取出男向量,选择位值为1的男向量,并找到位值为1的男向量的行地址,根据行地址,在找到对应的字段位图数据,返回该字段位图数据的男性的所有数据。

本申请实施例提供了一种数据压缩的方法,获取多个有限枚举数据的待压缩字段以及各待压缩字段对应的字段值;将多个所述有限枚举数据的待压缩字段的字段值,一对一映射为位图数据的位序号;根据各所述待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到各所述待压缩字段的字段值对应的字段位图数据。通过将有限的可枚举的数据的待压缩字段的字段值,一对一映射为位图数据中的位序号,并将对应该位序号的位值,由0置为1,这样,就把一个字段值,存储为位图数据中的一个字节中的一位上,这样,不再使用一对一的映射方式,而是聚合映射,将多个字段映射为一个字段,进一步的压缩了数据的存储空间,大大减少了磁盘空间的使用。

本申请实施例提供的一种数据索引的方法的示例的流程图。如图2所示,具体步骤如下。

步骤201,获取多个有限枚举数据的待压缩字段对应的字段值。

步骤202,将多个有限枚举数据的待压缩字段的所有字段值,一对一映射为位图数据的位序号。

步骤203,根据各待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到多个待压缩字段的字段值对应组成的字段位图数据。

步骤204,根据各字段位图数据,创建位图索引,得到字段位图索引;字段位图索引的行表示各字段值对应的位值,字段位图索引的列表示位值对应的行地址。

步骤205,获取待查询字段的字段值。

步骤206,根据待查询字段的字段值以及待查询字段的字段值所在的字段位图索引,确定待查询字段的字段值对应的目标位值,并基于目标位值,确定字段位图数据的目标行地址,以及基于目标行地址,确定待查询字段的字段值对应的字段位图数据。

应该理解的是,虽然图1和图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1和图2中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

可以理解的是,本说明书中上述方法的各个实施例之间相同/相似的部分可互相参见,每个实施例重点说明的是与其他实施例的不同之处,相关之处参见其他方法实施例的说明即可。

本申请实施例还提供了一种数据压缩的装置,如图3所示,该装置包括:

第一获取模块301,用于获取多个有限枚举数据的待压缩字段对应的字段值;

映射模块302,用于将多个所述有限枚举数据的待压缩字段的所有字段值,一对一映射为位图数据的位序号;

得到模块303,用于根据各所述待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到多个所述待压缩字段的字段值对应组成的字段位图数据。

作为一种可选的实施方式,所述字段位图数据的列表示各所述待压缩字段的字段值对应的位序号,所述字段位图数据的行表示各所述待压缩字段对应的位值。

作为一种可选的实施方式,所述装置还包括:

创建模块,用于根据各字段位图数据,创建位图索引,得到字段位图索引;所述字段位图索引的行表示各字段值对应的位值,所述字段位图索引的列表示位值对应的行地址。

作为一种可选的实施方式,所述装置还包括:

第二获取模块,用于获取待查询字段的字段值;

确定模块,用于根据所述待查询字段的字段值以及待查询字段的字段值所在的字段位图索引,确定所述待查询字段的字段值对应的目标位值,并基于所述目标位值,确定字段位图数据的目标行地址,以及基于所述目标行地址,确定所述待查询字段的字段值对应的字段位图数据。

本申请实施例提供了一种数据压缩的装置,获取多个有限枚举数据的待压缩字段以及各待压缩字段对应的字段值;将多个所述有限枚举数据的待压缩字段的所有字段值,一对一映射为位图数据的位序号;根据各所述待压缩字段的字段值,将对应的位图数据的位序号的位值由0置为1,得到各所述待压缩字段的字段值对应的字段位图数据。通过将有限的可枚举的数据的待压缩字段的字段值,一对一映射为位图数据中的位序号,并将对应该位序号的位值,由0置为1,这样,就把一个字段值,存储为位图数据中的一个字节中的一位上,这样,不再使用一对一的映射方式,而是聚合映射,将多个字段映射为一个字段,进一步的压缩了数据的存储空间,大大减少了磁盘空间的使用。

关于数据压缩的装置的具体限定可以参见上文中对于数据压缩的方法的限定,在此不再赘述。上述数据压缩的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,如图4所示,包括存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据压缩的方法步骤。

在一个实施例中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据压缩的方法的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

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

还需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 一种氨基化石墨烯量子点的制备方法及应用
  • 一种非闪烁量子点及其制备方法和量子点发光二极管
  • 一种基于废弃柚子皮制备的氯氮双掺杂碳量子点及其制备方法和应用
  • 一种量子点彩色滤光片基板及其制备方法和显示装置
  • 一种等离子体技术制备氨基化单层PtS
  • 一种利用气液两相等离子体技术制备荧光碳量子点的方法
技术分类

06120116520873