CN110958212B - 一种数据压缩、数据解压缩方法、装置及设备 - Google Patents

一种数据压缩、数据解压缩方法、装置及设备 Download PDF

Info

Publication number
CN110958212B
CN110958212B CN201811132738.8A CN201811132738A CN110958212B CN 110958212 B CN110958212 B CN 110958212B CN 201811132738 A CN201811132738 A CN 201811132738A CN 110958212 B CN110958212 B CN 110958212B
Authority
CN
China
Prior art keywords
data
compressed
segment
type
intermediate data
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
Application number
CN201811132738.8A
Other languages
English (en)
Other versions
CN110958212A (zh
Inventor
曹政
刘兴奎
高山渊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811132738.8A priority Critical patent/CN110958212B/zh
Publication of CN110958212A publication Critical patent/CN110958212A/zh
Application granted granted Critical
Publication of CN110958212B publication Critical patent/CN110958212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请提供一种数据压缩、数据解压缩方法、装置及设备,该方法包括:获取待压缩数据、所述待压缩数据对应的参考数据;利用所述待压缩数据和所述参考数据获得第一中间数据;若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。通过本申请的技术方案,可以对上下文信息进行压缩,使得网卡可以存储更多的上下文信息,使得网卡尽量从本网卡读取上下文信息,减少从服务器的内存中读取上下文信息。

Description

一种数据压缩、数据解压缩方法、装置及设备
技术领域
本申请涉及互联网技术领域,尤其是涉及一种数据压缩、数据解压缩方法、装置及设备。
背景技术
传统的TCP(Transmission Control Protocol,传输控制协议)/IP技术,在数据处理过程中,需要经过操作系统及其它软件层,占用大量服务器资源和内存总线带宽,数据在系统内存、处理器缓存和网络控制器缓存之间来回进行复制移动,给CPU(CentralProcessing Unit,中央处理器)和内存造成沉重负担,尤其是网络带宽、处理器速度与内存带宽的不匹配性,更加剧了网络延迟效应。
为此,提出RDMA(Remote Direct Memory Access,远程直接数据存取)技术,其是一种直接内存访问技术,可以将数据从一个服务器的内存直接传输到另一个服务器,无需双方操作系统的介入,不对操作系统造成任何影响。RDMA可以简单理解为:利用硬件和网络技术,服务器1的网卡可以直接读写服务器2的内存,最终达到高带宽、低延迟和低资源利用率的效果,应用程序不需要参与数据传输过程,只需要指定内存读写地址,开启传输并等待传输完成即可。
为了实现RDMA技术,需要在网卡存储队列的上下文信息,但由于队列数量很多,且网卡的存储空间有限,从而导致网卡无法存储所有队列的上下文信息。基于此,若网卡需要利用上下文信息进行处理时,则判断本网卡是否存储该上下文信息,如果是,则从本网卡直接读取该上下文信息,如果否,则需要从服务器的内存中读取该上下文信息,从而引入极高的延迟,导致性能抖动。
发明内容
本申请提供一种数据压缩方法,所述方法包括:
获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;
对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
本申请提供一种数据压缩方法,所述方法包括:
利用待压缩数据获得第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;
对所述第一中间数据进行压缩,得到已压缩数据;
其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
本申请提供一种数据解压缩方法,所述方法包括:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据和参考数据,获取解压缩数据。
本申请提供一种数据解压缩方法,所述方法包括:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据获取解压缩数据。
本申请提供一种数据压缩装置,所述装置包括:
获取模块,用于获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;
查询模块,用于若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;
压缩模块,用于对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
本申请提供一种数据解压缩装置,所述装置包括:
获取模块,用于获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
解压缩模块,用于对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
所述获取模块,还用于利用所述第一中间数据和参考数据获取解压缩数据。
本申请提供一种数据压缩设备,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;
对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
本申请提供一种数据解压缩设备,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据和参考数据,获取解压缩数据。
基于上述技术方案,本申请实施例中,可以对上下文信息进行压缩,在网卡存储空间有限的情况下,使得网卡可以存储更多的上下文信息,使得网卡尽量从本网卡读取上下文信息,减少从服务器的内存中读取上下文信息,避免高延迟、性能抖动等问题。而且,可以针对每个队列的上下文信息分别进行压缩,而不是对多个队列的上下文信息一起压缩,从而适合上下文信息的单独存储。针对具有大量重复信息的特征设计压缩方法,适合网卡实现,兼顾压缩效率。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的数据压缩方法的流程图;
图2是本申请一种实施方式中的数据解压缩方法的流程图;
图3A是本申请一种实施方式中的数据结构示意图;
图3B是本申请一种实施方式中的数据压缩方法的示意图;
图3C是本申请一种实施方式中的数据解压缩方法的示意图;
图4是本申请一种实施方式中的数据压缩装置的结构图;
图5是本申请另一种实施方式中的数据解压缩装置的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种数据压缩方法,参见图1所示,为本申请实施例中的数据压缩方法的流程示意图,该数据压缩方法可以包括:
步骤101,获取待压缩数据、该待压缩数据对应的参考数据。
其中,获取该待压缩数据对应的参考数据,可以包括但不限于:获取参考项表,该参考项表可以包括多个参考数据;然后,从该参考项表的多个参考数据中选择参考数据,并将选择的参考数据确定为该待压缩数据对应的参考数据。
步骤102,利用该待压缩数据和该参考数据获得第一中间数据。
具体的,可以将该待压缩数据拆分成多个数据片段,并将该参考数据拆分成多个参考片段;针对每个数据片段,可以利用该数据片段和该数据片段对应的参考片段,确定该数据片段对应的片段值,从而可以得到多个数据片段对应的多个片段值。然后,可以根据多个数据片段对应的多个片段值确定第二中间数据,并对第二中间数据中的多个片段值进行重新排序,得到第一中间数据。
其中,在将该待压缩数据拆分成多个数据片段,将该参考数据拆分成多个参考片段时,不同的数据片段的长度可以相同或者不同,不同的参考片段的长度可以相同或者不同,且数据片段的长度与参考片段的长度可以相同或者不同。
其中,利用该数据片段和该数据片段对应的参考片段,确定该数据片段对应的片段值,包括但不限于:对该数据片段和该参考片段进行特定运算,得到该数据片段对应的片段值;其中,特定运算可以包括差值运算或者异或运算。
其中,对第二中间数据中的多个片段值进行重新排序,得到第一中间数据,可以包括但不限于:从该第二中间数据中的多个片段值中,选择取值为特征数值的片段值;然后,将选择的片段值排序在前面,以得到第一中间数据。
步骤103,若第一中间数据包括第一类子数据,则从第一映射表中查询与该第一类子数据对应的特征序列、该特征序列对应的索引值。
具体的,针对第一中间数据中的第一类子数据,可以从第一映射表中查询与该第一类子数据匹配的特征序列,并从第一映射表中查询与该特征序列对应的索引值;其中,该第一映射表用于记录特征序列和索引值的对应关系。
步骤104,对该第一中间数据进行压缩,得到已压缩数据;其中,在该已压缩数据中,该第一类子数据被压缩成索引值。若第一中间数据包括第二类子数据,则统计第二类子数据的连续数量;在该已压缩数据中,该第二类子数据被压缩成所述连续数量。若第一中间数据包括第三类子数据,则根据第三类子数据确定裸数据;在该已压缩数据中,该第三类子数据被压缩成该裸数据。
综上所述,对该第一中间数据进行压缩,得到已压缩数据时,是将第一中间数据中的第一类子数据压缩成索引值;将第一中间数据中的第二类子数据压缩成所述连续数量;将第一中间数据中的第三类子数据压缩成裸数据。
其中,在已压缩数据中,裸数据的相邻位置(如前面位置)还可以包括特定标记,该特定标记为第一标识,该第一标识表示相邻位置的数据是裸数据。
在已压缩数据中,索引值的相邻位置(如前面位置)还可以包括特定标记,该特定标记可以为第二标识,该第二标识表示相邻位置的数据是索引值。
在上述实施例中,针对该参考项表中的参考数据,如该参考项表中的每个参考数据,可以是根据历史待压缩数据中的数据片段的出现频率确定的。
在上述实施例中,针对该第一映射表中的特征序列,如该第一映射表中的每个特征序列,可以是根据历史第一中间数据中的片段值的出现频率确定的。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
在上述实施例中,待压缩数据可以包括但不限于:RDMA上下文信息;针对这种类型的待压缩数据,上述方式的执行主体可以是网卡,且在对该第一中间数据进行压缩,得到已压缩数据之后,还可以将已压缩数据存储到网卡中。
具体的,若该网卡中的数据存储量已经达到预设阈值,则可以删除未压缩的数据,或者,根据数据访问情况删除数据,并将已压缩数据存储到网卡。
基于上述技术方案,本申请实施例中,可以对上下文信息进行压缩,在网卡存储空间有限的情况下,使得网卡可以存储更多的上下文信息,使得网卡尽量从本网卡读取上下文信息,减少从服务器的内存中读取上下文信息,避免高延迟、性能抖动等问题。而且,可以针对每个队列的上下文信息分别进行压缩,而不是对多个队列的上下文信息一起压缩,从而适合上下文信息的单独存储。针对具有大量重复信息的特征设计压缩方法,适合网卡实现,兼顾压缩效率。
基于与上述方法同样的申请构思,本申请实施例中还提出一种数据压缩方法,该方法可以包括:利用待压缩数据获得第一中间数据,具体获取过程参见步骤101和步骤102,在此不再重复赘述;若所述第一中间数据包括第一类子数据,则可以从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
本申请实施例中提出一种数据解压缩方法,参见图2所示,为本申请实施例中的数据解压缩方法的流程示意图,该数据解压缩方法可以包括:
步骤201,获取已压缩数据,其中,该已压缩数据可以包括索引值。其中,该已压缩数据是采用步骤101-步骤104的方式压缩的数据,对此不再赘述。
步骤202,获取与该索引值对应的特征序列。
具体的,可以通过该索引值查询第一映射表,得到与该索引值对应的特征序列;其中,该第一映射表可以用于记录特征序列与索引值的对应关系;或者,可以通过该索引值查询第二映射表,得到与该索引值对应的特征序列;其中,该第二映射表可以用于记录索引值与特征序列的对应关系。
步骤203,对该已压缩数据进行解压缩,得到第一中间数据。其中,该第一中间数据可以包括与该特征序列对应的第一类子数据。
此外,该已压缩数据还可以包括第二类子数据的连续数量,且该第一中间数据可以包括与该连续数量匹配的第二类子数据;该已压缩数据还可以包括裸数据,且该第一中间数据还包括与该裸数据对应的第三类子数据。
综上所述,对该已压缩数据进行解压缩,得到第一中间数据时,是将已压缩数据中的索引值解压缩成第一类子数据;将已压缩数据中的连续数量解压缩成第二类子数据;将已压缩数据中的裸数据解压缩成第三类子数据。
在一个例子中,在已压缩数据中,裸数据的相邻位置(如前面位置)还可以包括特定标记,该特定标记可以为第一标识,该第一标识表示相邻位置的数据是裸数据;基于此,在对已压缩数据进行解压缩时,则可以从该已压缩数据中读取第一标识,并根据该第一标识确定该已压缩数据中的裸数据。
在一个例子中,在已压缩数据中,索引值的相邻位置(如前面位置)还可以包括特定标记,该特定标记可以为第二标识,该第二标识表示相邻位置的数据是索引值;基于此,在对已压缩数据进行解压缩时,则可以从该已压缩数据中读取第二标识,并根据该第二标识确定该已压缩数据中的索引值。
步骤204,利用该第一中间数据和参考数据,获取解压缩数据。
具体的,可以将该第一中间数据拆分成多个片段值,并将该参考数据拆分成多个参考片段;然后,对该第一中间数据中的多个片段值进行重新排序,得到第二中间数据;针对该第二中间数据中的片段值(如每个片段值),可以利用该片段值和该片段值对应的参考片段,确定与该片段值对应的数据片段;然后,根据该第二中间数据中的多个片段值对应的数据片段,确定解压缩数据。
其中,对该第一中间数据中的多个片段值进行重新排序,得到第二中间数据,可以包括但不限于:确定第一中间数据与第二中间数据之间的排序策略;该排序策略可以是压缩过程中,基于第二中间数据中的多个片段值的排序结果确定的;然后,可以根据该排序策略,对该第一中间数据中的多个片段值进行重新排序,得到第二中间数据。当然,上述方式只是示例,对此不做限制。
其中,利用该片段值和该片段值对应的参考片段,确定与该片段值对应的数据片段,可以包括但不限于:对该片段值和该参考片段进行特定运算,得到与该片段值对应的数据片段;其中,特定运算可以包括求和运算或者异或运算。
在上述实施例中,在利用该第一中间数据和参考数据,获取解压缩数据之前,还可以包括以下步骤:获取参考项表,其中,该参考项表可以包括多个参考数据;然后,可以从该参考项表的多个参考数据中选择参考数据。
在上述实施例中,在将第一中间数据拆分成多个片段值,将参考数据拆分成多个参考片段时,不同的片段值的长度可以相同或不同,不同的参考片段的长度可以相同或不同,且片段值的长度与参考片段的长度可以相同或不同。
在上述实施例中,针对该参考项表中的参考数据,如该参考项表中的每个参考数据,可以是根据历史待压缩数据中的数据片段的出现频率确定的。
在上述实施例中,针对该第一映射表或者第二映射表中的特征序列,如每个特征序列,可以是根据历史第一中间数据中的片段值的出现频率确定的。
在上述实施例中,解压缩数据可以包括但不限于RDMA上下文信息;基于此,获取已压缩数据,可以包括但不限于:从网卡中获取已压缩数据。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,可以对上下文信息进行解压缩,可以针对每个队列的上下文信息分别解压缩,而不是对多个队列的上下文信息一起解压缩,从而解压缩出需要的上下文信息,适合上下文信息的单独处理。针对具有大量重复信息的特征设计解压缩方法,适合网卡实现,兼顾解压缩效率。
基于与上述方法同样的申请构思,本申请实施例中还提出一种数据解压缩方法,该方法可以包括:获取已压缩数据,所述已压缩数据包括索引值;获取与所述索引值对应的特征序列;对所述已压缩数据进行解压缩,得到第一中间数据;所述第一中间数据包括与所述特征序列对应的第一类子数据;利用所述第一中间数据获取解压缩数据,具体获取过程参见步骤204,在此不再赘述。
以下结合具体应用场景,对上述数据压缩、数据解压缩方法进行说明。本应用场景中,以待压缩数据是上下文信息为例,当然,待压缩数据还可以是其它类型的数据,其处理流程与上下文信息的处理流程类似,后续不再赘述。
在一个例子中,为了实现RDMA技术,可以在网卡存储RDMA上下文信息(后续称为上下文信息),该上下文信息可以包括但不限于:页面大小配置信息、访问权限信息、配置选项信息、队列标识信息、内存区域信息(如地址和长度等),当然,上述信息只是上下文信息的几个示例,对此不做限制。
由于一次内存访问往往是一个缓存行大小,因此,上下文信息的长度可以按照64字节设置,这虽然最大程度的利用了访存总线特征,但也引入了大量保留域,也就是说,页面大小配置信息、访问权限信息、配置选项信息、队列标识信息、内存区域信息等内容,只占用64字节的部分区域,而其它区域均为保留域,这些保留域的取值可以为0,因此,在不同的上下文信息中,保留域的内容可以是相同的。此外,针对页面大小配置信息、访问权限信息、配置选项信息等内容,在不同上下文信息中,这些内容也可能是相同的。综上所述,不同上下文信息可能存在大量重复内容,这也是上下文信息的主要特点之一。
针对上下文信息的上述特点,在本实施例中,提出一种面向上下文信息的数据压缩方法和数据解压缩方法,并可以由网卡实现数据压缩方法和数据解压缩方法。当然,上下文信息只是一个示例,对此不做限制,所有具有类似特点的数据,均可以采用本实施例的数据压缩方法进行压缩,采用本实施例的数据解压缩方法进行解压缩。而且,即使是不具有类似特点的数据,也可以采用本实施例的数据压缩方法进行压缩,采用本实施例的数据解压缩方法进行解压缩。
在实际应用中,为了对上下文信息进行压缩,降低上下文信息占用的存储空间,可以采用霍夫曼索引、基于字典的LZ77等压缩算法。但是,这些压缩算法往往针对文本、图像和视频,对很短的上下文信息(通常只有64字节),无法达到最优的压缩比,若将大量上下文信息看做整体进行压缩,虽然数据长度有所增加,但不能灵活的对单个上下文信息进行解压,因此,霍夫曼索引、基于字典的LZ77等算法,无法适用于上下文信息的压缩,为此,本实施例中提出一种新的数据压缩方法和数据解压缩方法,用于上下文信息的压缩和解压缩。
以下结合图3A所示的数据结构示意图,对本实施例中的数据压缩方法和数据解压缩方法进行说明。在图3A中,示出了压缩前的通信上下文表(包括一个或者多个上下文信息)、参考项表(包括一个或者多个参考数据)、第一映射表、第二映射表、第二中间数据、第一中间数据、压缩后的已压缩数据。
通信上下文表来自于主机内存,可以包括一个或多个通信上下文表项,每个通信上下文表项存储一个上下文信息。这些上下文信息需要存储到网卡,且在将上下文信息存储到网卡之前,网卡需要对这些上下文信息进行压缩,并将压缩后的上下文信息存储到网卡。在对这些上下文信息进行压缩时,是针对每个上下文信息单独压缩,而不是对通信上下文表的多个上下文信息一起压缩。
参考项表可以包括一个或者多个参考数据,针对该参考项表中的每个参考数据,可以是根据历史数据(如过去一段时间的上下文信息)中的数据片段的出现频率确定的,如参考数据可以包括若干个出现频率较高的数据片段。其中,参考项表可以是上次应用提供的,如上层应用根据历史数据获得一个或者多个参考数据,将这些参考数据添加到参考项表,并将该参考项表提供给网卡。
第一映射表可以包括一个或者多个特征序列,针对第一映射表中的每个特征序列,可以是根据历史第一中间数据(如过去一段时间的第一中间数据)中的片段值的出现频率确定的,如特征序列包括出现频率较高的片段值。第一映射表可以是上次应用提供的,如上层应用根据历史第一中间数据获得一个或者多个特征序列,将这些特征序列添加到第一映射表,将第一映射表提供给网卡。
第一映射表可以记录特征序列、长度与索引值的对应关系;长度表示特征序列的长度,索引值表示特征序列是第二映射表中的第几个特征序列,如特征序列的索引值是3时,表示特征序列是第二映射表中的第3个特征序列。
第二映射表可以包括一个或者多个特征序列,针对第二映射表中的每个特征序列,可以是根据历史第一中间数据中的片段值的出现频率确定的。第二映射表可以是上次应用提供的,如上层应用根据历史第一中间数据获得一个或者多个特征序列,将这些特征序列添加到第二映射表,将第二映射表提供给网卡。
第二映射表可以记录索引值、长度与特征序列的对应关系;索引值从小到大依次排序,如从0到N;长度表示特征序列的长度;特征序列表示与该索引值对应的特征序列。其中,第一映射表的内容与第二映射表的内容类似,不同之处在于:第一映射表中,是以特征序列为索引,查询与该特征序列对应的索引值,因此,又可以将第一映射表称为字典;第二映射表中,是以索引值为索引,查询与该索引值对应的特征序列,因此,又可以将第二映射表称为索引表。
第二中间数据是对上下文信息和参考数据进行特定运算后得到的,如上下文信息和参考数据的差值运算结果,或上下文信息和参考数据的异或运算结果。
第一中间数据是对该第二中间数据中的多个片段值进行重新排序后得到的,而对片段值进行重新排序的目的是:尽量让取值为0的片段值位于前部。
已压缩数据就是经过压缩的上下文信息,是存储在网卡的数据,这个已压缩数据是对第一中间数据进行压缩的结果。其中,已压缩数据包含一个“零的个数”域(用于记录第一中间数据前部连续为0的片段的个数),若干个“是否索引”与“索引值/裸数据”,“是否索引”与“索引值/裸数据”成对出现,“是否索引”取值为0时,“索引值/裸数据”的取值为裸数据(未压缩数据),“是否索引”取值为1时,“索引值/裸数据”的取值为索引值(即第二映射表中特征序列所在的位置)。
在上述应用场景下,参见图3B所示,为数据压缩方法的一个示意图。
步骤311,在初始训练阶段,获得参考项表、第一映射表和第二映射表。其中,上层应用获得参考项表、第一映射表和第二映射表,将参考项表、第一映射表和第二映射表发送给网卡,网卡存储参考项表、第一映射表和第二映射表。
其中,可以对历史上下文信息进行分析,得到若干个出现频率较高的数据片段,该数据片段是对历史上下文信息进行拆分后得到的,具体拆分过程参见后续实施例。然后,基于这些数据片段确定一个或者多个参考数据,并将这些参考数据添加到参考项表。例如,针对5个上下文信息,每个上下文信息对应8个数据片段,针对所有上下文信息的第一个数据片段,若数据片段AA的出现频率较高,则将数据片段AA确定为参考项表的第1个参考片段;针对所有上下文信息的第二个数据片段,若数据片段BB的出现频率较高,则将数据片段BB确定为参考项表的第2个参考片段;以此类推,一共可以得到8个参考片段,将这些参考片段组合在一起,就可以得到参考数据,如AABBCCDDEEFFGGHH。
当然,上述只是基于数据片段确定参考数据的示例,对此不做限制。
其中,可以对历史第一中间数据进行分析,得到若干个出现频率较高的片段值,该片段值是对第一中间数据进行拆分后得到的,具体拆分过程参见后续实施例。然后,基于这些片段值确定一个或者多个特征序列,并将这些特征序列添加到第一映射表。例如,针对10个第一中间数据的所有片段值的组合(如一个片段值、相邻两个片段值、相邻三个片段值等等),AABB出现10次,BBCC出现8次,AABBCC出现6次,EEFF出现8次,DDEE出现1次,由于AABB、BBCC、AABBCC、EEFF的出现频率较高,因此,AABB、BBCC、AABBCC、EEFF均可以为特征序列。当然,上述只是确定特征序列的示例,对此不做限制。
然后,可以为每个特征序列设置一个索引值,该索引值用于表示该特征序列是第二映射表中的第几个特征序列,对于特征序列的索引值不做限制,只要不同的特征序列的索引值不同即可。而且,可以将特征序列、该特征序列的长度、该特征序列的索引值的对应关系添加到第一映射表,参见图3A所示。
其中,在第一映射表确定后,就可以利用第一映射表确定第二映射表,第一映射表的内容与第二映射表的内容类似,不同之处在于:第一映射表用于记录特征序列、长度与索引值的对应关系,而第二映射表用于记录索引值、长度与特征序列的对应关系。当然,在实际应用中,也可以先确定第二映射表,具体方式与第一映射表的确定方式类似,然后利用第二映射表确定第一映射表。
在获得参考项表、第一映射表和第二映射表后,可以利用参考项表、第一映射表和第二映射表执行后续的压缩方法和解压缩方法。而且,在初始训练阶段,获得参考项表、第一映射表和第二映射表后,在压缩/解压缩过程中,还可以对参考项表、第一映射表和第二映射表进行更新,具体过程不再赘述。
步骤312,获取通信上下文表,该通信上下文表包括一个或多个上下文信息。
参见图3A所示,该通信上下文表可以包括3个上下文信息,上下文信息1可以为05000003FFFFFE23,上下文信息2可以为07000003FFFFFE55,上下文信息3可以为05000002FFFFFF56。当然,上述是以3个上下文信息为例,实际应用中,通信上下文表还可以包括其它数量的上下文信息,对此不做限制。
步骤313,获取与该上下文信息对应的参考数据。具体的,可以从上述参考项表中的多个参考数据中选择一个参考数据(例如,选择该参考项表中的第一个参考数据),而选择的该参考数据就是与该上下文信息对应的参考数据。
例如,参见图3A所示,该参考数据可以为05000003FFFFFE00。
步骤314,将上下文信息拆分成多个数据片段,并将参考数据拆分成多个参考片段;其中,不同的数据片段的长度可以相同或不同,不同的参考片段的长度可以相同或不同,且数据片段的长度与参考片段的长度可以相同或不同。
参见图3A所示,为了方便描述,假设上下文信息和参考数据均采用16进制,且上下文信息和参考数据的长度均是4字节。当然,上下文信息和参考数据也可以采用10进制、8进制、2进制等,对此不做限制。而且,上下文信息和参考数据的长度还可以是其它字节长度,如64字节等,对此不做限制。
在此基础上,可以将上下文信息和参考数据划分为8个字段,分别称为字段A、字段B、字段C、字段D、字段E、字段F、字段G和字段H,而且,可以按照4比特的长度,将上下文信息拆分成等长的8个数据片段(为了区分方便,将拆分后的片段称为数据片段),并按照4比特的长度,将参考数据拆分成等长的8个参考片段(为了区分方便,将拆分后的片段称为参考片段)。
例如,参见图3A所示,可以将上下文信息1拆分成与字段A对应的数据片段05、与字段B对应的数据片段00、与字段C对应的数据片段00、与字段D对应的数据片段03、与字段E对应的数据片段FF、与字段F对应的数据片段FF、与字段G对应的数据片段FE、与字段H对应的数据片段23。针对上下文信息2和上下文信息3的拆分过程,与上下文信息1类似,在此不再赘述。
进一步的,参见图3A所示,还可以将参考数据拆分成与字段A对应的参考片段05、与字段B对应的参考片段00、与字段C对应的参考片段00、与字段D对应的参考片段03、与字段E对应的参考片段FF、与字段F对应的参考片段FF、与字段G对应的参考片段FE、与字段H对应的参考片段00。
步骤315,针对每个数据片段,利用该数据片段和该数据片段对应的参考片段,确定该数据片段对应的片段值;具体的,可以对该数据片段和该参考片段进行特定运算,得到该数据片段对应的片段值;其中,该特定运算可以包括差值运算或者异或运算,为了方便描述,后续以差值运算为例进行说明。
例如,针对上下文信息1,针对字段A对应的数据片段05和参考片段05,可以对数据片段05和参考片段05进行差值运算,得到字段A对应的片段值00;同理,可以得到字段B对应的片段值00、字段C对应的片段值00、字段D对应的片段值00、字段E对应的片段值00、字段F对应的片段值00、字段G对应的片段值00、字段H对应的片段值23,而这些片段值的组合,就是上下文信息1对应的第二中间数据,如第二中间数据可以为0000000000000023。
同理,还可以得到上下文信息2对应的第二中间数据0200000000000055和上下文信息3对应的第二中间数据0000000100000156,对此不再赘述。
步骤316,对第二中间数据中的多个片段值进行重新排序,得到第一中间数据。具体的,可以从该第二中间数据中的多个片段值中,选择取值为特征数值(如00)的片段值;然后,将选择的片段值排序在前面,得到第一中间数据。
参见图3A所示,针对所有上下文信息对应的第二中间数据,字段A对应2个00,字段B对应3个00,字段C对应3个00,字段D对应2个00,字段E对应3个00,字段F对应3个00,字段G对应2个00,字段H没有对应00。
在此基础上,由于字段B、字段C、字段E和字段F均对应3个00,即对应的00数量最多,因此,可以将字段B、字段C、字段E和字段F排序在前面。由于字段A、字段D和字段G均对应2个00,即对应的00数量第二多,因此,在字段F后面排序,由于字段H没有对应00,因此,排序在最后面。
经过上述重新排序的处理,就可以得到与该上下文信息1对应的第一中间数据0000000000000023,同理,可以得到与上下文信息2对应的第一中间数据0000000002000055,与上下文信息3对应的第一中间数据0000000000010156。
然后,还可以基于第二中间数据中的多个片段值的排序结果,确定第一中间数据与第二中间数据之间的排序策略。例如,该排序策略的一个示例还可以包括:将字段A对应的片段值排序到第5个位置,将字段B对应的片段值排序到第1个位置,将字段C对应的片段值排序到第2个位置,将字段D对应的片段值排序到第6个位置,将字段E对应的片段值排序到第3个位置,将字段F对应的片段值排序到第4个位置,将字段G对应的片段值排序到第7个位置,将字段H对应的片段值排序到第8个位置。当然,上述只是排序策略的一个示例,对此排序策略不做限制,只要能够获知各个字段的排序关系即可。
步骤317,对第一中间数据进行压缩,得到已压缩数据。其中,可以针对每个第一中间数据分别进行压缩,得到与该第一中间数据对应的已压缩数据。
具体的,针对该第一中间数据,可以先统计前面出现第二类子数据(如00)的连续数量,例如,参见图3A所示,第一中间数据0000000000000023前面出现00的连续数量为7,第一中间数据0000000002000055前面出现00的连续数量为4,第一中间数据0000000000010156前面出现00的连续数量为5。
针对第一中间数据的剩余数据,判断第一映射表中是否存在与数据对应的特征序列。如果是,则将该数据确定为第一类子数据,并从第一映射表中查询与该第一类子数据对应的特征序列、该特征序列对应的索引值。如果否,则将该数据确定为第三类子数据,并可以将该第三类子数据确定为裸数据。
参见图3A所示,第一中间数据0000000000000023的剩余数据为23,由于第一映射表中不存在与数据23对应的特征序列,因此,数据23是第三类子数据,可以将数据23确定为裸数据。第一中间数据0000000002000055的剩余数据为02000055,由于第一映射表中不存在与数据02对应的特征序列,因此,数据02是第三类子数据,可以将数据02确定为裸数据;由于第一映射表中存在与数据0000对应的特征序列,因此,数据0000是第一类子数据,从第一映射表中查询与该第一类子数据对应的特征序列0000、该特征序列对应的索引值1;由于第一映射表中不存在与数据55对应的特征序列,因此,数据55是第三类子数据,可以将数据55确定为裸数据。第一中间数据0000000000010156的剩余数据010156,由于第一映射表中存在与数据0101对应的特征序列,因此,数据0101是第一类子数据,从第一映射表中查询与该第一类子数据对应的特征序列0101、该特征序列对应的索引值2;由于第一映射表中不存在与数据56对应的特征序列,因此,数据56是第三类子数据,可以将数据56确定为裸数据。
进一步的,在对第一中间数据进行压缩时,可以将第一中间数据中的第二类子数据压缩成所述连续数量,将第一中间数据中的第一类子数据压缩成索引值,将第一中间数据中的第三类子数据压缩成裸数据。而且,在裸数据的前面位置还可以包括第一标识(如0),表示第一标识后面的数据是裸数据;在索引值的前面位置还可以包括第二标识(如1),表示第二标识后面的数据是索引值。
在对第一中间数据0000000000000023进行压缩后,则得到已压缩数据7023;在对第一中间数据0000000002000055进行压缩后,得到已压缩数据400211055;在对第一中间数据0000000000010156进行压缩后,得到已压缩数据512056。
显然,从上述过程可以看出,当上下文信息的重复内容较多时,由于参考数据是出现频率较高的数据,可以理解为参考数据是出现频率较高的上下文信息,这样,对当前的上下文信息与参考数据进行差值运算,得到第二中间数据,并基于第二中间数据得到第一中间数据后,第一中间数据中0的数量很多,而这些0可以压缩成连续数量,从而大大减少数据量。而且,在得到第一中间数据后,第一中间数据的部分数据(如上述0000、0101等)还可以命中第一映射表的特征序列,并将这部分数据压缩成一个索引值,从而进一步减少了数据量。
上述流程可以由网卡实现,网卡在得到已压缩数据后,可以将已压缩数据存储到本地缓冲区。具体的,如果本地缓冲区的数据存储量未达到预设阈值(可以根据经验配置),则将已压缩数据存储到本地缓冲区,或不采用上述流程,直接将未压缩的上下文信息存储到本地缓冲区。如果本地缓冲区的数据存储量已经达到预设阈值,则可以删除未压缩的数据,或者,根据数据访问情况删除数据(如将访问最少的上下文信息删除),并将已压缩数据存储到本地缓冲区。
经过上述处理,就可以实现上下文信息的压缩,而针对压缩算法的逆运算,就可以是上下文信息的解压缩过程,以下对解压缩的实现过程进行说明。
在上述应用场景下,参见图3C所示,为数据解压缩方法的一个示意图。
步骤321,在接收到查询请求时,获取与该查询请求对应的已压缩数据。
具体的,网卡在存储已压缩数据时,可以存储已压缩数据与队列标识的对应关系,因此,在接收到查询请求时,可以从该查询请求中获取队列标识,然后,获取与该队列标识对应的已压缩数据,即该查询请求对应的已压缩数据。
步骤322,从该已压缩数据中获取到连续数量、索引值和裸数据。
参见上述实施例,在已压缩数据中,第一位是第二类子数据(如00)的连续数量,因此将已压缩数据的第一位确定为连续数量。由于每个索引值的前面位置是第二标识(如1),因此,从已压缩数据读取到第二标识后,将第二标识后面的数据确定为索引值。由于每个裸数据的前面位置是第一标识(如0),因此,从已压缩数据读取到第一标识后,将第一标识后面的数据确定为裸数据。
参见图3A所示,以已压缩数据400211055为例进行说明,在该已压缩数据400211055中,第一个数据4表示第二类子数据(如00)的连续数量,第二个数据0表示后面的数据是裸数据,由于裸数据是一个字节的数据,而裸数据是16进制的数据,因此,第三个数据是02,也就是说,第三个数据02是裸数据。
第四个数据1表示后面的数据是索引值,由于索引值占用4个比特即可,而不是一个字节的数据,因此,第五个数据是1(而不是10),也就是说,第五个数据1是索引值。第六个数据0表示后面的数据是裸数据,由于裸数据是一个字节的数据,而裸数据是16进制的数据,因此,第七个数据55是裸数据。
步骤323,根据连续数量、索引值和裸数据,对已压缩数据进行解压缩。
具体的,可以将该连续数量解压缩成第二类子数据,并将该索引值解压缩成第一类子数据,并将该裸数据解压缩成第三类子数据。例如,该已压缩数据400211055可以依次包括如下内容:连续数量4、裸数据02、索引值1、裸数据55,因此,可以将连续数量4解压缩成4个00,即00000000,可以将裸数据02解压缩成02,可以将索引值1解压缩成0000,可以将裸数据55解压缩成55。
其中,在将索引值1解压缩成0000时,可以通过索引值1查询第二映射表,得到与该索引值1对应的特征序列0000,而该特征序列0000就是第一类子数据。
经过上述处理,可以将已压缩数据400211055解压缩成0000000002000055,然后,可以将解压缩后的数据0000000002000055确定为第一中间数据。
步骤324,将第一中间数据拆分成多个片段值,具体拆分方式与步骤314的拆分方式相同,例如,按照4比特的长度,将第一中间数据拆分成8个片段值。
例如,可以将第一中间数据0000000002000055拆分成片段值00、片段值00、片段值00、片段值00、片段值02、片段值00、片段值00、片段值55。
步骤325,对该第一中间数据中的多个片段值进行重新排序,得到第二中间数据。具体的,可以根据排序策略(参见步骤316中的排序策略),对该第一中间数据中的多个片段值进行重新排序,从而得到第二中间数据。
例如,在排序策略中,由于将字段A对应的片段值排序到第5个位置,因此,第一中间数据的第5个片段值,重新排序到字段A的位置;由于将字段B对应的片段值排序到第1个位置,因此,第一中间数据的第1个片段值,重新排序到字段B的位置;以此类推,由于将字段H对应的片段值排序到第8个位置,因此,第一中间数据的第8个片段值,重新排序到字段H的位置。经过上述处理,就可以得到第二中间数据,如第二中间数据为0200000000000055。
步骤326,针对该第二中间数据中的每个片段值,利用该片段值和该片段值对应的参考片段,确定与该片段值对应的数据片段。具体的,可以对该片段值和该参考片段进行特定运算,得到与该片段值对应的数据片段;其中,该特定运算可以包括但不限于求和运算或者异或运算。步骤326中的特定运算,是步骤315的特定运算的逆运算,为了方便描述,后续以求和运算为例进行说明。
例如,可以先获取参考数据,该参考数据与压缩过程使用的参考数据相同,并将参考数据拆分成多个参考片段,参见步骤314,将参考数据拆分成与字段A对应的参考片段05、与字段B对应的参考片段00、与字段C对应的参考片段00、与字段D对应的参考片段03、与字段E对应的参考片段FF、与字段F对应的参考片段FF、与字段G对应的参考片段FE、与字段H对应的参考片段00。
进一步的,针对字段A对应的片段值02和参考片段05,可以对片段值02和参考片段05进行求和运算,得到数据片段07,同理,可以得到字段B的数据片段00、字段C的数据片段00、字段D的数据片段03、字段E的数据片段FF、字段F的数据片段FF、字段G的数据片段FE、字段H的数据片段55。
步骤327,将所有数据片段组合成上下文信息,这个上下文信息也就是最终的解压缩数据。例如,将所用数据片段组合成上下文信息07000003FFFFFE55。
在上述实施例中,上述流程可以由网卡实现,网卡从本地缓冲区中读取到已压缩数据后,可以采用上述流程进行处理,得到最终的上下文信息。若网卡无法从本地缓冲区中读取到已压缩数据,还可以从主机缓存中读取上下文信息。
基于与上述方法同样的构思,本实施例中还提出一种用于实现压缩和解压缩的装置,其中,该装置可以包括但不限于请求处理模块、查询解压模块、缓冲区模块、索引表模块、管理器模块、压缩模块、结果返回模块和字典模块。
请求处理模块的功能在于:将来自网卡其它模块的查询请求发送给查询解压模块;若查询解压模块返回上下文信息,则将该上下文信息返回给所述网卡的其它模块;若查询解压模块返回查询失败,则将查询请求发送给CPU,以使CPU从内存中读取与该查询请求对应的上下文信息;接收来自结果返回模块的从内存中读取的上下文信息,并将该上下文信息返回给所述网卡的其它模块。
查询解压模块的功能在于:存储参考项表,从缓存区模块读取压缩后的上下文信息,从索引表模块获得特征序列,采用上述解压缩方法实现数据解压缩,得到解压缩后的上下文信息,将该上下文信息返回给请求处理模块;若无法从缓存区模块读取压缩后的上下文信息,则向请求处理模块返回查询失败。
缓冲区模块的功能在于:存放压缩后的上下文信息,可以按照哈希表等数据结构来存储压缩后的上下文信息;响应管理器模块的数据写入;响应查询解压模块的查询请求,即可以将压缩后的上下文信息提供给查询解压模块。
索引表模块的功能在于:存储索引表(即上述第二映射表);基于查询解压模块输入的索引值,根据该索引值查询特征序列,该特征序列的长度。
管理器模块的功能在于:可以获取索引表,并将索引表写入索引表模块,供查询解压模块查找;可以获取参考项表,并将参考项表写入查询解压模块;可以获取字典(即上述第一映射表),并将字典写入字典模块。对于索引表、参考项表、字典的获取方式,可以参见上述实施例,在此不再重复赘述。
压缩模块的功能在于:接收主机发送的上下文信息,并采用上述压缩方法对该上下文信息进行压缩,并将压缩后的上下文信息存储到缓冲区模块。
字典模块的功能在于:存储管理器模块写入的字典,供压缩模块读取。
结果返回模块的功能在于:将从主机的内存读取的上下文信息分别发送给请求处理模块和管理器模块,由请求处理模块和管理器模块进行处理。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据压缩装置,如图4所示,为所述数据压缩装置的结构图,所述装置可以包括:
获取模块41,用于获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;
查询模块42,用于若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;
压缩模块43,用于对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
所述压缩模块43,还用于:若所述第一中间数据包括第二类子数据,统计所述第二类子数据的连续数量;在所述已压缩数据中,所述第二类子数据被压缩成所述连续数量;若所述第一中间数据包括第三类子数据,根据所述第三类子数据确定裸数据;在已压缩数据中,所述第三类子数据被压缩成所述裸数据。
所述获取模块41利用所述待压缩数据和所述参考数据获得第一中间数据时具体用于:将待压缩数据拆分成多个数据片段,将参考数据拆分成多个参考片段;利用数据片段和所述数据片段对应的参考片段,确定所述数据片段对应的片段值,并根据所述多个数据片段对应的多个片段值确定第二中间数据;对所述第二中间数据中的多个片段值进行重新排序,得到第一中间数据。
在一个例子中,所述数据压缩装置还包括(在图中未示出):
解压缩模块,用于获取所述已压缩数据,其中,所述已压缩数据包括索引值;获取与所述索引值对应的特征序列;对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;利用所述第一中间数据和所述参考数据,获取解压缩数据。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据压缩设备,包括:处理器和机器可读存储介质;其中,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;
对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;
对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据解压缩装置,如图5所示,为所述数据解压缩装置的结构图,所述装置可以包括:
获取模块51,用于获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
解压缩模块52,用于对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
所述获取模块51,还用于利用第一中间数据和参考数据获取解压缩数据。
所述已压缩数据还包括第二类子数据的连续数量;所述解压缩模块52在对所述已压缩数据进行解压缩,得到第一中间数据时,所述第一中间数据还包括与所述连续数量匹配的第二类子数据;所述已压缩数据还包括裸数据;所述解压缩模块52在对所述已压缩数据进行解压缩,得到第一中间数据时,所述第一中间数据还包括与所述裸数据对应的第三类子数据。
所述获取模块51利用所述第一中间数据和参考数据获取解压缩数据时具体用于:将第一中间数据拆分成多个片段值,将参考数据拆分成多个参考片段;
对所述第一中间数据中的多个片段值进行重新排序,得到第二中间数据;
针对所述第二中间数据中的片段值,利用所述片段值和所述片段值对应的参考片段,确定与所述片段值对应的数据片段;
根据所述第二中间数据中的多个片段值对应的数据片段,确定解压缩数据。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据解压缩设备,包括:处理器和机器可读存储介质;其中,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据和参考数据,获取解压缩数据。
本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据和参考数据,获取解压缩数据。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (17)

1.一种数据压缩方法,其特征在于,所述方法包括:
获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;其中,所述利用所述待压缩数据和所述参考数据获得第一中间数据,包括:将待压缩数据拆分成多个数据片段,将参考数据拆分成多个参考片段;利用数据片段和所述数据片段对应的参考片段,确定所述数据片段对应的片段值,并根据所述多个数据片段对应的多个片段值确定第二中间数据;对所述第二中间数据中的多个片段值进行重新排序,得到第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;若所述第一中间数据包括第二类子数据,则统计所述第二类子数据的连续数量;若所述第一中间数据包括第三类子数据,根据所述第三类子数据确定裸数据;
对所述第一中间数据进行压缩,得到已压缩数据;
其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值;在所述已压缩数据中,所述第二类子数据被压缩成所述连续数量;在所述已压缩数据中,所述第三类子数据被压缩成所述裸数据。
2.根据权利要求1所述的方法,其特征在于,
在所述已压缩数据中,所述裸数据的相邻位置包括特定标记,所述特定标记为第一标识,所述第一标识表示相邻位置的数据是裸数据;
在所述已压缩数据中,所述索引值的相邻位置包括特定标记,所述特定标记为第二标识,所述第二标识表示相邻位置的数据是索引值。
3.根据权利要求1所述的方法,其特征在于,所述利用数据片段和所述数据片段对应的参考片段,确定所述数据片段对应的片段值,包括:
对所述数据片段和所述参考片段进行特定运算,得到所述数据片段对应的片段值;其中,所述特定运算包括差值运算或者异或运算。
4.根据权利要求1所述的方法,其特征在于,所述对所述第二中间数据中的多个片段值进行重新排序,得到第一中间数据,包括:
从所述第二中间数据中的多个片段值中,选择取值为特征数值的片段值;
将选择的片段值排序在前面,得到所述第一中间数据。
5.根据权利要求1所述的方法,其特征在于,所述从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值,包括:
从所述第一映射表中查询与所述第一类子数据匹配的特征序列;
从所述第一映射表中查询与所述特征序列对应的索引值;
其中,所述第一映射表用于记录特征序列和索引值的对应关系。
6.根据权利要求1所述的方法,其特征在于,
所述获取所述待压缩数据对应的参考数据,具体包括:
获取参考项表,其中,所述参考项表包括多个参考数据;
从所述参考项表的多个参考数据中选择参考数据;
将选择的参考数据确定为所述待压缩数据对应的参考数据。
7.一种数据压缩方法,其特征在于,所述方法包括:
利用待压缩数据获得第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;若所述第一中间数据包括第二类子数据,则统计所述第二类子数据的连续数量;若所述第一中间数据包括第三类子数据,根据所述第三类子数据确定裸数据;
对所述第一中间数据进行压缩,得到已压缩数据;
其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值;在所述已压缩数据中,所述第二类子数据被压缩成所述连续数量;在所述已压缩数据中,所述第三类子数据被压缩成所述裸数据。
8.一种数据解压缩方法,其特征在于,所述方法包括:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据和参考数据,获取解压缩数据;其中,利用所述第一中间数据和参考数据,获取解压缩数据,包括:将第一中间数据拆分成多个片段值,将参考数据拆分成多个参考片段;对所述第一中间数据中的多个片段值进行重新排序,得到第二中间数据;针对所述第二中间数据中的片段值,利用所述片段值和所述片段值对应的参考片段,确定与所述片段值对应的数据片段;根据所述第二中间数据中的多个片段值对应的数据片段,确定解压缩数据;
其中,所述已压缩数据还包括第二类子数据的连续数量;在对所述已压缩数据进行解压缩,得到第一中间数据之后,所述第一中间数据还包括与所述连续数量匹配的第二类子数据;其中,所述已压缩数据还包括裸数据;在对所述已压缩数据进行解压缩,得到第一中间数据之后,所述第一中间数据还包括与所述裸数据对应的第三类子数据。
9.根据权利要求8所述的方法,其特征在于,
在所述已压缩数据中,所述裸数据的相邻位置包括特定标记,所述特定标记为第一标识,所述第一标识表示相邻位置的数据是裸数据;
在对所述已压缩数据进行解压缩时,所述方法还包括:从所述已压缩数据中读取第一标识,并根据所述第一标识确定所述已压缩数据中的裸数据;
在所述已压缩数据中,所述索引值的相邻位置包括特定标记,所述特定标记为第二标识,所述第二标识表示相邻位置的数据是索引值;
在对所述已压缩数据进行解压缩时,所述方法还包括:从所述已压缩数据中读取第二标识,并根据所述第二标识确定所述已压缩数据中的索引值。
10.根据权利要求8所述的方法,其特征在于,
所述获取与所述索引值对应的特征序列,包括:
通过所述索引值查询第一映射表,得到与所述索引值对应的特征序列;其中,所述第一映射表用于记录特征序列与索引值的对应关系;或者,
通过所述索引值查询第二映射表,得到与所述索引值对应的特征序列;其中,所述第二映射表用于记录索引值与特征序列的对应关系。
11.根据权利要求8所述的方法,其特征在于,所述对所述第一中间数据中的多个片段值进行重新排序,得到第二中间数据,包括:
确定第一中间数据与第二中间数据之间的排序策略,所述排序策略是压缩过程中,基于第二中间数据中的多个片段值的排序结果确定的;根据所述排序策略,对所述第一中间数据中的多个片段值进行重新排序,得到第二中间数据。
12.根据权利要求8所述的方法,其特征在于,所述利用所述片段值和所述片段值对应的参考片段,确定与所述片段值对应的数据片段,包括:
对所述片段值和所述参考片段进行特定运算,得到与所述片段值对应的数据片段;其中,所述特定运算包括求和运算或者异或运算。
13.一种数据解压缩方法,其特征在于,所述方法包括:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据获取解压缩数据;
其中,所述已压缩数据还包括第二类子数据的连续数量;在对所述已压缩数据进行解压缩,得到第一中间数据之后,所述第一中间数据还包括与所述连续数量匹配的第二类子数据;其中,所述已压缩数据还包括裸数据;在对所述已压缩数据进行解压缩,得到第一中间数据之后,所述第一中间数据还包括与所述裸数据对应的第三类子数据。
14.一种数据压缩装置,其特征在于,所述装置包括:
获取模块,用于获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;所述获取模块利用所述待压缩数据和所述参考数据获得第一中间数据时具体用于:将待压缩数据拆分成多个数据片段,将参考数据拆分成多个参考片段;利用数据片段和所述数据片段对应的参考片段,确定所述数据片段对应的片段值,并根据所述多个数据片段对应的多个片段值确定第二中间数据;对所述第二中间数据中的多个片段值进行重新排序,得到第一中间数据;
查询模块,用于若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;若所述第一中间数据包括第二类子数据,则统计所述第二类子数据的连续数量;
压缩模块,用于对所述第一中间数据进行压缩,得到已压缩数据;其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值;在所述已压缩数据中,所述第二类子数据被压缩成所述连续数量;所述压缩模块,还用于:若所述第一中间数据包括第三类子数据,根据所述第三类子数据确定裸数据;在所述已压缩数据中,所述第三类子数据被压缩成所述裸数据。
15.一种数据解压缩装置,其特征在于,所述装置包括:
获取模块,用于获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
解压缩模块,用于对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
所述获取模块,还用于利用所述第一中间数据和参考数据获取解压缩数据;所述获取模块利用所述第一中间数据和参考数据获取解压缩数据时具体用于:将第一中间数据拆分成多个片段值,将参考数据拆分成多个参考片段;对所述第一中间数据中的多个片段值进行重新排序,得到第二中间数据;针对所述第二中间数据中的片段值,利用所述片段值和所述片段值对应的参考片段,确定与所述片段值对应的数据片段;根据所述第二中间数据中的多个片段值对应的数据片段,确定解压缩数据;
其中,所述已压缩数据还包括第二类子数据的连续数量;所述解压缩模块在对所述已压缩数据进行解压缩,得到第一中间数据时,所述第一中间数据还包括与所述连续数量匹配的第二类子数据;所述已压缩数据还包括裸数据;所述解压缩模块在对所述已压缩数据进行解压缩,得到第一中间数据时,所述第一中间数据还包括与所述裸数据对应的第三类子数据。
16.一种数据压缩设备,其特征在于,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取待压缩数据、所述待压缩数据对应的参考数据;
利用所述待压缩数据和所述参考数据获得第一中间数据;其中,所述利用所述待压缩数据和所述参考数据获得第一中间数据,包括:将待压缩数据拆分成多个数据片段,将参考数据拆分成多个参考片段;利用数据片段和所述数据片段对应的参考片段,确定所述数据片段对应的片段值,并根据所述多个数据片段对应的多个片段值确定第二中间数据;对所述第二中间数据中的多个片段值进行重新排序,得到第一中间数据;
若所述第一中间数据包括第一类子数据,则从第一映射表中查询与所述第一类子数据对应的特征序列、所述特征序列对应的索引值;若所述第一中间数据包括第二类子数据,则统计所述第二类子数据的连续数量;若所述第一中间数据包括第三类子数据,根据所述第三类子数据确定裸数据;
对所述第一中间数据进行压缩,得到已压缩数据;
其中,在所述已压缩数据中,所述第一类子数据被压缩成所述索引值;在所述已压缩数据中,所述第二类子数据被压缩成所述连续数量;在所述已压缩数据中,所述第三类子数据被压缩成所述裸数据。
17.一种数据解压缩设备,其特征在于,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取已压缩数据,其中,所述已压缩数据包括索引值;
获取与所述索引值对应的特征序列;
对所述已压缩数据进行解压缩,得到第一中间数据;其中,所述第一中间数据包括与所述特征序列对应的第一类子数据;
利用所述第一中间数据和参考数据,获取解压缩数据;其中,利用所述第一中间数据和参考数据,获取解压缩数据,包括:将第一中间数据拆分成多个片段值,将参考数据拆分成多个参考片段;对所述第一中间数据中的多个片段值进行重新排序,得到第二中间数据;针对所述第二中间数据中的片段值,利用所述片段值和所述片段值对应的参考片段,确定与所述片段值对应的数据片段;根据所述第二中间数据中的多个片段值对应的数据片段,确定解压缩数据;
其中,所述已压缩数据还包括第二类子数据的连续数量;在对所述已压缩数据进行解压缩,得到第一中间数据之后,所述第一中间数据还包括与所述连续数量匹配的第二类子数据;其中,所述已压缩数据还包括裸数据;在对所述已压缩数据进行解压缩,得到第一中间数据之后,所述第一中间数据还包括与所述裸数据对应的第三类子数据。
CN201811132738.8A 2018-09-27 2018-09-27 一种数据压缩、数据解压缩方法、装置及设备 Active CN110958212B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811132738.8A CN110958212B (zh) 2018-09-27 2018-09-27 一种数据压缩、数据解压缩方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811132738.8A CN110958212B (zh) 2018-09-27 2018-09-27 一种数据压缩、数据解压缩方法、装置及设备

Publications (2)

Publication Number Publication Date
CN110958212A CN110958212A (zh) 2020-04-03
CN110958212B true CN110958212B (zh) 2022-04-12

Family

ID=69967986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811132738.8A Active CN110958212B (zh) 2018-09-27 2018-09-27 一种数据压缩、数据解压缩方法、装置及设备

Country Status (1)

Country Link
CN (1) CN110958212B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11558067B2 (en) * 2020-05-19 2023-01-17 Sap Se Data compression techniques
CN115065725B (zh) * 2022-05-12 2024-01-12 北京奇艺世纪科技有限公司 数据处理方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1868127A (zh) * 2003-10-17 2006-11-22 佩茨拜特软件有限公司 数据压缩系统和方法
WO2011100336A1 (en) * 2010-02-11 2011-08-18 Sycamore Networks, Inc. Method for lossless data reduction of redundant patterns
CN102843142A (zh) * 2011-06-23 2012-12-26 深圳市国微电子股份有限公司 可编程逻辑器件配置数据流压缩、解压缩处理方法及系统
CN102859517A (zh) * 2010-05-14 2013-01-02 株式会社日立制作所 时序数据管理装置、系统、方法以及程序
CN104699998A (zh) * 2013-12-06 2015-06-10 国际商业机器公司 用于对基因组进行压缩和解压缩的方法和装置
CN105262491A (zh) * 2015-10-13 2016-01-20 深圳市有方科技股份有限公司 数据压缩方法及系统、数据解压缩方法及系统、通信设备
CN105743509A (zh) * 2016-01-26 2016-07-06 华为技术有限公司 数据压缩装置及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7453379B2 (en) * 2007-03-12 2008-11-18 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1868127A (zh) * 2003-10-17 2006-11-22 佩茨拜特软件有限公司 数据压缩系统和方法
WO2011100336A1 (en) * 2010-02-11 2011-08-18 Sycamore Networks, Inc. Method for lossless data reduction of redundant patterns
CN102859517A (zh) * 2010-05-14 2013-01-02 株式会社日立制作所 时序数据管理装置、系统、方法以及程序
CN102843142A (zh) * 2011-06-23 2012-12-26 深圳市国微电子股份有限公司 可编程逻辑器件配置数据流压缩、解压缩处理方法及系统
CN104699998A (zh) * 2013-12-06 2015-06-10 国际商业机器公司 用于对基因组进行压缩和解压缩的方法和装置
CN105262491A (zh) * 2015-10-13 2016-01-20 深圳市有方科技股份有限公司 数据压缩方法及系统、数据解压缩方法及系统、通信设备
CN105743509A (zh) * 2016-01-26 2016-07-06 华为技术有限公司 数据压缩装置及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Lossless Data Compression and Decompression Algorithm and Its Hardware Architecture;Ming-bo Lin,Jang-feng Lee,Gene Eu Jan;《IEEE Transactions on Very Large Scale Integration (VLSI) Systems》;20061023;全文 *
面向云平台的生物信息数据高效存储压缩研究;王景如;《中国优秀硕士学位论文全文数据库》;20160331;全文 *

Also Published As

Publication number Publication date
CN110958212A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
US10972125B2 (en) Storage access interface to an encoded storage system
JP5770316B2 (ja) グループ形式を用いた可変長データの改良型符号化および復号
US9753937B2 (en) File aware block level deduplication
US10116325B2 (en) Data compression/decompression device
WO2016062251A1 (en) Parallel history search and encoding for dictionary-based compression
US20150134623A1 (en) Parallel data partitioning
CN106874348A (zh) 文件存储和索引方法、装置及读取文件的方法
CN110958212B (zh) 一种数据压缩、数据解压缩方法、装置及设备
WO2021012162A1 (zh) 存储系统数据压缩的方法、装置、设备及可读存储介质
CN114328545B (zh) 数据存储及查询方法、装置及数据库系统
CN111083933A (zh) 数据存储及获取方法和装置
CN114817651B (zh) 数据存储方法、数据查询方法、装置和设备
EP3803613A1 (en) Chunk-based data deduplication
EP4154406A1 (en) Compression/decompression using index correlating uncompressed/compressed content
CN108399175B (zh) 一种数据存储、查询方法及其装置
US10103747B1 (en) Lossless binary compression in a memory constrained environment
CN116303297B (zh) 文件压缩处理方法、装置、设备及介质
US11569841B2 (en) Data compression techniques using partitions and extraneous bit elimination
CN110795405B (zh) 一种分片数据还原方法、终端设备及存储介质
US8593310B1 (en) Data-driven variable length encoding of fixed-length data
WO2017186049A1 (zh) 信息处理方法和装置
CN110392262A (zh) 一种压缩虚拟桌面图像的方法及装置
WO2024109066A1 (zh) 数据处理方法及装置
US11748307B2 (en) Selective data compression based on data similarity
US9189488B2 (en) Determination of landmarks

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