CN116566396A - 数据压缩方法、装置、存储介质、设备集群及程序产品 - Google Patents
数据压缩方法、装置、存储介质、设备集群及程序产品 Download PDFInfo
- Publication number
- CN116566396A CN116566396A CN202210108552.9A CN202210108552A CN116566396A CN 116566396 A CN116566396 A CN 116566396A CN 202210108552 A CN202210108552 A CN 202210108552A CN 116566396 A CN116566396 A CN 116566396A
- Authority
- CN
- China
- Prior art keywords
- data
- compression rate
- compressed
- dictionary template
- pieces
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000013144 data compression Methods 0.000 title claims abstract description 58
- 238000007906 compression Methods 0.000 claims abstract description 250
- 230000006835 compression Effects 0.000 claims abstract description 250
- 230000015654 memory Effects 0.000 claims description 50
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 20
- 239000000872 buffer Substances 0.000 description 17
- 230000006870 function Effects 0.000 description 14
- 238000013507 mapping Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 6
- 239000007787 solid Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 238000013179 statistical model Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据压缩方法、装置、存储介质、设备集群及程序产品,属于数据处理技术领域。在本申请实施例中,根据当前时刻之前已经完成压缩的数据的压缩率来判断是否对字典模板进行更新,也即,本申请能够根据已经完成压缩的数据的压缩率判断该字典模板是否适用于当前待压缩的数据。在不适用的情况下,根据待压缩的数据,对字典模板进行自适应更新。这样,利用更新后的字典模板,对待压缩的数据进行压缩,能够保证待压缩的数据中的大部分字符串存在于更新后的字典模板中,从而提升数据的压缩率。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种数据压缩方法、装置、存储介质、设备集群及程序产品。
背景技术
随着信息技术的快速发展,待存储的数据呈爆炸式增长。基于此,在存储数据时,可以对数据进行压缩后再存储,以此来减少对存储空间的占用。
相关技术中,通常使用字典压缩算法来对数据进行压缩。也即,预先创建字典模板,该字典模板包括字符串和码字的映射关系。之后,对于任一待压缩的数据,如果该数据中的某个字符串存在于该字典模板中,则从字典模板中获取该字符串对应的码字,并将该数据中的该字符串用获取的码字来代替,以此来压缩数据所占的存储空间。然而,当待压缩的数据中的字符串大部分不存在于字典模板中时,数据的压缩率将会比较低。
发明内容
本申请实施例提供了一种数据压缩方法、装置、存储介质、设备集群及程序产品,能够提升数据的压缩率。所述技术方案如下:
第一方面,提供了一种数据压缩方法,所述方法包括:根据一条或多条第一数据的压缩率,确定对字典模板进行更新,其中,所述第一数据指示在第一时间段内通过所述字典模板完成压缩的数据,所述第一时间段的结束时刻早于当前时刻;根据待压缩的数据,对所述字典模板进行更新;基于所述更新后的字典模板,对所述待压缩的数据进行压缩。
在本申请实施例中,根据当前时刻之前已经完成压缩的数据的压缩率来确定对字典模板进行更新,进而根据待压缩的数据,对字典模板进行自适应更新。这样,利用更新后的字典模板,对待压缩的数据进行压缩,能够保证待压缩的数据中的大部分字符串存在于更新后的字典模板中,从而提升数据的压缩率。
在一种可能的实现方式中,所述根据一条或多条第一数据的压缩率,确定对字典模板进行更新的实现过程可以为:获取一条或多条第二数据的压缩率,其中,所述第二数据指示在第二时间段内通过字典模板完成压缩的数据,所述第二时间段的结束时刻早于所述第一时间段的起始时刻;根据所述一条或多条第一数据的压缩率和所述一条或多条第二数据的压缩率,确定对所述字典模板进行更新。
在本申请中,可以通过第一时间段内数据的压缩率和第二时间段内的数据的压缩率,来确定数据压缩率的变化情况,以此来确定当前的字典模板是否还适用。
在一种可能的实现方式中,所述根据所述一条或多条第一数据的压缩率和所述一条或多条第二数据的压缩率,确定对所述字典模板进行更新的实现过程可以为:基于每条第一数据的压缩率,确定所述第一时间段内的第一数据平均压缩率;基于每条第二数据的压缩率,确定所述第二时间段内的第二数据平均压缩率;如果所述第一数据平均压缩率小于所述第二数据平均压缩率,且所述第二数据平均压缩率与所述第一数据平均压缩率的差值大于第一阈值,则确定对所述字典模板进行更新。
由于在一定的时间范围内,数据的压缩率的变化可能具有一定的随机性,因此,基于每条第一数据的压缩率确定出的第一时间段内的数据平均压缩率,基于每条第二数据的压缩率确定出的第二时间段内的数据平均压缩率,能够更准确的反映相应时间段内数据的压缩率的整体水平。在此基础上,当随着时间的推移,通过当前的字典模板压缩的数据的压缩率发生大幅度的下降时,则说明当前的该字典模板将不适用于当前时刻的待压缩的数据。此时,则确定对该字典模板进行更新。
在一种可能的实现方式中,所述根据第一压缩数据包括的一条或多条第一数据的压缩率,确定对字典模板进行更新的实现过程还可以为:获取每条第一数据的压缩率;基于每条第一数据的压缩率,确定所述第一时间段内的平均压缩率;如果所述第一时间段内的数据平均压缩率小于第二阈值,确定对所述字典模板进行更新。
也即,在本申请中,如果当前时刻最近的一个历史时间段内的数据平均压缩率已经较小,则说明该历史时间段内的数据中的大部分字符串已经不存在于当前的字典模板中,也即说明该字典模板将不适用于当前的待压缩的数据。在这种情况下,则确定对该字典模板进行更新。
在一种可能的实现方式中,所述根据所述待压缩的数据,对字典模板进行更新的实现过程为:从待压缩的多条数据中提取多个字符串,每个字符串在所述待压缩的多条数据中的出现次数不小于第三阈值;根据所述多个字符串和每个字符串在所述待压缩的多条数据中的出现次数,对所述字典模板进行更新。
根据从待压缩的多条数据中提取出的多个字符串和每个字符串在待压缩的多条数据中的出现次数,更新字典模板,这样可以保证待压缩的数据中的大部分字符串存在于更新后的字典模板中,后续利用该更新后的字典模板对待压缩的多条数据进行压缩时,能够提升数据的压缩率。
在一种可能的实现方式中,所述待压缩的多条数据均为流式数据,所述流式数据包括元数据、日志数据中的至少一种。
第二方面,提供了一种数据压缩装置,所述数据压缩装置具有实现上述第一方面中数据压缩方法行为的功能。所述数据压缩装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的数据压缩方法。
第三方面,提供了一种数据压缩装置,所述数据压缩装置的结构中包括处理器和存储器,所述存储器用于存储支持数据压缩装置执行上述第一方面所提供的数据压缩方法的程序,以及存储用于实现上述第一方面所提供的数据压缩方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据压缩方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据压缩方法。
第六方面,提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行第一方面所述的数据压缩方法。
上述第二方面、第三方面、第四方面、第五方面和第六方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,根据当前时刻之前已经完成压缩的数据的压缩率来判断是否对字典模板进行更新,也即,本申请能够根据已经完成压缩的数据的压缩率判断该字典模板是否适用于当前待压缩的数据。在不适用的情况下,根据待压缩的数据,对字典模板进行自适应更新。这样,利用更新后的字典模板,对待压缩的数据进行压缩,能够保证待压缩的数据中的大部分字符串存在于更新后的字典模板中,从而提升数据的压缩率。
附图说明
图1是本申请实施例提供的数据压缩方法所涉及的一种存储系统架构图;
图2是本申请实施例提供的数据压缩方法所涉及的另一种存储系统架构图;
图3是本申请实施例提供的一种数据压缩方法的流程图;
图4是本申请实施例示出的一种流式数据压缩的流程示意图;
图5是本申请实施例提供的一种数据压缩装置的结构示意图;
图6是本申请实施例提供的一种计算设备集群的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例的应用场景予以介绍。
随着信息技术的快速发展,待存储的数据呈爆炸式增长,其中有很大一部分数据为流式数据,流式数据的特点是数据总量较大、数据实时到达、传输速度较快,而且在一定的时间范围内,数据之间具有很强的相似性。基于此,在存储数据时,为了减少对存储空间的占用,可以对数据进行压缩后再存储。目前,通常使用字典压缩算法来对数据进行压缩。也即,根据字典模板包括的字符串和码字的映射关系,将待压缩的数据中包含的存在于该字典模板中的字符串采用对应的码字来代替,以此来压缩数据所占的存储空间。但是,这种压缩方法的压缩效果完全取决于预先定义的字典模板中的字符串与码字是否适用于待压缩的数据,如果待压缩的数据中的字符串大部分不存在于字典模板中时,数据的压缩率将会比较低。其中,数据的压缩率是指压缩后的数据大小与压缩前的数据大小的比值。基于此,本申请实施例提供了一种数据压缩方法,可以应用于诸如对数据库中的元数据、存储系统中的日志数据等流式数据的压缩中,可以大幅度提升数据的压缩率。
接下来对本申请实施例涉及的系统架构进行介绍。
图1是本申请实施例提供的数据压缩方法所涉及的一种存储系统架构图。如图1所示,该存储系统中包括多个计算节点101和多个存储节点102。其中,计算节点101用于接收数据,并将接收到的数据通过本申请实施例提供的方法进行压缩后发送给存储节点102,存储节点102用于接收计算节点101发送的数据,并将接收到的数据进行持久化的存储。其中,各个计算节点101之间可以相互通信,任意一个计算节点101可通过网络访问多个存储节点中的任意一个存储节点102。
可选地,在一种可能的实现方式中,计算节点101至少包括处理器1011、缓存1012和网卡1013。
其中,处理器1011是一个中央处理器(central processing unit,CPU),用于处理来自计算节点101外部的数据访问请求,或者计算节点101内部生成的请求。示例性的,处理器1011接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在缓存1012中。当缓存1012中的数据总量达到一定阈值时,处理器1011将缓存1012中存储的数据发送给存储节点102进行持久化存储。除此之外,处理器1011还用于对数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。其中,一个CPU1011又具有一个或多个CPU核。本申请实施例不对CPU的数量,以及CPU核的数量进行限定。
缓存1012是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。缓存包括至少两种存储器,例如缓存既可以是随机存取存储器,也可以是只读存储器(Read Only Memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(Dynamic Random AccessMemory,DRAM),或者存储级存储器(Storage Class Memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(Random Access Memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本申请实施例中只是示例性的说明,缓存还可以包括其他随机存取存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(Programmable Read OnlyMemory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。另外,缓存1012还可以是双列直插式存储器模块或双线存储器模块(Dual In-line Memory Module,简称DIMM),即由DRAM组成的模块,还可以是固态硬盘(Solid StateDisk,SSD)。实际应用中,计算节点101中可配置多个缓存1012,以及不同类型的缓存1012。本申请实施例不对缓存1012的数量和类型进行限定。此外,可对缓存1012进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,缓存1012中存储的数据也不会丢失。具有保电功能的缓存被称为非易失性存储器。
网卡1013用于与存储节点102通信。例如,当缓存1012中的数据总量达到一定阈值时,计算节点101可通过网卡1013向存储节点102发送请求以对数据进行持久化存储。另外,计算节点101还可以包括总线,用于计算节点101内部各组件之间的通信。在功能上,计算节点101的主要功能是计算业务,在存储数据时可以利用远程存储器来实现持久化存储,因此它具有比常规服务器更少的本地存储器,从而实现了成本和空间的节省。但这并不代表计算节点101不能具有本地存储器,在实际实现中,计算节点101也可以内置少量的硬盘,或者外接少量硬盘。
另外,存储节点102包括一个或多个控制单元1021、网卡1022与多个硬盘1023。网卡1022用于与计算节点101通信。硬盘1023用于存储数据,可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。控制单元1021用于根据计算节点101发送的读/写数据请求,往硬盘1023中写入数据或者从硬盘1023中读取数据。在读写数据的过程中,控制单元1021需要将读/写数据请求中携带的地址转换为硬盘能够识别的地址。由此可见,控制单元1021也具有一些简单的计算功能。
在实际应用中,控制单元1021可具有多种形态。一种情况下,控制单元1021包括CPU和缓存。CPU用于执行地址转换以及读写数据等操作。缓存用于临时存储将要写入硬盘1023的数据,或者从硬盘1023读取出来将要发送给计算节点101的数据。另一种情况下,控制单元1021是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。通常情况下,控制单元1021的数量可以是一个,也可以是两个或两个以上。当存储节点102包含至少两个控制单元1021时,硬盘1023与控制单元1021之间可具有归属关系。
在另一种实施方式中,控制单元1021的功能可以卸载到网卡1022上。换言之,在存储节点102内部不具有控制单元1021,而是由网卡1022来完成数据读写、地址转换以及其他计算功能。此时,网卡1022是一个智能网卡。它可以包含CPU和缓存。CPU用于执行地址转换以及读写数据等操作。缓存用于临时存储将要写入硬盘1023的数据,或者从硬盘1023读取出来将要发送给计算节点101的数据。也可以是一个可编程的电子部件,例如DPU、GPU)、NPU等处理芯片。存储节点102中的网卡1022和硬盘1023之间没有归属关系,网卡1022可访问该存储节点102中任意一个硬盘1023,因此在存储空间不足时扩展硬盘会较为便捷。
图2是本申请实施例提供的数据压缩方法所涉及的另一种存储系统架构图,如图2所示,该系统中包括应用服务器201和存储系统202。其中,应用服务器201可以直接通过网络与存储系统202进行通信。
其中,该存储系统202是一个集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎2021。引擎2021是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。
如图2所示,引擎2021中有一个或多个控制器,图2以引擎包含两个控制器为例予以说明。控制器0与控制器1之间具有镜像通道,那么当控制器0将一份数据写入其缓存20213后,可以通过所述镜像通道将所述数据的副本发送给控制器1,控制器1将所述副本存储在自己本地的缓存20213中。由此,控制器0和控制器1互为备份,当控制器0发生故障时,控制器1可以接管控制器0的业务,当控制器1发生故障时,控制器0可以接管控制器1的业务,从而避免硬件故障导致整个存储系统的不可用。当引擎2021中部署有4个控制器时,任意两个控制器之间都具有镜像通道,因此任意两个控制器互为备份。
引擎2021还包含前端接口20211和后端接口20214,其中前端接口20211用于与应用服务器201通信,从而为应用服务器201提供存储服务。而后端接口20214用于与硬盘20223通信,以扩充存储系统的容量。通过后端接口20214,引擎2021可以连接更多的硬盘20223,从而形成一个非常大的存储资源池。
在硬件上,如图2所示,控制器0至少包括处理器20212、缓存20213。处理器20212是一个中央处理器(central processing unit,CPU),用于处理来自存储系统外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储系统内部生成的请求。示例性的,处理器20213通过前端端口20211接收应用服务器201发送的写数据请求时,会将这些写数据请求中的数据暂时保存在缓存20213中。当缓存20213中的数据总量达到一定阈值时,处理器20212通过后端端口将缓存20213中存储的数据发送给硬盘20223进行持久化存储。
缓存20213是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。缓存包括至少两种存储器,例如缓存既可以是RAM,也可以是ROM。举例来说,RAM是DRAM或者SCM。而对于ROM,举例来说,可以是可编程只读存储器(Programmable Read Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。另外,缓存20213还可以是双列直插式存储器模块或DIMM,即由DRAM组成的模块,还可以是SSD。实际应用中,控制器0中可配置多个缓存20213,以及不同类型的缓存20213。本实施例不对缓存20213的数量和类型进行限定。此外,可对缓存20213进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,缓存20213中存储的数据也不会丢失。具有保电功能的缓存被称为非易失性存储器。
缓存20213中存储有软件程序,处理器20212运行缓存20213中的软件程序可实现对硬盘的管理。例如将硬盘抽象化为存储资源池,然后划分为LUN提供给服务器使用等。这里的LUN其实就是在服务器上看到的硬盘。当然,一些集中式存储系统本身也是文件服务器,可以为服务器提供共享文件服务。
控制器1的硬件组件和软件结构与控制器0类似,这里不再赘述。
图2所示的是一种盘控分离的集中式存储系统。在该系统中,引擎2021可以不具有硬盘槽位,硬盘20223需要放置在硬盘框2022中,后端接口20214与硬盘框2022通信。后端接口20214以适配卡的形态存在于引擎2021中,一个引擎2021上可以同时使用两个或两个以上后端接口20214来连接多个硬盘框。或者,适配卡也可以集成在主板上,此时适配卡可通过PCIE总线与处理器20212通信。
需要说明的是,图2中只示出了一个引擎2021,然而在实际应用中,存储系统中可包含两个或两个以上引擎2021,多个引擎2021之间做冗余或者负载均衡。
硬盘框2022包括控制单元20221和若干个硬盘20223。控制单元20221可具有多种形态。一种情况下,硬盘框2022属于智能盘框,其中,控制单元20221包括CPU和缓存。CPU用于执行地址转换以及读写数据等操作。缓存用于临时存储将要写入硬盘20223的数据,或者从硬盘20223读取出来将要发送给控制器的数据。另一种情况下,控制单元20221是一个可编程的电子部件,例如DPU、GPU或嵌入式NPU等处理芯片。通常情况下,控制单元20221的数量可以是一个,也可以是两个或两个以上。当硬盘框2022包含至少两个控制单元20221时,硬盘20223与控制单元20221之间可具有归属关系。如果硬盘20223与控制单元20221之间具有归属关系,那么每个控制单元只能访问归属于它的硬盘。
在另一种实施方式中,控制单元20221的功能可以卸载到网卡20222上。换言之,在该种实施方式中,硬盘框2022内部不具有控制单元20221,而是由网卡20222来完成数据读写、地址转换以及其他计算功能。此时,网卡20222是一个智能网卡。它可以包含CPU和缓存。在某些应用场景中,网卡20222也可能具有持久化缓存介质,如持久性缓存(PersistentMemory,PM),或者非易失性随机访问存储器(Non-Volatile Random Access Memory,NVRAM),或者相变存储器(phase change memory,PCM)等。CPU用于执行地址转换以及读写数据等操作。缓存用于临时存储将要写入硬盘20223的数据,或者从硬盘20223读取出来将要发送给控制器的数据。也可以是一个可编程的电子部件,例如DPU、GPU或嵌入式NPU等处理芯片。硬盘框2022中的网卡20222和硬盘20223之间没有归属关系,网卡20222可访问该硬盘框2022中任意一个硬盘20223,因此在存储空间不足时扩展硬盘会较为便捷。
按照引擎2021与硬盘框2022之间通信协议的类型,硬盘框2022可能是SAS硬盘框,也可能是NVMe硬盘框,IP硬盘框以及其他类型的硬盘框。SAS硬盘框,采用SAS3.0协议,每个框支持25块SAS硬盘。引擎221通过板载SAS接口或者SAS接口模块与硬盘框230连接。NVMe硬盘框,更像一个完整的计算机系统,NVMe硬盘插在NVMe硬盘框内。NVMe硬盘框再通过RDMA端口与引擎2021连接。
需要说明的是,图2所示的集中式存储系统为盘控分离的存储系统,也即,引擎2021不具有硬盘槽位,通过连接硬盘框进而在硬盘框中插接硬盘。在一种可能的实现方式中,集中式存储系统也可以为盘控一体的存储系统,也即,引擎2021具有硬盘槽位,在这种情况下,可以直接在引擎2021的硬盘槽位中插接硬盘,本申请实施例对此不再赘述。
上述是本申请实施例给出的数据压缩方法可能涉及到的两种存储系统,当然,本申请实施例提供的数据压缩方法也可以应用到其他形式的存储系统或者是计算设备中,上述所示例的存储系统并不构成对本申请实施例提供的数据压缩方法的实施环境的限定。
接下来对本申请实施例提供的数据压缩方法进行介绍。
图3是本申请实施例提供的一种数据压缩方法的流程图,该方法可以应用于前述介绍的计算节点或引擎中,本申请实施例以应用于图1所示的计算节点中为例对该方法的实现过程进行介绍,参见图3,该方法包括以下步骤:
步骤301:根据一条或多条第一数据的压缩率,确定对字典模板进行更新,其中,第一数据指示在第一时间段内通过该字典模板完成压缩的数据,第一时间段的结束时刻早于当前时刻。
在本申请实施例中,计算节点中包括缓存区,该缓存区中可以存储有待压缩的数据。其中,该缓存区可以为计算节点中的缓存。在这种情况下,计算节点可以对该缓存中待压缩的数据进行压缩,进而将压缩后的数据发送至存储节点进行持久化存储。其中,计算节点在对缓存中待压缩的数据进行压缩时,可以根据一条或多条第一数据的压缩率来判断是否对当前的字典模板进行更新,也即,根据一条或多条第一数据的压缩率来预估当前的字典模板是否将适用于待压缩的数据。
需要说明的是,本申请实施例中已完成压缩的数据以及待压缩的数据可以均为流式数据。其中,流式数据是指单条数据的数据量较小、呈流式快速输入、且需要分块或分条进行压缩的数据。通常,流式数据的数据总量较大,而且在一定的时间范围内数据之间具有很强的相似性。示例性地,该流式数据包括元数据、日志数据中的至少一种。另外,已压缩的数据是指在当前时刻之前已通过该字典模板完成压缩的数据。其中,该字典模板为当前时刻之前根据已完成压缩的数据中的部分或全部数据获得的字典模板。在后文中,为了方便区分,将计算节点中当前存储的该字典模板称为第一字典模板。
示例性地,由于第一字典模板是根据已压缩的数据中的部分或全部数据获得的字典模板,所以,在当前时刻之前通过该第一字典模板对数据进行压缩的过程中,如果该第一字典模板适用于这些数据,则这些数据的压缩率将较高而且始终保持在一定范围内,而不会大幅度下降。然而,如果第一字典模板已经不适用于这些数据,则这些数据的压缩率将会较低或者是随着时间的推移出现大幅度的下降。基于此,计算节点可以根据第一时间段内一条或多条第一数据的压缩率,来确定是否对字典模板进行更新。
在一种可能的实现方式中,计算节点可以获取一条或多条第二数据的压缩率,其中,第二数据指示在第二时间段内通过字典模板完成压缩的数据,该第二时间段的结束时刻早于第一时间段的起始时刻;根据一条或多条第一数据的压缩率和一条或多条第二数据的压缩率,确定对字典模板进行更新。
需要说明的是,该第一时间段和第二时间段为开始采用当前存储的第一字典模板进行数据压缩的第一时刻到当前时刻之间的时间段。并且,该第一时间段的起始时间晚于第二时间段的结束时间。
示例性地,开始采用第一字典模板进行数据压缩的第一时刻为T0时刻,当前时刻为T4时刻,则第一时间段可以为T3时刻到T4时刻之间的时间段,第二时间段则可以为T2时刻到T3时刻之间的时间段,其中,T2和T3时刻均为T0和T4之间的时刻。
当然,在一些可能的情况中,第一时间段和第二时间段也可以不是连续的时间段。例如,第一时间段为T3时刻到T4时刻之间的时间段时,第二时间段也可以为T1时刻到T2时刻之间的时间段。
以T0时刻与T4时刻之间相差10分钟为例,该第二时间段可以为从T0时刻起的5分钟,第一时间段可以为从第二时间段的结束时刻起的5分钟。或者,该第二时间段可以为从T0时刻起的8分钟,该第一时间段可以为从第二时间段的结束时刻起的2分钟。或者,该第二时间段可以为从T0时刻起的3分钟,该第一时间段可以为当前时刻的前3分钟。
上述是本申请实施例给出的几种第一时间段与第二时间段的可能情况,并不对本申请实施例造成限定。
在本申请实施例中,计算节点在开始对数据进行压缩时,可以生成一个压缩日志。每压缩一条数据,可以在该压缩日志中记录该条数据的压缩信息。其中,该压缩信息包括该条数据的压缩率以及压缩时间,该压缩时间即为压缩该条数据时所对应的时间。因此,当计算节点对当前时刻之前的多条数据进行压缩后,该压缩日志中就记载有当前时刻之前压缩的多条数据中每条数据的压缩信息。基于此,计算节点可以根据第一时间段的起始时刻和结束时刻,从该压缩日志中获取第一时间段内已压缩的一条或多条第一数据的压缩率。根据第二时间段的起始时刻和结束时刻,从该压缩日志中获取第二时间段内已压缩的一条或多条第二数据的压缩率。
示例性地,计算节点可以根据第一时间段的起始时刻和结束时刻,判断压缩日志中每条数据的压缩信息中包括的压缩时间是否位于该第一时间段内。之后,从包括的压缩时间位于第一时间段内的压缩信息中,获取一条或多条第一数据的压缩信息。之后,从获取的一条或多条第一数据的压缩信息中获取相应数据的压缩率。依据同样的方法,该计算节点可以获取一条或多条第二数据的压缩率。
在获取到一条或多条第一数据的压缩率和一条或多条第二数据的压缩率之后,计算节点可以基于每条第一数据的压缩率和每条第二数据的压缩率,确定是否对第一字典模板进行更新。
其中,计算节点可以基于每条第一数据的压缩率,确定第一时间段内的第一数据平均压缩率;基于每条第二数据的压缩率,确定第二时间段内的第二数据平均压缩率;如果第一数据平均压缩率小于第二数据平均压缩率,且第二数据平均压缩率与第一数据平均压缩率的差值大于第一阈值,则确定对第一字典模板进行更新。
示例性地,当第一数据或第二数据均有多条的情况下,在得到每条第一数据的压缩率和每条第二数据的压缩率之后,计算节点可通过下述公式(1)来确定第一时间段内的数据平均压缩率C1以及第二时间段内的数据平均压缩率C2。
其中,Cj为数据平均压缩率,n为第一数据或第二数据的个数,xi为第i条第一数据或第i条第二数据的压缩率。
以确定第一时间段内的数据平均压缩率C1为例。假设有10条第一数据,其中该10条第一数据的压缩率分别为70%、72%、71%、69%、73%、68%、69%、72%、73%、70%。那么,计算节点基于上述公式(1)确定出的第一时间段内的数据平均压缩率C1为70.7%。依据同样的方法,可以计算出第二时间段内的数据平均压缩率C2。
如果第一数据有一条,则计算节点可以将该第一数据的压缩率作为第一数据平均压缩率。同样的,如果第二数据有一条,则计算可以将该第二数据的压缩率作为第二数据平均压缩率。
在确定出第一数据平均压缩率和第二数据平均压缩率之后,在一种可能的实现方式中,计算节点可以将第一数据平均压缩率与第二数据平均压缩率进行比较。如果第一数据平均压缩率小于第二数据平均压缩率,并且,第二数据平均压缩率与第一数据平均压缩率的差值大于第一阈值,则说明随着时间的推移,数据的压缩率出现了大幅度下降。由此可知,也即,该第一字典模板随着时间的推移越来越不适用于数据的压缩,此时,计算节点则可以确定该第一字典模板将不适用于当前时刻的待压缩的数据,因此,可以确定对该第一字典模板进行更新。可选地,如果该差值小于或等于第一阈值,或者,第一数据平均压缩率不小于第二数据平均压缩率,则说明随着时间的推移,数据的压缩率并未发生大幅度的下降。因此可知,该第一字典模板仍然适用于数据的压缩,此时,可以确定不对该字典模板进行更新。
继续前述举例,该第一数据平均压缩率C1为70.7%,假设第二数据平均压缩率C2为95%。第一数据平均压缩率70.7%小于第二数据平均压缩率95%。基于此,计算节点可以通过下述公式(2)来确定第二数据平均压缩率与第一数据平均压缩率的差值△。
Δ=C2-C1 (2)
通过公式(2)计算可得,第二数据平均压缩率与第一数据平均压缩率的差值△为24.3%。在计算出第二数据平均压缩率与第一数据平均压缩率的差值之后,计算节点可以将该差值与第一阈值进行比较。如果该差值大于第一阈值,则可以确定对第一字典模板进行更新。
需要说明的时,该第一阈值可以预先设置。例如可以将该第一阈值设置为10%、15%或20%,本申请实施例对此不作限定。
可选地,在另一种可能的实现方式中,当第一数据和第二数据均有多条时,在获取到每条第一数据的压缩率和每条第二数据的压缩率之后,计算节点也可以基于每条第一数据的压缩率和每条第二数据的压缩率,分别确定第一时间段内的压缩率众数和第二时间段内的压缩率众数。该压缩率众数为在相应时间段内出现次数最多的一个压缩率。为了方便说明,将第一时间段内出现次数最多的一个压缩率称为第一压缩率,将第二时间段内出现次数最多的一个压缩率称为第二压缩率。之后,计算节点可以将该第一压缩率和第二压缩率进行比较。如果第一压缩率小于第二压缩率,则确定第一压缩率与第二压缩率的差值,进而将该差值与第一阈值进行比较。如果该差值大于第一阈值,则确定对第一字典模板进行更新。当然,如果该第一压缩率不小于第二压缩率,或者,第一压缩率小于第二压缩率但是二者之间的差值小于第一阈值,则确定不对第一字典模板进行更新。
可选地,在另一种可能的实现方式中,第一时间段可以为当前时刻与开始使用第一字典模板进行数据压缩的第一时刻之间的时间段,在这种情况下,计算节点可以获取第一时间段内每条第一数据的压缩率和压缩时间。之后,基于该每条第一数据的压缩率和压缩时间绘制压缩率随时间的变化曲线,然后对该曲线进行拟合,得到拟合曲线。确定该拟合曲线的斜率。如果该拟合曲线的斜率小于0,则将该拟合曲线的斜率的绝对值与第四阈值进行比较。如果该拟合曲线的斜率的绝对值大于第四阈值,则说明压缩率的下降幅度较大。也即第一字典模板不再适用于后续的数据压缩,因此,计算节点确定对第一字典模板进行更新。当然,如果该拟合曲线的斜率的绝对值小于或等于第四阈值,或者该拟合曲线的斜率不小于0,则说明压缩率的下降幅度较小,或者压缩率未下降。也即,该第一字典模板仍然适用于后续的数据压缩,因此,计算节点确定不对第一字典模板进行更新。
需要说明的时,该第四阈值可以预先设置。例如可以将该第四阈值设置为0.1、0.2或0.3,本申请实施例对此不作限定。
可选地,在另一种可能的实现方式中,该第一时间段可以为距离当前时刻最近的一个时间段。计算节点可以获取每条第一数据的压缩率,然后基于每条第一数据的压缩率,确定第一时间段内的数据平均压缩率;如果第一时间段内的数据平均压缩率小于第二阈值,则确定对第一字典模板进行更新。
示例性的,该第一时间段可以为当前时刻的前3分钟,或者为当前时刻的前5分钟,本申请实施例对此不作限定。其中计算节点获取每条第一数据的压缩率的方式可以参考前述介绍的相关实现方式,本申请实施例对此不再赘述。在获取到每条第一数据的压缩率之后,计算节点可以基于每条第一数据的压缩率,计算平均值,从而得到第一时间段内的数据平均压缩率。之后,计算节点可以将第一时间段内的数据平均压缩率与第二阈值进行比较。如果该第一时间段内的数据平均压缩率小于第二阈值,则说明数据压缩率已经较低。也即,该第一字典模板已经不适用于数据的压缩,因此,可以确定对该第一字典模板进行更新。
需要说明的是,该第二阈值可以预先设置。例如可以将该第二阈值设置为80%、85%或90%,本申请实施例对此不作限定。
其中,如果通过上述方式确定出不对字典模板更新,则可以继续使用当前存储的该第一字典模板对待压缩的数据进行压缩。当然,如果确定出当前存储的第一字典模板将不适用于待压缩的数据,也即,确定出对第一字典模板进行更新,则计算节点可以执行步骤302。
步骤302:根据待压缩的数据,对当前字典模板进行更新。
示例性地,计算节点可以从待压缩的多条数据中提取多个字符串,每个字符串在待压缩的多条数据中的出现次数不小于第三阈值;然后根据多个字符串和每个字符串在待压缩的多条数据中的出现次数,对字典模板进行更新。
其中,计算节点可以将待压缩的多条数据输入到预先训练好的统计模型中,由该统计模型对该多条数据进行处理,进而输出从该多条数据中提取到的出现次数不小于第三阈值的多个字符串以及该多个字符串中每个字符串在该多条数据中的出现次数。
示例性地,假设有100条待压缩的数据,当统计模型接收到该100条待压缩的数据之后,对该100条待压缩的数据进行处理,然后从该100条待压缩的数据中提取出现次数不小于第三阈值的多个字符串。假设该第三阈值为10,该统计模型从该100条待压缩的数据中提取出的出现次数不小于第三阈值的多个字符串包括“abc”、“abd”、“abe”。其中,字符串“abc”的在该100条待压缩的数据中的出现次数为60次,字符串“abd”在该100条待压缩的数据中的出现次数为20次,字符串“abe”在该100条待压缩的数据中的出现次数为20次。
需要说明的是,该第三阈值可以预先设置,例如可以将该第三阈值设置为10、15或者20,本申请实施例对此不作限定。
在得到多个字符串以及该多个字符串中每个字符串在待压缩的多条数据中的出现次数之后,计算节点可以根据多个字符串和每个字符串在待压缩的多条数据中的出现次数,生成字典模板。
示例性地,在一种可能的实现方式中,计算节点可以根据多个字符串和多个字符串中每个字符串的出现次数,得到每个字符串在待压缩的多条数据中的出现概率。将每个字符串与该字符串在待压缩的多条数据中的出现概率对应存储,得到一个字典模板。其中,该字典模板中包括每个字符串与对应的出现概率之间的映射关系。
仍以上述字符串“abc”、“abd”、“abe”为例。由上述介绍可知,在100条待压缩的数据中,字符串“abc”的出现次数为60次,字符串“abd”的出现次数为20次,字符串“abe”的出现次数为20次。基于此,可得字符串“abc”的出现概率是60%,字符串“abd”的出现概率是20%,字符串“abe”的出现概率是20%。这样,计算节点可以将字符串“abc”与60%对应存储,将字符串“abd”与20%对应存储,将字符串“abe”与20%对应存储,从而得到一个新的字典模板。
可选地,在另一种可能的实现方式中,计算节点可以为提取出的多个字符串中的每个字符串设置对应的码字,进而将每个字符串与对应的码字对应存储,以得到新的字典模板。此时,该字典模板中包括字符串与码字之间的映射关系。
示例性地,仍以上述字符串“abc”、“abd”、“abe”为例,假设计算节点用数字来代替这些字符串。例如,可以用数字1来代替字符串“abc”,用数字2来代替字符串“abd”,用数字3来代替字符串“abe”。基于此,生成的字典模板中就包括这些字符串与数字之间的映射关系。
在根据待压缩的数据生成新的字典模板后,即可用该新的字典模板替换当前存储的第一字典模板,实现对第一字典模板的更新。
在一些可能的实现方式中,计算节点可以根据新的字典模板中的信息对第一字典模板中包括的信息进行更新。
示例性地,仍以上述字符串为例,假设第一字典模板中包括字符串“abc”、”abd”,其中在该原字典模板中用数字1来代替字符串“abc”,用数字2来代替字符串“abd”。但该原字典模板中并不包括字符串“abe”。在这种情况下,计算节点可以在第一字典模板中添加字符串“abe”和数字3之间的映射关系,以此来实现对第一字典模板的更新。再例如,如果第一字典模板中还包括字符串“bcd”与数字4之间的映射关系,由于根据当前待压缩的数据得到的新的映射关系中不包括字符串“bcd”的映射关系,所以,计算节点可以将第一字典模板中字符串“bcd”与数字4之间的映射关系删除。
步骤303:基于更新后的字典模板,对待压缩的数据进行压缩。
在对存储的第一字典模板更新后,计算节点可以采用更新后的字典模板对待压缩的数据进行压缩。
由前述介绍可知,该更新后的字典模板中可能包括字符串与出现概率之间的映射关系,也可能包括字符串与码字之间的映射关系。基于此,当该更新后的字典模板中包括的是字符串与出现概率之间的映射关系时,对于任一条待压缩的数据,计算节点可以利用算术编码的方法,基于待压缩的数据包括的字符串所对应的出现概率,确定待压缩的数据对应的编码区间。之后,通过该待压缩的数据对应的编码区间中的任意一个小数来代替该待压缩的数据,将该小数以二进制形式输出即可得到压缩编码后的数据。
其中,计算节点可以基于预设设置的初始编码区间,通过顺序读入待压缩的数据包括的字符串对应的概率区间,利用下述公式(3)和公式(4)来迭代更新编码区间,从而得到该待压缩的数据对应的编码区间。
lowi=lowi-1+(highi-1-lowi-1)×Li (3)
highi=lowi-1+(highi-1-lowi-1)×Hi (4)
其中,Li为按顺序读入的该待压缩的数据的第i个字符串对应的概率区间的左端点值,Hi为第i个字符串对应的概率区间的右端点值。lowi为读入第i个字符串后对前一个编码区间进行更新后得到的更新的编码区间的左端点值,highi为读入第i个字符串后对前一个编码区间进行更新后得到的更新的编码区间的右端点值。lowi-1为前一个编码区间的左端点值,highi-1为前一个编码区间的右端点值。
继续前述举例,更新后的字典模板中包括字符串“abc”与该字符串的出现概率60%,字符串“abd”与该字符串的出现概率20%,字符串“abe”与该字符串的出现概率20%。基于此,计算节点首先可以将[0,1)作为一个概率区间,然后基于各个字符串的出现概率,将该概率区间划分成多个子区间。为每个字符串指定一个子区间,每个子区间的大小正比于与该子区间对应的字符串的出现概率。例如,可以将该概率区间[0,1)划分成[0,0.6)、[0.6,0.8)、[0.8,1)。其中,[0,0.6)对应于字符串“abc”,[0.6,0.8)对应于字符串“abd”,[0.8,1)对应于字符串“abe”。
假设待压缩的数据为“abcabdabc”,计算节点对该数据进行压缩编码时,依次读入该待压缩的数据的字符。首先读入字符a,该字符a没有对应的概率区间,所以,不对初始编码区间进行更新。之后,读入字符“b”,此时,得到的字符串ab也没有对应的概率区间,所以,不对初始编码区间更新。之后,读入字符“c”,此时,得到字符串“abc”。由于字符串“abc”对应的概率区间为[0,0.6),所以,将初始编码区间作为待更新的编码区间,该字符串“abc”的概率区间的左端点值为0,右端点值为0.6。此时,如表1中所示,通过上述公式1和2,即能够计算出第一次更新后的编码区间为[0,0.6)。之后,读入下一个字符a,此时,字符a没有对应的概率区间,不对第一次更新后的编码区间进行更新。继续读入字符,直到读入字符d时,得到字符串“abd”。该字符串“abd”对应的概率区间为[0.6,0.8),在这种情况下,计算节点将第一次更新后的编码区间作为待更新的编码区间。之后,基于该字符串“abd”对应的概率区间的左端点值和右端点值,通过上述公式1和2对第一次更新后的编码区间进行更新,从而得到第二次更新后的编码区间。如表1所示,读入字符串“abd”之后第二次更新后的编码区间为[0.36,0.48)。以此类推,直到将该待压缩数据的字符均读入从而得到最后一次更新的编码区间为止,将最后一次更新得到的编码区间作为该待压缩的数据对应的编码区间。其中,根据读入的待压缩的数据中的字符串对应的概率区间依次更新得到的编码区间可如下表1所示。
表1编码区间的端点值更新表
基于此,可得该待压缩的数据的编码区间为[0.36,0.432)。在这种情况下,可以用该编码区间中的任意一个小数以二进制形式输出即可得到压缩编码后的数据。依据同样的方法,计算节点可以对缓存区中的多条数据进行压缩编码,然后输出压缩编码后的数据。
可选地,如果该更新后的字典模板中包括字符串与码字之间的映射关系,计算节点在利用该更新后的字典模板对待压缩的多条数据进行压缩时,如果该待压缩的多条数据中的某个字符串存在于该更新后的字典模板中,则可以直接利用该更新后的字典模板中包括的与该字符串对应的码字来代替该字符串,进而对该待压缩的多条数据进行压缩。
示例性地,假设待压缩的数据为“abcabdabc”,由前述介绍可知,该更新后的字典模板中字符串“abc”对应于数字1,字符串“abd”对应于数字2,字符串“abe”对应于数字3。基于此,对该待压缩的数据“abcabdabc”进行压缩编码时,可以依次将该待压缩数据“abcabdabc”中的字符串“abc”用数字1来代替,将字符串“abd”用数字2来代替,将字符串“abe”用数字3来代替,最后可得压缩编码后的数据为“123”。其中计算节点可将该压缩编码后的数据转换为二进制形式输出。依据同样的方法,计算节点可以对待压缩的多条数据进行压缩编码,然后输出压缩编码后的数据。
需要说明的是,后续如果利用更新后的字典模板对待压缩的数据进行压缩时,发现待压缩的数据包括的字符串与已经利用该更新后的字典模板压缩的多条数据包括的字符串不相似时,可以再次对字典模板进行更新,然后利用再次更新后的字典模板对待压缩的数据进行压缩。也就是说,每当待压缩的数据包括的字符串与已压缩的数据包括的字符串不相似时,都可以对已有的字典模板进行更新,进而用更新后的字典模板对待压缩的数据进行压缩。
图4为本申请实施例基于上述提供的数据压缩方法示出的一种流式数据压缩的流程示意图。参见图4,计算节点在接收到多条流式数据后,先将流式数据存储在缓存区中。之后,计算节点可以根据该缓存区中存储的多条流式数据,生成初始的字典模板。
其中,根据流式数据生成初始的字典模板的方法可以参考前述步骤301,本申请实施例对此不再赘述。生成初始的字典模板后,该计算节点可以利用该初始的字典模板和压缩编码器对缓存区中存储的多条流式数据进行压缩。其中,在开始对流式数据进行压缩时,压缩率监测器可以生成一个压缩日志,该压缩日志中记录了每条流式数据的压缩信息,其中该压缩信息中包括每条流式数据的压缩率与压缩每条流式数据时所对应的时间。
基于此,计算节点可以实时根据每条流式数据的压缩率,确定是否对初始的字典模板进行更新。其中,根据每条流式数据的压缩率确定对字典模板进行更新的方法可以参考前述步骤301,本申请实施例对此不再赘述。
如果在某个时刻根据该时刻之前已压缩的数据的压缩率确定对初始的字典模板进行更新,则计算节点可以根据当前时刻的待压缩的多条流式数据,对初始的字典模板进行更新,进而利用更新后的字典模板对待压缩的流式数据进行压缩。其中更新字典模板的方法可以参考前述步骤302,利用更新后的字典模板对待压缩的流式数据进行压缩的方法可以参考前述步骤303,本申请实施例对此不再赘述。后续,压缩率监测器可以继续参考上述过程监测数据的压缩率的变化,进而在某个时刻根据数据的压缩率该更新后的字典模板不再适用时,再次利用该时刻的待压缩的多条数据来更新已有的字典模板,以此类推。如此,每当压缩率监测器在某个时刻监测到的数据压缩率确定字典模板不再适用,需要更新时,即可以自适应的根据当前的待压缩的数据对当前的字典模板更新,以此来获得更为适应当前数据的字典模板,这样,基于更新后的字典模板来压缩数据将能够有效的提升数据压缩率。
在本申请实施例中,根据当前时刻之前已经完成压缩的数据的压缩率来判断是否对字典模板进行更新,也即,本申请能够根据已经完成压缩的数据的压缩率判断该字典模板是否适用于当前待压缩的数据。在字典模板不适用的情况下,根据待压缩的数据,对字典模板进行自适应更新。这样,利用更新后的字典模板,对待压缩的数据进行压缩,能够保证待压缩的数据中的大部分字符串存在于更新后的字典模板中,从而提升数据的压缩率。
其次,在本申请实施例中,计算节点在监测到数据的压缩率较低或者是随着时间推移出现大幅度下降时,才会更新字典模板。也即是,计算节点在确定当前的字典模板已经不再适用于后续的数据压缩时才会更新该字典模板。这样,相较于频繁的更新字典模板,能够在保证字典模板的实时有效性的同时,有效的降低CPU的平均负载。
接下来对本申请实施例提供的数据压缩装置进行介绍。
参见图5,本申请实施例提供了一种数据压缩装置500,该装置500可以应用于前述实施例中的计算节点或引擎中,该装置500包括:确定模板501、更新模块502和压缩模块503。
确定模块501,用于执行上述实施例中的步骤301;
更新模块502,用于执行上述实施例中的步骤302;
压缩模块503,用于执行上述实施例中的步骤303。
可选地,确定模块501主要用于:
获取一条或多条第二数据的压缩率,其中,第二数据指示在第二时间段内通过字典模板完成压缩的数据,第二时间段的结束时刻早于第一时间段的起始时刻;
根据一条或多条第一数据的压缩率和一条或多条第二数据的压缩率,确定对字典模板进行更新。
可选地,确定模块501主要用于:
基于每条第一数据的压缩率,确定第一时间段内的第一数据平均压缩率;
基于每条第二数据的压缩率,确定第二时间段内的第二数据平均压缩率;
如果第一数据平均压缩率小于第二数据平均压缩率,且第二数据平均压缩率与第一数据平均压缩率的差值大于第一阈值,则确定对字典模板进行更新。
可选地,确定模块501主要用于:
获取每条第一数据的压缩率;
基于每条第一数据的压缩率,确定第一时间段内的数据平均压缩率;
如果第一时间段内的数据平均压缩率小于第二阈值,确定对字典模板进行更新。
可选地,更新模块502主要用于:
从待压缩的多条数据中提取多个字符串,每个字符串在待压缩的多条数据中的出现次数不小于第二阈值;
根据多个字符串和每个字符串在待压缩的多条数据中的出现次数,对字典模板进行更新。
可选地,待压缩的多条数据均为流式数据,流式数据包括元数据、日志数据中的至少一种。
综上,在本申请实施例中,根据当前时刻之前已经完成压缩的数据的压缩率来判断是否对字典模板进行更新,也即,本申请能够根据已经完成压缩的数据的压缩率判断该字典模板是否适用于当前待压缩的数据。在字典模板不适用的情况下,根据待压缩的数据,对字典模板进行自适应更新。这样,利用更新后的字典模板,对待压缩的数据进行压缩,能够保证待压缩的数据中的大部分字符串存在于更新后的字典模板中,从而提升数据的压缩率。
需要说明的是:上述实施例提供的数据压缩装置在压缩数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据压缩装置与数据压缩方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6提供了一种计算设备集群的结构示意图,如图6所示,计算设备集群60包括至少一台计算设备600,每台计算设备600包括总线601、处理器602、通信接口603和存储器604。处理器602、存储器604和通信接口603之间通过总线601通信。
总线601可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器602可以为中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
通信接口603用于与外部通信。例如,通信接口603可以用于和获取应用在运行环境中的环境变量和所述应用的源码包等等。
存储器604可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器604还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,硬盘驱动器(hard diskdrive,HDD)或固态驱动器(solid state drive,SSD)。
存储器604中存储有可执行代码,处理器602执行该可执行代码以执行前述应用改造方法。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述应用改造方法。
本申请实施例还提供了一种计算机程序产品。所述计算机程序产品包括一个或多个计算机指令。在计算设备上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。
所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机或数据中心进行传输。
所述计算机程序产品可以为一个软件安装包,在需要使用前述应用改造方法的任一方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
Claims (15)
1.一种数据压缩方法,其特征在于,所述方法包括:
根据一条或多条第一数据的压缩率,确定对字典模板进行更新,其中,所述第一数据指示在第一时间段内通过所述字典模板完成压缩的数据,所述第一时间段的结束时刻早于当前时刻;
根据待压缩的数据,对所述字典模板进行更新;
基于所述更新后的字典模板,对所述待压缩的数据进行压缩。
2.根据权利要求1所述的方法,其特征在于,所述根据一条或多条第一数据的压缩率,确定对字典模板进行更新,包括:
获取一条或多条第二数据的压缩率,其中,所述第二数据指示在第二时间段内通过字典模板完成压缩的数据,所述第二时间段的结束时刻早于所述第一时间段的起始时刻;
根据所述一条或多条第一数据的压缩率和所述一条或多条第二数据的压缩率,确定对所述字典模板进行更新。
3.根据权利要求2所述的方法,其特征在于,所述根据所述一条或多条第一数据的压缩率和所述一条或多条第二数据的压缩率,确定对所述字典模板进行更新,包括:
基于每条第一数据的压缩率,确定所述第一时间段内的第一数据平均压缩率;
基于每条第二数据的压缩率,确定所述第二时间段内的第二数据平均压缩率;
如果所述第一数据平均压缩率小于所述第二数据平均压缩率,且所述第二数据平均压缩率与所述第一数据平均压缩率的差值大于第一阈值,则确定对所述字典模板进行更新。
4.根据权利要求1所述的方法,其特征在于,所述根据第一压缩数据包括的一条或多条第一数据的压缩率,确定对字典模板进行更新,包括:
获取每条第一数据的压缩率;
基于每条第一数据的压缩率,确定所述第一时间段内的平均压缩率;
如果所述第一时间段内的数据平均压缩率小于第二阈值,确定对所述字典模板进行更新。
5.根据权利要求1-4任一所述的方法,其特征在于,所述根据所述待压缩的数据,对字典模板进行更新,包括:
从待压缩的多条数据中提取多个字符串,每个字符串在所述待压缩的多条数据中的出现次数不小于第三阈值;
根据所述多个字符串和每个字符串在所述待压缩的多条数据中的出现次数,对所述字典模板进行更新。
6.根据权利要求1-5任一所述的方法,其特征在于,所述待压缩的数据为流式数据,所述流式数据包括元数据、日志数据中的至少一种。
7.一种数据压缩装置,其特征在于,所述装置包括:
确定模块,用于根据一条或多条第一数据的压缩率,确定对字典模板进行更新,其中,所述第一数据指示在第一时间段内通过所述字典模板完成压缩的数据,所述第一时间段的结束时刻早于当前时刻;
更新模块,用于根据待压缩的数据,对所述字典模板进行更新;
压缩模块,用于基于所述更新后的所述字典模板,对所述待压缩的数据进行压缩。
8.根据权利要求7所述的装置,其特征在于,所述确定模块主要用于:
获取一条或多条第二数据的压缩率,其中,所述第二数据指示在第二时间段内通过字典模板完成压缩的数据,所述第二时间段的结束时刻早于所述第一时间段的起始时刻;
根据所述一条或多条第一数据的压缩率和所述一条或多条第二数据的压缩率,确定对所述字典模板进行更新。
9.根据权利要求8所述的装置,其特征在于,所述确定模块主要用于:
基于每条第一数据的压缩率,确定所述第一时间段内的第一数据平均压缩率;
基于每条第二数据的压缩率,确定所述第二时间段内的第二数据平均压缩率;
如果所述第一数据平均压缩率小于所述第二数据平均压缩率,且所述第二数据平均压缩率与所述第一数据平均压缩率的差值大于第一阈值,则确定对所述字典模板进行更新。
10.根据权利要求7所述的装置,其特征在于,所述确定模块主要用于:
获取每条第一数据的压缩率;
基于每条第一数据的压缩率,确定所述第一时间段内的数据平均压缩率;
如果所述第一时间段内的数据平均压缩率小于第二阈值,确定对所述字典模板进行更新。
11.根据权利要求7-10任一所述装置,其特征在于,所述更新模块主要用于:
从待压缩的多条数据中提取多个字符串,每个字符串在所述待压缩的多条数据中的出现次数不小于第三阈值;
根据所述多个字符串和每个字符串在所述待压缩的多条数据中的出现次数,对所述字典模板进行更新。
12.根据权利要求7-11任一所述的装置,其特征在于,所述待压缩的多条数据均为流式数据,所述流式数据包括元数据、日志数据中的至少一种。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行权利要求1-6任一所述的数据压缩方法。
14.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1-6任一所述的方法。
15.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算机设备集群运行时,使得所述计算机设备集群执行如权利要求的1-6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210108552.9A CN116566396A (zh) | 2022-01-28 | 2022-01-28 | 数据压缩方法、装置、存储介质、设备集群及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210108552.9A CN116566396A (zh) | 2022-01-28 | 2022-01-28 | 数据压缩方法、装置、存储介质、设备集群及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116566396A true CN116566396A (zh) | 2023-08-08 |
Family
ID=87498791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210108552.9A Pending CN116566396A (zh) | 2022-01-28 | 2022-01-28 | 数据压缩方法、装置、存储介质、设备集群及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116566396A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076388A (zh) * | 2023-10-12 | 2023-11-17 | 中科信工创新技术(北京)有限公司 | 一种文件处理的方法、装置、存储介质及电子设备 |
-
2022
- 2022-01-28 CN CN202210108552.9A patent/CN116566396A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076388A (zh) * | 2023-10-12 | 2023-11-17 | 中科信工创新技术(北京)有限公司 | 一种文件处理的方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956370B2 (en) | Techniques for improving storage space efficiency with variable compression size unit | |
US7719443B1 (en) | Compressing data in a continuous data protection environment | |
US7941409B2 (en) | Method and apparatus for managing data compression and integrity in a computer storage system | |
US9048862B2 (en) | Systems and methods for selecting data compression for storage data in a storage system | |
CN108427539B (zh) | 缓存设备数据的离线去重压缩方法、装置及可读存储介质 | |
EP3376393B1 (en) | Data storage method and apparatus | |
WO2020253406A1 (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
US11636089B2 (en) | Deferred reclamation of invalidated entries that are associated with a transaction log in a log-structured array | |
WO2014188528A1 (ja) | メモリ装置、計算機システム及びメモリ装置の制御方法 | |
US8189912B2 (en) | Efficient histogram storage | |
CN111309720A (zh) | 时序数据的存储、读取方法、装置、电子设备及存储介质 | |
WO2023279964A1 (zh) | 数据压缩方法、装置、计算设备及存储系统 | |
CN111083933B (zh) | 数据存储及获取方法和装置 | |
WO2021258749A1 (zh) | 一种写请求数据压缩方法、系统、终端及存储介质 | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
CN116566396A (zh) | 数据压缩方法、装置、存储介质、设备集群及程序产品 | |
WO2021012162A1 (zh) | 存储系统数据压缩的方法、装置、设备及可读存储介质 | |
US20240070120A1 (en) | Data processing method and apparatus | |
US10430115B2 (en) | System and method for optimizing multiple packaging operations in a storage system | |
WO2021082926A1 (zh) | 一种数据压缩的方法及装置 | |
WO2023193528A1 (zh) | 文件解压方法、装置、电子设备及计算机可读存储介质 | |
CN116760661A (zh) | 数据存储方法、装置、计算机设备、存储介质和程序产品 | |
WO2023050856A1 (zh) | 数据处理方法及存储系统 | |
WO2023020136A1 (zh) | 存储系统中的数据存储方法及装置 | |
US11341007B2 (en) | Storage system and storage control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |