CN115208414B - 数据压缩方法、数据压缩装置、计算机设备及存储介质 - Google Patents
数据压缩方法、数据压缩装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115208414B CN115208414B CN202211119160.9A CN202211119160A CN115208414B CN 115208414 B CN115208414 B CN 115208414B CN 202211119160 A CN202211119160 A CN 202211119160A CN 115208414 B CN115208414 B CN 115208414B
- Authority
- CN
- China
- Prior art keywords
- data
- compression
- compressed
- character
- subset
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例提供了一种数据压缩方法、数据压缩装置、计算机设备及存储介质,属于计算机技术领域。该方法包括:接收数据压缩信号,数据压缩信号包括待压缩的数据页,数据页包括至少一条待压缩数据和待压缩数据的压缩标识;根据预训练的压缩模型对待压缩数据进行数据压缩,得到数据压缩集,数据压缩集包括多个字符类型子集,字符类型子集用于存储待压缩数据经过数据压缩后得到的字符信息;根据压缩标识和字符类型子集构建目标熵编码器;根据目标熵编码器对数据压缩集进行编码,得到压缩结果。本申请实施例能够提高对数据压缩的压缩率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据压缩方法、数据压缩装置、计算机设备及存储介质。
背景技术
目前,在数据库系统中,将数据压缩后再存储在存储介质上,既可以节约存储介质成本又可以提升数据库的性能。然而,现有的数据压缩方法对数据的压缩率较低。因此,如何提高对数据压缩的压缩率,成为了亟待解决的技术问题。
发明内容
本申请实施例的主要目的在于提出了一种数据压缩方法、数据压缩装置、计算机设备及存储介质,能够提高对数据压缩的压缩率。
为实现上述目的,本申请实施例的第一方面提出了一种数据压缩方法,所述方法包括:
接收数据压缩信号,所述数据压缩信号包括待压缩的数据页,所述数据页包括至少一条待压缩数据和所述待压缩数据的压缩标识;
根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集,所述数据压缩集包括多个字符类型子集,所述字符类型子集用于存储所述待压缩数据经过数据压缩后得到的字符信息;
根据所述压缩标识和所述字符类型子集构建目标熵编码器;
根据所述目标熵编码器对所述数据压缩集进行编码,得到压缩结果。
在一些实施例中,在所述根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集之前,所述方法还包括:构建压缩模型,具体包括:
根据所述数据页构建训练数据集,所述训练数据集包括多条所述待压缩数据;
根据预设的字符长度对所述待压缩数据进行字符划分,得到多个候选字符串;
根据每个所述候选字符串对所述待压缩数据进行哈希映射,得到映射结果和所述映射结果的映射频率;
对全部所述映射频率进行数值比较,确定参考字符串;
根据所述参考字符串构建所述压缩模型。
在一些实施例中,所述根据所述压缩标识和所述字符类型子集构建目标熵编码器,包括:
若识别到所述压缩标识不是结束标识,重复执行所述根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集。
在一些实施例中,所述根据所述压缩标识和所述字符类型子集构建目标熵编码器,还包括:
若识别到所述压缩标识是结束标识,根据所述字符类型子集构建目标熵编码器。
在一些实施例中,所述字符类型子集包括未压缩字符子集、匹配字符子集,所述若识别到所述压缩标识是所述结束标识,根据所述字符类型子集构建目标熵编码器,包括:
若识别到所述压缩标识是所述结束标识,通过对所述未压缩字符子集中的字符信息进行频率统计,得到第一频率统计结果;
根据所述第一频率统计结果构建第一熵编码器;
通过对所述匹配字符子集中的字符信息进行频率统计,得到第二频率统计结果;
根据所述第二频率统计结果构建第二熵编码器;
根据所述第一熵编码器和所述第二熵编码器得到所述目标熵编码器。
在一些实施例中,所述根据所述目标熵编码器对所述数据压缩集进行编码,得到压缩结果,包括:
根据所述第一熵编码器对所述未压缩字符子集进行编码,得到第一编码数据流;
根据所述第二熵编码器对所述匹配字符子集进行编码,得到第二编码数据流;
根据所述第一编码数据流和所述第二编码数据流得到压缩结果。
在一些实施例中,所述根据所述第一编码数据流和所述第二编码数据流得到压缩结果,包括:
获取所述目标熵编码器的编码器元数据和所述压缩模型的参考字符串;
根据所述第一编码数据流和所述第二编码数据流得到目标压缩数据流;
根据所述编码器元数据、所述参考字符串和所述目标压缩数据流得到压缩结果。
为实现上述目的,本申请实施例的第二方面提出了一种数据压缩装置,所述装置包括:
压缩信号接收模块,用于接收数据压缩信号,所述数据压缩信号包括待压缩的数据页,所述待压缩的数据页包括至少一条待压缩数据和所述待压缩数据的压缩标识;
数据压缩模块,用于根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集,所述数据压缩集包括多个字符类型子集,所述字符类型子集用于存储所述待压缩数据经过数据压缩后得到的字符信息;
编码器构建模块,用于根据所述压缩标识和所述字符类型子集构建目标熵编码器;
编码模块,用于根据所述目标熵编码器对所述数据压缩集进行编码,得到压缩结果。
为实现上述目的,本申请实施例的第三方面提出了一种计算机设备,包括:
至少一个存储器;
至少一个处理器;
至少一个计算机程序;
所述至少一个计算机程序被存储在所述至少一个存储器中,所述至少一个处理器执行所述至少一个计算机程序以实现上述第一方面所述的数据压缩方法。
为实现上述目的,本申请实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于使计算机执行上述第一方面所述的数据压缩方法。
本申请实施例提出的一种数据压缩方法、数据压缩装置、计算机设备及存储介质,通过接收包括待压缩的数据页的数据压缩信号,该待压缩的数据页包括至少一条待压缩数据和待压缩数据的压缩标识。根据预训练的压缩模型对待压缩数据进行数据压缩,得到数据压缩集,该数据压缩集包括多个字符类型子集,每个字符类型子集用于存储待压缩数据经过数据压缩后得到的字符信息。根据压缩标识和字符类型子集构建目标熵编码器,并根据得到的目标熵编码器对数据压缩集进行编码,得到压缩结果。本申请实施例能够提高对数据压缩的压缩率。
附图说明
图1是本申请实施例提供的数据压缩方法的第一流程图;
图2是本申请实施例提供的数据压缩方法的第二流程图;
图3是本申请实施例提供的数据压缩方法的第三流程图
图4是图1中的步骤S140的流程图;
图5是图4中的步骤S430的流程图;
图6是本申请实施例提供的数据压缩方法的结构流程图;
图7是本申请实施例提供的压缩字典结构的结构示意图;
图8是本申请实施例提供的数据压缩装置的结构示意图;
图9是本申请实施例提供的计算机设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
页(page):是指存储管理部分软件处理的最基本数据单元,即指磁盘空间管理器支持处理外存时的最小数据处理单位。
元数据(Metadata):又称中介数据、中继数据,为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
熵编码器:根据熵编码法构建的熵编码器,熵编码法是一种进行无损数据压缩的技术,在这个技术中一段文字中的每个字母被一段不同长度的比特所代替。
目前,将数据压缩后再存储到存储介质上,既可以节约存储介质成本又可以提升数据库的性能。在数据库系统中,一般将数据在内存里面组织好之后,以一个page(8k)为粒度写到存储介质上。其中,在写入到存储介质之前,这个page的数据压缩方式大致分为两种:第一种,将整个page的数据作为一个整体进行压缩,并将压缩之后的数据写入存储介质;第二种,将page里面的每一条数据单独进行压缩,然后通过紧凑排布将压缩后的数据写入存储介质。此外,现有的数据库系统大多使用现成的压缩算法以压缩整个page的数据,例如,opengauss数据库支持lz4、zstd等压缩算法,postgre数据库也可以支持lz4、zstd等压缩算法。
当采用zstd压缩算法对数据库进行数据的行压缩时,现有的采用熵编码器的压缩方法存在一定的弊端,使得对数据的压缩率较低,例如:(1)先根据zstd字典里面已经有的熵编码器元数据,构建对应的熵编码器,从而根据压缩算法和熵编码器进行数据压缩,该方法在生成熵编码器的时候对于每个符号出现的统计频率不准确,导致生成的熵编码器的压缩率较低;(2)将每一条待压缩数据单独调用压缩接口就直接输出压缩结果,该方法需要在压缩后的每条数据流里面存储熵编码器的元数据,且在数据库中每条被压缩的数据都需要对应的元数据,从而降低了对数据的压缩率。因此,如何提高对数据压缩的压缩率,成为了亟待解决的技术问题。
基于此,本申请实施例提供了一种数据压缩方法、数据压缩装置、计算机设备及存储介质,能够提高对数据压缩的压缩率。
本申请实施例提供的数据压缩方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现数据压缩方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络个人计算机(Personal Computer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
请参阅图1,图1是本申请实施例提供的数据压缩方法的一个可选的流程图,图1中的方法可以具体包括但不限于步骤S110至步骤S140,下面结合图1对这四个步骤进行详细介绍。
步骤S110,接收数据压缩信号,数据压缩信号包括待压缩的数据页,数据页包括至少一条待压缩数据和待压缩数据的压缩标识;
步骤S120,根据预训练的压缩模型对待压缩数据进行数据压缩,得到数据压缩集,数据压缩集包括多个字符类型子集,字符类型子集用于存储待压缩数据经过数据压缩后得到的字符信息;
步骤S130,根据压缩标识和字符类型子集构建目标熵编码器;
步骤S140,根据目标熵编码器对数据压缩集进行编码,得到压缩结果。
可以理解的是,在一些实施例的步骤S110至步骤S140中,本申请实施例通过接收包括待压缩的数据页的数据压缩信号,该待压缩的数据页包括至少一条待压缩数据和待压缩数据的压缩标识。根据预训练的压缩模型对待压缩数据进行数据压缩,得到数据压缩集,其中,数据压缩集包括多个字符类型子集,每个字符类型子集用于存储待压缩数据经过数据压缩后得到的字符信息。根据压缩标识和字符类型子集构建目标熵编码器,并根据得到的目标熵编码器对数据压缩集进行编码,得到压缩结果。本申请实施例通过统计全部待压缩数据的字符信息以得到更准确的熵编码器,从而提高对数据压缩的压缩率。
需要说明的是,本申请实施例提供的数据压缩方法可以应用于客户端或服务端,且调用端也可以为客户端或服务端,在此不作具体限定。
在一些实施例的步骤S110中,当调用端需要进行数据的压缩,则需要向执行数据压缩方法的客户端或服务端发送数据压缩信号。当执行数据压缩方法的为服务端,则通过服务端接收数据压缩信号,该数据压缩信号包括待压缩的数据页,待压缩的数据页包括至少一条待压缩数据和待压缩数据的压缩标识,压缩标识用于标记每一条待压缩数据的数据状态。
需要说明的是,调用端可以通过调用预设置的数据压缩接口输入待压缩的数据页,以生成对应的数据压缩信号。
需要说明的是,待压缩数据可以为待压缩字符串的形式。
在一些实施例的步骤S120中,将一个待压缩的数据页的每一条待压缩数据输入预训练的压缩模型进行数据压缩,得到待压缩数据的多个相关字符信息,根据字符信息的类型分别将这些字符信息对应存储到预设置的字符类型子集中,以得到数据压缩后的数据压缩集,从而便于统计存储不同的字符信息。
需要说明的是,在对一条待压缩数据进行数据压缩后,对应更新数据压缩集的内容,同时,将数据压缩集都缓存在内存中。
在一些实施例的步骤S130中,压缩标识用于标记每一条待压缩数据的数据状态,当确定当前进行数据压缩的待压缩数据的压缩标识满足预设的数据状态,根据得到的数据压缩集的字符类型子集构建目标熵编码器,该目标熵编码器用于对压缩得到的字符类型子集进行熵编码压缩,以提高对数据压缩的压缩率。
在一些实施例的步骤S140中,根据得到的目标熵编码器对数据压缩集中字符类型子集对应的字符信息进行再次的压缩编码,以得到更好的压缩率。
请参阅图2,图2是本申请实施例提供的数据压缩方法的另一个可选的流程图,在本申请的一些实施例中,在步骤S120之前,本申请实施例的方法还包括:构建压缩模型,具体包括但不限于步骤S210至步骤S250,下面结合图2对这五个步骤进行详细介绍。
步骤S210,根据数据页构建训练数据集,训练数据集包括多条待压缩数据;
步骤S220,根据预设的字符长度对待压缩数据进行字符划分,得到多个候选字符串;
步骤S230,根据每个候选字符串对待压缩数据进行哈希映射,得到映射结果和映射结果的映射频率;
步骤S240,对全部映射频率进行数值比较,确定参考字符串;
步骤S250,根据参考字符串构建压缩模型。
在一些实施例的步骤S210中,为了更好地实现查找和压缩重复数据,首先,根据待压缩的数据页构建训练数据集,该训练数据集包括多条待压缩数据。
需要说明的是,在一些实施例中,可以将全部待压缩数据分为两个部分,第一部分的待压缩数据为训练数据,该部分数据用于构建训练数据集,以训练得到压缩模型;第二部分的待压缩数据为验证数据,该部分数据用于验证生成的压缩模型的有效性。具体地,对两部分的数据的具体划分可以根据实际需求进行设定,在此不再限定,也可以根据需求不设置验证数据,则将全部待压缩数据用于构建训练数据集。
在一些实施例的步骤S220中,为了更大程度地提高对重复数据的压缩率,根据预设的字符长度对待压缩数据进行字符划分,得到多个候选字符串。例如,当预设的字符长度为八个字节,则可以对待压缩数据以八个字节为单位进行字符划分,对于不够八个字节的字符串可以进行空格填充,以得到字符长度相同的多个候选字符串。其中,本申请实施例并不限定于预设的字符长度为八个字节,可以根据实际需求进行灵活调整。
需要说明的是,为了得到划分效果最好的字符长度,可以分别将字符长度设置为四个字节、六个字节、八个字节等,并根据每个字符长度构建对应的候选压缩模型,根据训练数据集的待压缩数据对每个候选压缩模型进行验证,确定压缩率最高的候选压缩模型为所需的压缩模型,则该候选压缩模型对应的字符长度为所需的字符长度。
在一些实施例的步骤S230中,将划分的候选字符串依次与训练数据集的待压缩数据进行哈希映射,具体地,可以为每个候选字符串设置对应的一个计数器,当一个候选字符串对一个待压缩数据进行哈希映射,当映射结果为成功,则计数器对应加1,当映射结果为不成功,则继续向后进行哈希映射,直至对待压缩数据映射完成。之后,继续对下一个待压缩数据进行哈希映射,当对训练数据集中的全部待压缩数据映射完毕,则该候选字符串对应的计数器的值为其映射结果的映射频率。
在一些实施例的步骤S240中,将每个候选字符串对应的映射频率进行数值比较,选择映射频率最高的候选字符串作为参考字符串。具体地,对待压缩数据进行数据压缩,需要参考压缩字典进行数据压缩,其中,训练得到的参考字符串为压缩字典的字典内容,该字典内容用于表示待压缩数据中出现频率较高的字符串。
在一些实施例的步骤S250中,在确定参考字符串后,根据参考字符串和预设置的数据压缩算法构建压缩模型。例如,可以采用deflate、gzip、Brotli等数据压缩算法,在此不再赘述。
在一些实施例中,步骤S130可以包括:若识别到压缩标识不是结束标识,重复执行根据预训练的压缩模型对待压缩数据进行数据压缩,得到数据压缩集。
具体地,本申请实施例将待压缩数据进行数据压缩后的数据压缩集缓存到内存中,并继续对下一条待压缩数据进行数据压缩,当压缩模型识别到当前的待压缩数据的压缩标识不是结束标识,则继续根据预训练的压缩模型对当前的待压缩数据进行数据压缩,并根据数据压缩后的内容更新数据压缩集。
需要说明的是,压缩标识可以为一个布尔型的标记,即压缩标识可以为false或者true,压缩标识为false表示待压缩的数据页还没有传输完成,即待压缩数据后面还有需要进行压缩的数据,压缩标识为true表示待压缩的数据页里面的数据已经全部传输给压缩模型。
在一些实施例中,步骤S130还可以包括:若识别到压缩标识是结束标识,根据字符类型子集构建目标熵编码器。
具体地,为了提高熵编码器对待压缩数据的压缩率,当压缩模型识别到当前的待压缩数据的压缩标识是结束标识,表示待压缩的数据页的数据输入完毕,则根据得到的字符类型子集构建目标熵编码器。本申请实施例根据统计全部待压缩数据得到的字符类型子集,能够得到压缩率较高的目标熵编码器,以提高对数据压缩的压缩率。
需要说明的是,压缩标识是结束标识的待压缩数据可以设置为空,则当识别到压缩标识是结果标识时,直接进行后续操作。
请参阅图3,图3是本申请实施例提供的数据压缩方法的另一个可选的流程图,在一些实施例中,字符类型子集包括未压缩字符子集、匹配字符子集,本申请实施例提供的步骤S130在识别到压缩标识是结束标识时,具体可以包括但不限于步骤S310至步骤S350,下面结合图3对这五个步骤进行详细介绍。
步骤S310,若识别到压缩标识是结束标识,通过对未压缩字符子集中的字符信息进行频率统计,得到第一频率统计结果;
步骤S320,根据第一频率统计结果构建第一熵编码器;
步骤S330,通过对匹配字符子集中的字符信息进行频率统计,得到第二频率统计结果;
步骤S340,根据第二频率统计结果构建第二熵编码器;
步骤S350,根据第一熵编码器和第二熵编码器得到目标熵编码器。
具体地,若识别到压缩标识是结束标识,通过对未压缩字符子集中的全部字符信息进行频率统计,得到第一频率统计结果,并根据第一频率统计结果构建第一熵编码器。其中,未压缩字符子集用于表示与参考字符串未匹配的字符信息的集合,该第一熵编码器对应于未压缩字符子集中的字符信息。同时,通过对匹配字符子集中的字符信息进行频率统计,得到第二频率统计结果,并根据第二频率统计结果构建第二熵编码器。其中,匹配字符子集用于表示与参考字符串匹配的字符信息的集合,该第二熵编码器对应于匹配字符子集中的字符信息。最后,根据第一熵编码器和第二熵编码器共同构建得到目标熵编码器,可以将目标熵编码器设置多个输入口,每个输入口对应一个熵编码器,从而更好地提高对一个待压缩的数据页的数据压缩率。
需要说明的是,在一些实施例中,当采用deflate数据压缩算法构建的压缩模型,未压缩字符子集中的字符信息可以包括未压缩字符子集的未匹配字符信息和未压缩字符子集的第一字符长度,匹配字符子集中的字符信息可以包括匹配字符集合的第二字符长度和匹配字符子集的相对字符长度。其中,未匹配字符信息用于表示经过压缩模型之后不能被压缩的具体字符信息,第一字符长度用于表示经过压缩模型之后不能被压缩的具体字符的长度,第二字符长度用于表示经过压缩模型之后能完全匹配的字符的长度,相对字符长度用于表示经过压缩模型之后能完全匹配参考字符串的字符长度相对于当前字符的距离。
请参阅图4,图4是本申请实施例提供的步骤S140的一个可选的流程图,在一些实施例中,步骤S140具体可以包括但不限于步骤S410至步骤S430,下面结合图4对这三个步骤进行详细介绍。
步骤S410,根据第一熵编码器对未压缩字符子集进行编码,得到第一编码数据流;
步骤S420,根据第二熵编码器对匹配字符子集进行编码,得到第二编码数据流;
步骤S430,根据第一编码数据流和第二编码数据流得到压缩结果。
具体地,为了得到更准确地压缩结果,将每种字符类型子集中的字符信息分别通过对应的熵编码器进行编码,即根据第一熵编码器对未压缩字符子集进行编码,得到第一编码数据流,根据第二熵编码器对匹配字符子集进行编码,得到第二编码数据流。最后,根据第一编码数据流和第二编码数据流得到压缩结果。
请参阅图5,图5是本申请实施例提供的步骤S430的一个可选的流程图。在一些实施例中,步骤S430具体可以包括但不限于步骤S510至步骤S530,下面结合图5对这三个步骤进行详细介绍。
步骤S510,获取目标熵编码器的编码器元数据和压缩模型的参考字符串;
步骤S520,根据第一编码数据流和第二编码数据流得到目标压缩数据流;
步骤S530,根据编码器元数据、参考字符串和目标压缩数据流得到压缩结果。
在一些实施例的步骤S510至步骤S530中,利用熵编码器得到对应的编码数据流,同时获取目标熵编码器的编码器元数据,该编码器元数据用于在对压缩结果进行解码时获取每个字符信息对应的编码信息,以快速完成解码。具体地,获取目标熵编码器的编码器元数据和压缩模型的参考字符串,将第一编码数据流和第二编码数据流进行字符拼接,得到目标压缩数据流。由于训练得到的参考字符串为压缩字典的字典内容,根据预设的压缩字典结构对参考字符串和编码器元数据进行组合,得到目标压缩字典。根据目标压缩字典和目标压缩数据流得到压缩结果。将得到的压缩结果返回至调用端口,以完成数据压缩。
示例性的,如图6所示,待压缩的数据页中的待压缩数据为待压缩字符串,当对待压缩字符串1至待压缩字符串n采用deflate算法构建的压缩模型进行数据压缩时,具体为,首先,根据deflate算法构建的压缩模型中的参考字符串对待压缩数据进行数据压缩,得到数据压缩集。该数据压缩集包括四个字符类型子集,具体为第一字符子集、第二字符子集、第三字符子集和第四字符子集,则第一字符子集对应于待压缩字符串1至待压缩字符串n中未匹配字符信息的集合,第二字符子集对应于待压缩字符串1至待压缩字符串n中第一字符长度的集合,第三字符子集对应于待压缩字符串1至待压缩字符串n中第二字符长度的集合,第四字符子集对应于待压缩字符串1至待压缩字符串n中相对字符长度的集合。因此,该压缩模型对应的目标熵编码器的构建具体为,若识别到压缩标识是结束标识,通过对第一字符子集的信息进行频率统计,得到第一频率统计结果的第一子结果;通过对第二字符子集的信息进行频率统计,得到第一频率统计结果的第二子结果;通过对第三字符子集的信息进行频率统计,得到第二频率统计结果的第三子结果;通过对第四字符子集的信息进行频率统计,得到第二频率统计结果的第四子结果。之后,分别根据不同的子结果构建对应的熵编码器,即根据第一子结果构建第三熵编码器,根据第二子结果构建第四熵编码器,根据第三子结果构建第五熵编码器,根据第二子结果构建第六熵编码器,最后,根据第三熵编码器、第四熵编码器、第五熵编码器和第六熵编码器得到目标熵编码器。将第一字符子集的未匹配字符信息通过第三熵编码器得到第三编码数据流;将第二字符子集的第一字符长度的信息通过第四熵编码器得到第四编码数据流;将第三字符子集的第二字符长度的信息通过第五熵编码器得到第五编码数据流;将第四字符子集的相对字符长度的信息通过第六熵编码器得到第六编码数据流。最后,将第三编码数据流、第三编码数据流、第三编码数据流和第四编码数据流进行数据流拼接,得到目标压缩数据流。
需要说明的是,如图7所示,预设的压缩字典结构包括字典标头部分、字典内容部分和熵编码器部分,则字典内容部分用于存储参考字符串的内容,熵编码器部分用于存储目标熵编码器的编码器元数据。
需要说明的时,字典标头部分包括entropySize变量和entropyOffset变量,其中,entropySize变量用于表示熵编码的大小,entropyOffset变量熵编码在字典里面的位置信息。
需要说明的是,调用端接收到压缩结果后,可以将压缩结果存储到磁盘或其他内存中,当需要对压缩结果进行解压缩,具体为,调用端根据得到的压缩内容获取目标压缩字典和目标压缩数据流,根据目标压缩字典可以得到参考字符串和编码器元数据,根据参考字符串和编码器元数据对目标压缩数据流进行解压缩,得到待压缩的数据页。
请参阅图8,图8是本申请实施例提供的数据压缩装置的结构示意图,该装置可以实现上述实施例的数据压缩方法,该装置包括压缩信号接收模块810、数据压缩模块820、编码器构建模块830和编码模块840。
压缩信号接收模块810,用于接收数据压缩信号,数据压缩信号包括待压缩的数据页,待压缩的数据页包括至少一条待压缩数据和待压缩数据的压缩标识;
数据压缩模块820,用于根据预训练的压缩模型对待压缩数据进行数据压缩,得到数据压缩集,数据压缩集包括多个字符类型子集,字符类型子集用于存储待压缩数据经过数据压缩后得到的字符信息;
编码器构建模块830,用于根据压缩标识和字符类型子集构建目标熵编码器;
编码模块840,用于根据目标熵编码器对数据压缩集进行编码,得到压缩结果。
需要说明的是,本申请实施例的数据压缩装置用于实现上述实施例的数据压缩方法,本申请实施例的数据压缩装置与前述的数据压缩方法相对应,具体的处理过程请参照前述的数据压缩方法,在此不再赘述。
本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个存储器,至少一个处理器,至少一个计算机程序,至少一个计算机程序被存储在至少一个存储器中,至少一个处理器执行至少一个计算机程序以实现上述实施例中任一种的数据压缩方法。该计算机设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图9,图9示意了另一实施例的一种计算机设备的硬件结构,该计算机设备包括:
处理器910,可以采用通用的中央处理器(Central Processing Unit,CPU)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器920,可以采用只读存储器(Read Only Memory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(Random Access Memory,RAM)等形式实现。存储器920可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器920中,并由处理器910来调用执行本申请实施例的数据压缩方法;
输入/输出接口930,用于实现信息输入及输出;
通信接口940,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线950,在设备的各个组件(例如处理器910、存储器920、输入/输出接口930和通信接口940)之间传输信息;
其中处理器910、存储器920、输入/输出接口930和通信接口940通过总线950实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序用于使计算机执行上述实施例中数据压缩方法。
本申请实施例提供的一种数据压缩方法、数据压缩装置、计算机设备及存储介质,首先,接收包括待压缩的数据页的数据压缩信号,该待压缩的数据页包括至少一条待压缩数据和待压缩数据的压缩标识。根据数据页构建训练数据集,该训练数据集包括多条待压缩数据。根据预设的字符长度对待压缩数据进行字符划分,得到多个候选字符串,根据每个候选字符串对待压缩数据进行哈希映射,得到映射结果和映射结果的映射频率。对全部映射频率进行数值比较,确定参考字符串,从而构建压缩模型。根据该压缩模型对待压缩数据进行数据压缩,得到数据压缩集,该数据压缩集包括多个字符类型子集,其中,每个字符类型子集用于存储待压缩数据经过数据压缩后得到的字符信息。若识别到压缩标识不是结束标识,重复执行根据预训练的压缩模型对待压缩数据进行数据压缩,得到数据压缩集;若识别到压缩标识是结束标识,通过对未压缩字符子集中的字符信息进行频率统计,得到第一频率统计结果,并根据第一频率统计结果构建第一熵编码器。通过对匹配字符子集中的字符信息进行频率统计,得到第二频率统计结果,并根据第二频率统计结果构建第二熵编码器,进而根据第一熵编码器和第二熵编码器得到目标熵编码器。之后,根据第一熵编码器对未压缩字符子集进行编码,得到第一编码数据流,根据第二熵编码器对匹配字符子集进行编码,得到第二编码数据流。获取目标熵编码器的编码器元数据和压缩模型的参考字符串,根据第一编码数据流和第二编码数据流得到目标压缩数据流,根据编码器元数据、参考字符串和目标压缩数据流得到压缩结果。本申请实施例在数据的压缩过程中,在未识别到结束标识之前,都不进行熵编码器的构建,只有在识别到结束标识,才根据得到的全部统计结果进行熵编码器的生成,能够保证编码效果最好且生成压缩率更高的熵编码器。同时,本申请实施例为每一个待压缩的数据页保持一份熵编码器的元数据,能够更好地提高对数据压缩的压缩率。此外,本申请实施例对一个待压缩的数据页内的所有待压缩数据,在压缩之后最后将压缩结果全部输出给调用端,减少了很多函数调用,从而减少了cpu负载的使用,能够更有效地提高设备的数据压缩的性能。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1至7中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参阅附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (9)
1.一种数据压缩方法,其特征在于,所述方法包括:
接收数据压缩信号,所述数据压缩信号包括待压缩的数据页,所述数据页包括至少一条待压缩数据和所述待压缩数据的压缩标识,所述压缩标识用于标记每一条所述待压缩数据的数据状态;
根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集,所述数据压缩集包括多个字符类型子集,所述字符类型子集用于存储所述待压缩数据经过数据压缩后得到的字符信息,所述压缩模型包括参考字符串;
根据所述压缩标识和所述字符类型子集构建目标熵编码器;
根据所述目标熵编码器对所述数据压缩集进行编码,得到压缩结果;
其中,所述根据所述压缩标识和所述字符类型子集构建目标熵编码器,包括:
若识别到所述压缩标识是结束标识,根据所述字符类型子集构建所述目标熵编码器,所述字符类型子集包括未压缩字符子集、匹配字符子集,所述未压缩字符子集用于表示与所述参考字符串未匹配的字符信息的集合,所述匹配字符子集用于表示与所述参考字符串匹配的字符信息的集合。
2.根据权利要求1所述的方法,其特征在于,在所述根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集之前,所述方法还包括:构建压缩模型,具体包括:
根据所述数据页构建训练数据集,所述训练数据集包括多条所述待压缩数据;
根据预设的字符长度对所述待压缩数据进行字符划分,得到多个候选字符串;
根据每个所述候选字符串对所述待压缩数据进行哈希映射,得到映射结果和所述映射结果的映射频率;
对全部所述映射频率进行数值比较,确定参考字符串;
根据所述参考字符串构建所述压缩模型。
3.根据权利要求1所述的方法,其特征在于,所述根据所述压缩标识和所述字符类型子集构建目标熵编码器,还包括:
若识别到所述压缩标识不是结束标识,重复执行所述根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集。
4.根据权利要求1所述的方法,其特征在于,所述字符类型子集包括未压缩字符子集、匹配字符子集,所述若识别到所述压缩标识是所述结束标识,根据所述字符类型子集构建目标熵编码器,包括:
若识别到所述压缩标识是所述结束标识,通过对所述未压缩字符子集中的字符信息进行频率统计,得到第一频率统计结果;
根据所述第一频率统计结果构建第一熵编码器;
通过对所述匹配字符子集中的字符信息进行频率统计,得到第二频率统计结果;
根据所述第二频率统计结果构建第二熵编码器;
根据所述第一熵编码器和所述第二熵编码器得到所述目标熵编码器。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标熵编码器对所述数据压缩集进行编码,得到压缩结果,包括:
根据所述第一熵编码器对所述未压缩字符子集进行编码,得到第一编码数据流;
根据所述第二熵编码器对所述匹配字符子集进行编码,得到第二编码数据流;
根据所述第一编码数据流和所述第二编码数据流得到压缩结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一编码数据流和所述第二编码数据流得到压缩结果,包括:
获取所述目标熵编码器的编码器元数据和所述压缩模型的参考字符串;
根据所述第一编码数据流和所述第二编码数据流得到目标压缩数据流;
根据所述编码器元数据、所述参考字符串和所述目标压缩数据流得到压缩结果。
7.一种数据压缩装置,其特征在于,所述装置包括:
压缩信号接收模块,用于接收数据压缩信号,所述数据压缩信号包括待压缩的数据页,所述待压缩的数据页包括至少一条待压缩数据和所述待压缩数据的压缩标识,所述压缩标识用于标记每一条所述待压缩数据的数据状态;
数据压缩模块,用于根据预训练的压缩模型对所述待压缩数据进行数据压缩,得到数据压缩集,所述数据压缩集包括多个字符类型子集,所述字符类型子集用于存储所述待压缩数据经过数据压缩后得到的字符信息,所述压缩模型包括参考字符串;
编码器构建模块,用于根据所述压缩标识和所述字符类型子集构建目标熵编码器,其中,若识别到所述压缩标识是结束标识,根据所述字符类型子集构建所述目标熵编码器,所述字符类型子集包括未压缩字符子集、匹配字符子集,所述未压缩字符子集用于表示与所述参考字符串未匹配的字符信息的集合,所述匹配字符子集用于表示与所述参考字符串匹配的字符信息的集合;
编码模块,用于根据所述目标熵编码器对所述数据压缩集进行编码,得到压缩结果。
8.一种计算机设备,其特征在于,包括:
至少一个存储器;
至少一个处理器;
至少一个计算机程序;
所述至少一个计算机程序被存储在所述至少一个存储器中,所述至少一个处理器执行所述至少一个计算机程序以实现:
如权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于使计算机执行:
如权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211119160.9A CN115208414B (zh) | 2022-09-15 | 2022-09-15 | 数据压缩方法、数据压缩装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211119160.9A CN115208414B (zh) | 2022-09-15 | 2022-09-15 | 数据压缩方法、数据压缩装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115208414A CN115208414A (zh) | 2022-10-18 |
CN115208414B true CN115208414B (zh) | 2023-01-03 |
Family
ID=83572262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211119160.9A Active CN115208414B (zh) | 2022-09-15 | 2022-09-15 | 数据压缩方法、数据压缩装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115208414B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115905168B (zh) * | 2022-11-15 | 2023-11-07 | 本原数据(北京)信息技术有限公司 | 基于数据库的自适应压缩方法和装置、设备、存储介质 |
CN115774699B (zh) * | 2023-01-30 | 2023-05-23 | 本原数据(北京)信息技术有限公司 | 数据库共享字典压缩方法、装置、电子设备及存储介质 |
CN117076388A (zh) * | 2023-10-12 | 2023-11-17 | 中科信工创新技术(北京)有限公司 | 一种文件处理的方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104168028A (zh) * | 2014-08-08 | 2014-11-26 | 中国人民解放军装甲兵工程学院 | 用于北斗车载系统的定位数据压缩方法和系统 |
CN106506007A (zh) * | 2015-09-08 | 2017-03-15 | 联发科技(新加坡)私人有限公司 | 一种无损数据压缩和解压缩装置及其方法 |
CN111727445A (zh) * | 2018-05-21 | 2020-09-29 | 谷歌有限责任公司 | 局部熵编码的数据压缩 |
CN114039607A (zh) * | 2021-11-09 | 2022-02-11 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多字符的有限熵编码方法、装置、设备及可读介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9923577B1 (en) * | 2016-09-04 | 2018-03-20 | ScaleFlux, Inc. | Hybrid software-hardware implementation of lossless data compression and decompression |
-
2022
- 2022-09-15 CN CN202211119160.9A patent/CN115208414B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104168028A (zh) * | 2014-08-08 | 2014-11-26 | 中国人民解放军装甲兵工程学院 | 用于北斗车载系统的定位数据压缩方法和系统 |
CN106506007A (zh) * | 2015-09-08 | 2017-03-15 | 联发科技(新加坡)私人有限公司 | 一种无损数据压缩和解压缩装置及其方法 |
CN111727445A (zh) * | 2018-05-21 | 2020-09-29 | 谷歌有限责任公司 | 局部熵编码的数据压缩 |
CN114039607A (zh) * | 2021-11-09 | 2022-02-11 | 山东云海国创云计算装备产业创新中心有限公司 | 一种多字符的有限熵编码方法、装置、设备及可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115208414A (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115208414B (zh) | 数据压缩方法、数据压缩装置、计算机设备及存储介质 | |
CN109151468B (zh) | 一种图像数据的编码、解码方法及装置 | |
US9735805B2 (en) | Encoder, decoder and method | |
CN108733317B (zh) | 数据存储方法和装置 | |
CN110445860B (zh) | 一种报文发送方法、装置、终端设备及存储介质 | |
CN108628898B (zh) | 数据入库的方法、装置和设备 | |
JP2007124561A (ja) | データ圧縮方法及び圧縮データ送信方法 | |
CN116506073B (zh) | 一种工业计算机平台数据快速传输方法及系统 | |
CN111629081A (zh) | 互联网协议ip地址数据处理方法、装置及电子设备 | |
CN114764557A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN113312325B (zh) | 轨迹数据传输方法、装置、设备及存储介质 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
CN111368697A (zh) | 一种信息识别方法和装置 | |
CN115408350A (zh) | 日志压缩、日志还原方法、装置、计算机设备和存储介质 | |
CN112995199B (zh) | 数据编解码方法、装置、传输系统、终端设备及存储介质 | |
CN110377822A (zh) | 用于网络表征学习的方法、装置及电子设备 | |
CN117118453A (zh) | 一种基于大数据的数据压缩存储方法 | |
CN112054805B (zh) | 一种模型数据压缩方法、系统及相关设备 | |
CN115905168A (zh) | 自适应压缩方法和压缩装置、计算机设备、存储介质 | |
CN115604365A (zh) | 数据编解码方法、装置、电子设备及可读存储介质 | |
CN114610792A (zh) | 数据处理方法、装置及系统、工业设备 | |
JP4456574B2 (ja) | 圧縮データ送信方法 | |
US20240080478A1 (en) | Point cloud encoding and decoding method and apparatus, computer, and storage medium | |
CN111836051A (zh) | 一种桌面图像编码、解码方法及相关装置 | |
CN116389772B (zh) | 一种基于北斗网的图像传输方法及系统 |
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 |