CN110442557A - 数据压缩及解压缩方法、电子设备和计算机可读存储介质 - Google Patents
数据压缩及解压缩方法、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN110442557A CN110442557A CN201910704050.0A CN201910704050A CN110442557A CN 110442557 A CN110442557 A CN 110442557A CN 201910704050 A CN201910704050 A CN 201910704050A CN 110442557 A CN110442557 A CN 110442557A
- Authority
- CN
- China
- Prior art keywords
- data
- array
- indexes
- serial number
- compression
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例提供了一种数据压缩及解压缩方法、电子设备和计算机可读存储介质,通过获取待压缩数据的多个数据序列分别对应的第一索引数组,并根据第一索引数组中的参考值将各数据序列分为至少一个数据子序列,通过数据子序列中的数据和数据的序号获取该数据子序列的压缩拟合函数,并根据数据子序列中的数据、数据的序号和压缩拟合函数获取第二索引数组,采用预定的编码方式编码压缩所述第二索引数组,以确定所述待压缩数组对应的压缩文件,由此,本实施例可以支持压缩文件的随机访问,并且可以减小压缩文件所占的存储量。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种数据压缩及解压缩方法、电子设备和计算机可读存储介质。
背景技术
pfordelta倒排索引压缩算法是比较成熟且应用十分广泛的压缩算法,此算法可以对有序数据做压缩,使得有序数据所占用的磁盘空间大大减少。现在需要压缩的数据量越来越大,并且现有的pfordelta算法在访问数据的时候需要解压缩所有的数据,不支持随机访问。由此,更加高效的且可支持随机访问的压缩方法成为了迫切的需求。
发明内容
有鉴于此,本发明实施例提供了一种数据压缩及解压缩方法、电子设备和计算机可读存储介质,以减小压缩文件所占的存储量,并支持压缩文件的随机访问。
第一方面,本发明实施例提供一种数据压缩方法,所述方法包括:
将排序后的待压缩数组分为多个数据序列;
分别计算所述多个数据序列的第一索引数组,所述第一索引数组包括对应的数据序列中的相邻数据的差值;
对于各数据序列,确定对应的所述第一索引数组中的参考值,所述参考值大于或等于预定值;
根据所述参考值的位置将对应的数据序列分为多个数据子序列;
根据所述数据子序列中的数据和所述数据的序号获取对应的压缩拟合函数,所述序号用于表征对应的数据在所述待压缩数组中的位置;
计算所述数据子序列中的数据与对应的拟合数据的差值以获取第二索引数组,所述拟合数据用于表征对应的所述数据子序列中的数据的序号在所述压缩拟合函数上的函数值;
采用预定的编码方式编码压缩所述第二索引数组;
确定所述待压缩数组对应的压缩文件;所述压缩文件包括压缩后的第二索引数组和元数据信息,所述元数据信息包括所述压缩拟合函数的函参数。
可选的,所述方法还包括:
采用预定的编码方式编码压缩所述参考值对应的参考数据,所述压缩文件包括压缩后的所述参考值对应的参考数据。
可选的,所述压缩拟合函数为线性拟合函数,所述压缩拟合函数的函参数包括线性拟合函数的各阶系数以及对应的数据子序列的序号范围。
可选的,所述方法还包括:
获取所述数据子序列中的数据的序号在所述压缩拟合函数上的函数值;
对所述函数值取整以获取所述拟合数据。
可选的,对于数据类型为整数的数据子序列,采用预定的编码方式编码压缩所述第二索引数组包括:
根据所述第二索引数组获取对应的压缩参数;
根据所述压缩参数采用所述预定的编码方式对所述第二索引数组进行编码压缩。
可选的,基于加速处理器的多个线程并行处理所述多个数据序列。
第二方面,本发明实施例提供一种数据解压缩方法,所述方法包括:
获取压缩文件的解压缩请求;
响应于所述解压缩请求为对所述压缩文件的全部数据进行解压,从所述压缩文件中获取元数据信息以及至少一个第二索引数组,所述元数据信息包括各所述第二索引数组的压缩拟合函数的函参数;
对于各第二索引数组,根据所述压缩拟合函数的函参数确定所述第二索引数组的每个元素对应的拟合数据,所述拟合数据用于表征所述第二索引数据中的元素对应的序号在对应的压缩拟合函数上的函数值,所述序号为第二索引数据中的元素对应的原始数据在所述压缩文件中的位置;
根据所述拟合数据和所述第二索引数组确定对应的数据子序列;
根据各所述第二索引数组对应的数据子序列确定至少一个数据序列,合并所述至少一个数据序列以确定解压后的文件。
可选的,所述方法还包括:
从所述压缩文件中获取参考数组,所述参考数组包括至少一个参考数据,所述参考数据位于对应的相邻两个数据子序列之间;
将所述参考数组中的数据按照对应的序号插入所述至少一个数据序列对应的位置上以确定解压后的文件。
可选的,根据所述压缩拟合函数的函参数确定所述第二索引数组的每个元素对应的拟合数据包括:
根据所述压缩拟合函数的函参数确定对应的压缩拟合函数;
计算所述第二索引数组的每个元素的序号在对应的所述压缩拟合函数上的函数值;
对各所述函数值取整以确定所述第二索引数组的每个元素对应的拟合数据。
可选的,所述方法还包括:
响应于所述解压缩请求为随机访问,获取待访问的数据的序号;
从所述元数据信息中获取对应的压缩拟合函数的函参数;
根据所述函参数获取所述对应的压缩拟合函数;
获取所述序号在所述压缩拟合函数上的函数值;
根据所述函数值获取对应的拟合数据;
读取所述序号对应的第二索引数组中的元素;
根据所述拟合数据和所述序号对应的第二索引数组中的元素获取所述序号对应的数据。
可选的,所述方法还包括:
响应于所述序号对应的数据为参考数据,从压缩文件的参考数组中读取所述序号对应的数据。
第三方面,本发明实施例提供一种电子设备,包括存储器、CPU处理器和加速处理器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述CPU处理器或加速处理器执行以实现如本发明实施例第一方面所述的方法和/或本发明实施例第二方面所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行以实现如本发明实施例第一方面所述的方法和/或本发明实施例第二方面所述的方法。
本发明实施例根据数据的序号从数据库中获取对应的压缩拟合函数的元数据信息,并根据元数据信息获取压缩拟合函数,获取数据的序号在该压缩拟合函数上的函数值,根据该函数值和第二索引数组中对应的元素便可以获取该序号对应的原始数据。由此,本实施例的数据压缩方法可以支持随机访问。并且,本实施例根据数据与其序号在对应的压缩拟合函数上的函数值的差值获取第二索引数组,并根据每个数据子序列对应的第二索引数组中元素的最大值确定该数据子序列对应的压缩参数,根据压缩参数对第二索引数组进行编码压缩以获取压缩文件。由此,可以减小压缩文件所占的存储量。可选的,由于采用加速处理器多线程并行处理多个数据序列,因此可以提高数据压缩的效率。
附图说明
通过以下参照附图对本申请实施例的描述,本申请的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是本发明实施例的数据压缩方法的流程图;
图2是本发明实施例的压缩拟合函数的示意图;
图3是本发明实施例的数据压缩方法的过程示意图;
图4是本发明实施例的数据解压缩方法的流程图;
图5是本发明实施例的数据解压缩方法的过程示意图;
图6是本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在现有的pfordelta倒排索引压缩方法中,对排好序的数组,先取每个数据和它前面数据的差值得到索引数组(delta数组),认为delta数组中约90%的数据可以使用较小的位数framebit(压缩参数)来表示,这部分数据作为正常部分,剩余10%的不能用framebit位存储的数据作为异常值部分单独存储,然后对这90%的正常部分数据用framebit位来存储,从而达到对数组中90%的数据进行压缩的效果。解压缩的时候,将这90%的正常部分的数据恢复成原来的位数得到原始的正常值部分,最后将异常值填充进来,即可得到原始数据,最后对delta数组进行顺序累加得到原始的数组。由此,现有的pfordelta技术不支持随机访问。
本发明实施例提供了一种基于pfordelta倒排索引技术的压缩方法,可以实现数据的随机访问。
图1是本发明实施例的数据压缩方法的流程图。如图1所示,本发明实施例的数据压缩方法包括以下步骤:
步骤S100,将排序后的待压缩数组分为多个数据序列。在一种可选的实现方式中,待压缩数组为排序后的整数数组,本实施例以待压缩数组中的数据为从小到大排序为例进行说明。本实施例以待压缩数组为整数数组为例,应理解,待压缩数组也可以为排序后的其他数据类型的数组,例如浮点型数据的数组等。
在一种可选的实现方式中,本实施例为基于加速处理器(如GPU处理器)的pfordelta倒排索引压缩方法,因此,在步骤S100之前,本实施例的数据压缩方法还包括:将待压缩数组传输至加速处理器中。加速处理器根据当前可用的线程和待压缩数组的数据量将待压缩数组分为多个数据序列,并将当前可用的线程分为多个线程组。可选的,数据序列的数量与线程组的数量相同,每个线程组中至少包括一个线程,多个线程组并行处理对应的数据序列。
步骤S200,分别计算多个数据序列的第一索引数组。其中,第一索引数组(也即delta数组)包括对应的数据序列中的相邻数据的差值。可选的,对于从小到大排序的整数数组,第一索引数组包括每个数据和排在该数据前面的数据的差值。例如,对于一个数据序列{10,34,69,72,75,77,126,137,150,179},计算获得的第一索引数组为{10,24,35,3,3,2,49,11,13,29}。在一种可选的实现方式中,加速处理器中的线程组并行计算对应的数据序列的第一索引数组。
步骤S300,对于各数据序列,确定对应的第一索引数组中的参考值。其中,参考值大于或等于预定值,参考值对应的原始数据为参考数据。对于第一索引数组,假设根据分析得到的能存储下待压缩数组中90%数据的framebit为5,也即正常部分数据在第一索引数组中对应的最大二进制值不超过11111(也即最大值不超过31),则预定值为32。此时,第一索引数组中小于32的元素可以作为正常部分进行压缩,第一索引数组中大于或等于32的元素作为参考值,因此,在步骤S200的示例中,第一索引数组中的元素35、49作为参考值,其对应的原始数据69和126作为参考数据。
步骤S400,根据参考值的位置将对应的数据序列分为多个数据子序列。在步骤S200的示例中,根据参考值35、49的位置,可以将上述数据序列分为{10,34}、{69,72,75,77}、{126,137,150,179}三个数据子序列。应理解,上述划分方式仅仅是示例性的,其他方式,例如将上述序列分为{10,34,69}、{72,75,77,126}、{137,150,179}这三个数据子序列,或者,将上述序列分为{10,34}、{72,75,77}、{137,150,179}这三个数据子序列等,本实施例并不对此进行限制。
步骤S500,根据数据子序列中的数据和数据的序号获取对应的压缩拟合函数。其中,序号用于表征对应的数据在待压缩数组中的位置。假设在步骤S200的示例中,数据序列为待压缩数组的第一个数据序列,也即原始数据10的序号为0。本实施例以数据的序号为横坐标、数据值为纵坐标进行数据拟合,以获取对应的压缩拟合函数。在一种可选的实现方式中,压缩拟合函数为线性拟合函数,则压缩拟合函数的函参数包括线性拟合函数的各阶系数以及对应的数据子序列的序号范围。
步骤S600,计算数据子序列中的数据与对应的拟合数据的差值以获取第二索引数组(也即newdelta数组)。其中,拟合数据用于表征对应的数据子序列中的数据的序号在压缩拟合函数上的函数值。在一种可选的实现方式中,对于数据类型为整数的数据子序列,通过获取数据子序列中的数据的序号在该数据子序列对应的压缩拟合函数上的函数值,对该函数值取整以获取该数据子序列中的数据对应的拟合数据。容易理解,对于数据类型为浮点型的数据子序列,该函数值即为该数据子序列中的数据对应的拟合数据。
下面以压缩拟合函数为线性拟合函数为例进行说明。
图2是本发明实施例的压缩拟合函数的示意图。在一种可选的实现方式中,在压缩拟合函数为线性拟合函数时,可以通过数据子序列的首末数据及其序号获取对应的线性拟合函数。此时,线性拟合函数的函参数可以为数据子序列的首末数据及其序号,也可以为线性拟合函数的各阶系数以及数据子序列的序号范围。应理解,本实施例以一阶线性拟合函数为例进行描述,为了使得第二索引数组中的元素的值更小以进一步减小压缩文件的存储量,可以使用多个点的坐标进行拟合以获取高阶线性拟合函数。
如图2所示,以步骤S400中的数据子序列{69,72,75,77}为例进行说明,由上可知,该数据子序列的序号为2-5,对应的分别坐标为E1(2,69)、B(3,72)、C(4,75)、A(5,77)。本实施例以数据子序列的首末数据及其序号作线性拟合,也即,该数据子序列对应的线性拟合函数曲线的起点坐标为E1(2,69),终点坐标为A(5,77)。其中,起点坐标E1(2,69)的纵坐标为参考数据。由此,可得该数据子序列对应的线性拟合函数为y=8/3x+191/3。其中,将线性拟合函数的函参数:起点坐标E1(2,69)和终点坐标A(5,77)作为元数据信息,或者将线性拟合函数的函参数:线性拟合函数1阶系数为8/3、0阶系数为191/3以及对应的序号范围2-5作为元数据信息。
在本实施例中,获取横坐标为2、3、4、5时在线性拟合函数上的函数值分别为69、215/3、223/3、77。在一种可选的实现方式中,对上述函数值进行向上取整,获取对应的拟合数据69、72、75、77,计算数据子序列中的数据与对应的拟合数据的差值,获取的第二索引数组为{0,0,0,0}。在另一种可选的实现方式中,对上述函数值进行向下取整,获取对应的拟合数据为69、71、74、77,计算数据子序列中的数据与对应的拟合数据的差值,获取的第二索引数组为{0,1,1,0}。
步骤S700,采用预定的编码方式编码压缩第二索引数组。在一种可选的实现方式中,根据第二索引数组获取对应的压缩参数framebit,并根据压缩参数framebit采用预定的编码方式对第二索引数组进行编码压缩。若第二索引数组为{0,1,1,0},则对应的压缩参数framebit可以为1,也就是说,数据子序列{69,72,75,77}中的每个数据仅占用1比特位即可,也即压缩后的数据子序列为{0 1 1 0},共占用四个比特位,这减小了压缩文件所占的存储量。若另一个第二索引数组为{0,2,4,0},则对应的压缩参数framebit可以为3,对应的压缩后的数据子序列为{000 010 100 000}。由此,本实施例根据数据子序列对应的第二索引数组中元素的最大值确定该数据子序列对应的压缩参数,进一步减小了压缩文件所占的存储量。
步骤S800,确定并存储待压缩数组对应的压缩文件。其中,压缩文件包括压缩后的第二索引数组和元数据信息,元数据信息包括各数据子序列对应的压缩拟合函数的函参数。
在一种可选的实现方式中,在本实施例中的数据压缩方法还包括:
采用预定的编码方式编码压缩参考值对应的参考数据。也即,待压缩数组对应的压缩文件还包括压缩后的参考值对应的参考数据。在本实施例中,在根据参考值将数据序列分为多个数据子序列时,各数据子序列不包括参考值对应的参考数据,或者参考数据与其对应的拟合数据的差值相对较大时,将参数数据进行单独压缩存储。例如,将上述待压缩数组中的参考数据69和126进行单独存储。由此,可以进一步减小压缩文件所占的存储量。
本实施例可以根据数据的序号从数据库中获取对应的压缩拟合函数的元数据信息,并根据元数据信息获取压缩拟合函数,获取数据的序号在该压缩拟合函数上的函数值,根据该函数值和第二索引数组中对应的元素便可以获取该序号对应的原始数据。由此,本实施例的数据压缩方法可以支持随机访问。并且,本实施例根据数据与其序号在对应的压缩拟合函数上的函数值的差值获取第二索引数组,并根据每个数据子序列对应的第二索引数组中元素的最大值确定该数据子序列对应的压缩参数framebit,根据压缩参数framebit对第二索引数组进行编码压缩以获取压缩文件。由此,可以减小压缩文件所占的存储量。可选的,由于采用加速处理器多线程并行处理多个数据序列,因此可以提高数据压缩的效率。
图3是本发明实施例的数据压缩方法的过程示意图。本发明实施例采用基于GPU处理器的数据压缩方法,如图3所示,CPU处理器将待压缩数组A通过总线传输至GPU处理器中。在GPU处理器中,将待压缩数据A分为多个数据序列S1-S3,多线程并行处理数据序列S1-S3。
以数据序列S1为例,如图3所示,数据序列S1为{10,34,69,72,75,77,126,137,150,179},计算数据序列S1对应的delta数组(也即第一索引数组)为{10,24,35,3,3,2,49,11,13,29}。其中,delta数组对应的预定值为32,则delta数组中的元素35和49作为参考值,数据序列S1中的数据69和126作为参考数据。在GPU处理器中根据参考值35和49的位置将数据序列S1分为多个数据子序列S11-S13。其中,数据子序列S11为{10,34},数据子序列S12为{69,72,75,77},数据子序列S13{126,137,150,179}。之后,根据数据子序列中的数据和数据的序号获取对应的压缩拟合函数。以数据子序列S12为例,其中,数据的序号为2-5。数据子序列中的首末数据及其序号进行拟合以获取一个一维线性拟合函数y=8/3x+191/3,获取横坐标为2、3、4、5时在线性拟合函数上的函数值分别为69、215/3、223/3、77。在一种可选的实现方式中,对上述函数值进行向上取整,获取对应的拟合数据69、72、75、77,计算数据子序列中的数据与对应的拟合数据的差值,获取的newdelta数组(也即第二索引数组)为{0,0,0,0}。由此,压缩参数framebit可以取值为1,也即,数据子序列S12中的数据经过压缩后所占的存储量为1个比特位,将newdelta数组基于压缩参数framebit编码后获取压缩后的数据子序列S12'。
本实施例可以根据数据的序号从数据库中获取对应的压缩拟合函数的元数据信息,并根据元数据信息获取压缩拟合函数,获取数据的序号在该压缩拟合函数上的函数值,根据该函数值和第二索引数组中对应的元素便可以获取该序号对应的原始数据。由此,本实施例的数据压缩方法可以支持随机访问。并且,由于newdelta数组中的元素值较小,且每个newdelta数组具有对应的压缩参数framebit,因此,本实施例可以减小压缩文件所占的存储量。同时,采用GPU处理器对待压缩数组的多个数据序列进行并行处理,提高了数据压缩效率。
图4是本发明实施例的数据解压缩方法的流程图。如图4所示,本实施例的数据解压缩方法包括以下步骤:
步骤S1,获取压缩文件的解压缩请求。
步骤S2,判断上述解压缩请求是否为对压缩文件的全部数据进行解压。在解压缩请求为对压缩文件的全部数据进行解压时,执行步骤S3。在解压缩请求为随机访问,也即解压缩请求不为对压缩文件的全部数据进行解压时,执行步骤S7。
步骤S3,在解压缩请求为对压缩文件的全部数据进行解压时,从压缩文件中获取至少一个第二索引数组和对应的元数据信息。其中,元数据信息包括各第二索引数组的压缩拟合函数的函参数。
步骤S4,对于各第二索引数组,根据元数据信息确定第二索引数组的每个元素对应的拟合数据。其中,拟合数据用于表征第二索引数据中的元素的序号在对应的压缩拟合函数上的函数值。序号为第二索引数据中的元素对应的原始数据在压缩文件中的位置。
在一种可选的实现方式中,对于数据类型为整数的数据子序列,步骤S4包括:
根据压缩拟合函数的函参数确定对应的压缩拟合函数,并计算第二索引数组的每个元素的序号在对应的所述压缩拟合函数上的函数值,然后对各函数值取整以确定第二索引数组的每个元素对应的拟合数据。容易理解,对于数据类型为浮点型的数据子序列,不需要对获取的函数值进行取整操作。
步骤S5,根据拟合数据和第二索引数组确定对应的数据子序列。
步骤S6,根据各第二索引数组对应的数据子序列确定至少一个数据序列,合并至少一个数据序列以确定解压后的文件。
在一种可选的实现方式中,本实施例的数据解压缩方法还包括:
从压缩文件中获取参考数组,参考数组包括至少一个参考数据,参考数据位于对应的相邻两个数据子序列之间。
将参考数组中的数据按照对应的序号插入至少一个数据序列对应的位置上以确定解压后的文件。
图5是本发明实施例的数据解压缩方法的过程示意图。本实施例以参考数据单独压缩,非参考数据基于压缩拟合函数进行压缩为例进行说明。应理解,下述举例数据及压缩拟合函数是为了便于理解,其并不代表真实压缩数据及其对应的压缩拟合函数。
如图5所示,本实施例以压缩文件X为例进行说明,其中,将压缩文件X传输至加速处理器(例如GPU处理器中),在加速处理器中,将压缩文件X分为多个压缩数据块,多线程并行处理多个压缩数据块以获取解压后的文件。以其中一个压缩数据块X1为例,如图5所示,根据压缩数据块中的元素的序号将压缩数据块X1分为多个子压缩数据块X11-X13。其中,子压缩数据块X11对应的压缩参数为3,子压缩数据块X12对应的压缩参数为2,子压缩数据块X13对应的压缩参数为1。则根据子压缩数据块X11-X13分别获取的对应的第二索引数组分别为newdelta1{2,3,4,5}、newdelta1{0,1,2}、newdelta3{1,0,0,1}。
在本实施例中,每个子压缩数据块具有对应的压缩拟合函数,根据子压缩数据块X11-X13的序号范围获取其分别对应的压缩拟合函数。假设子压缩数据块X11对应的压缩拟合函数为y1=5/3x+128/3,子压缩数据块X12对应的压缩拟合函数为y2=7/4x+321/4,子压缩数据块X13对应的压缩拟合函数为y3=8/5x+651/5。由此,子压缩数据块X11对应的序号范围0-3在压缩拟合函数为y1上的函数值分别为{128/3,133/3,46,143/3}。以向上取整为例,子压缩数据块X11对应的拟合数据m1为{43,45,46,48}。子压缩数据块X12对应的序号范围5-7在压缩拟合函数为y2上的函数值分别为{89,363/4,370/4}。以向上取整为例,子压缩数据块X12对应的拟合数据m2为{89,91,93}。子压缩数据块X13对应的序号范围9-12在压缩拟合函数为y3上的函数值分别为{723/5,731/5,739/5,747/5}。以向上取整为例,子压缩数据块X12对应的拟合数据m3为{145,147,148,150}。
根据第二索引数组newdelta1{2,3,4,5}、newdelta2{0,1,2}、newdelta3{1,0,0,1}和拟合数据m1{43,45,46,48}、m2{89,91,93}、m3{145,147,148,150}获取对应的数据子序列分别为X11'{45,48,50,53}、X12'{89,92,95}、X13'{146,147,148,151}。
从压缩文件中获取参考数组Y1,参考数组Y1中包括序号为4和8的参考数据87和135。由此,可以将参考数组Y1中的参考数据基于对应的序号插入数据子序列X11'、X12'、X13'之间,以获取对应的数据序列X1',将压缩文件X的多个上述数据块按上述处理方法进行处理以获取多个数据序列,合并多个数据序列以获取解压后的文件。
步骤S7,在解压缩请求为随机访问时,获取待访问的数据的序号。
步骤S8,从元数据信息中获取对应的压缩拟合函数的函参数。
步骤S9,根据该压缩拟合函数的函参数获取对应的压缩拟合函数。
步骤S10,获取待访问数据的序号在该压缩拟合函数上的函数值。
步骤S11,根据该函数值获取对应的拟合数据。
步骤S12,读取待访问的数据的序号对应的第二索引数组中的元素。
步骤S13,根据拟合数据和待访问的数据的序号对应的第二索引数组中的元素获取该序号对应的数据。
在本实施例中,由于元数据信息包括压缩拟合函数的函参数,并且在压缩拟合函数为线性拟合函数时,压缩拟合函数的函参数包括序号范围以及线性拟合函数的各阶系数。由此,可以根据待访问的数据的序号获取对应的压缩拟合函数的函参数,并根据函参数获取对应的压缩拟合函数。例如,在如图5所示的示例中,假设待访问的数据的序号为6,则其对应的压缩拟合函数为y2=7/4x+321/4。该待访问的数据的序号6在压缩拟合函数为y2上的函数值为363/4,以向上取整为例,待访问数据对应的拟合数据为91。如图5所示,根据待访问的数据的序号6读取待访问的数据的序号对应的第二索引数组中的元素为1,则待访问数据为92。
在一种可选的实现方式中,本实施例的数据解压方法还包括:
响应于待访问数据的序号对应的数据为参考数据,从压缩文件的参考数组中读取所述序号对应的数据。例如,如图5所示,待访问数据的序号为8,则从参考数组Y1中获取对应的待访问数据135。
本实施例可以根据数据的序号从数据库中获取对应的压缩拟合函数的元数据信息,并根据元数据信息获取压缩拟合函数,获取数据的序号在该压缩拟合函数上的函数值,根据该函数值和第二索引数组中对应的元素便可以获取该序号对应的原始数据。由此,本实施例的数据压缩方法可以支持随机访问。同时,采用GPU处理器对压缩文件进行并行处理,提高了数据解压缩效率。
图6是本发明实施例的电子设备的示意图。电子设备采用异构系统架构,本实施例的电子设备6以采用CPU+GPU异构系统架构为例进行说明。如图6所示,电子设备6:至少包括一个CPU处理器61至少一个GPU处理器62;以及,与CPU处理器61和GPU处理器62通信连接的存储器63;以及,与扫描装置通信连接的通信组件64,通信组件64在CPU处理器61或GPU处理器62的控制下接收和发送数据;其中,存储器63存储有可被至少一个GPU处理器62执行的指令,指令被至少一个GPU处理器62执行以实现上述任一实施方式的数据压缩方法以及数据解压缩方法。其中,CPU处理器将待压缩数组或压缩文件通过总线传输至GPU处理器中,以使得GPU处理器多线程并行处理待压缩数组或压缩文件,从而提高数据压缩和解压缩效率。
具体地,电子设备6包括:一个或多个CPU处理器61、一个或多个GPU处理器62以及存储器63,图6中以包括一个CPU处理器61和一个GPU处理器62为例,GPU处理器用于执行本实施例中的数据压缩方法和/或数据解压缩方法的至少一个步骤。CPU处理器61、GPU处理器62和存储器63可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器63作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。GPU处理器62通过运行存储在存储器63中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现本发明实施例的数据压缩方法和/或数据解压缩方法。
存储器63可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器63可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器63可选包括相对于CPU处理器61和/或GPU处理器62远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器63存储有一个或者多个单元,当一个或者多个单元被CPU处理器61或GPU处理器62执行时,执行上述任意方法实施方式中的数据压缩方法和/或数据解压缩方法。
本发明的另一个实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本发明实施方式所提供的方法。
以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域技术人员而言,本申请可以有各种改动和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种数据压缩方法,其特征在于,所述方法包括:
将排序后的待压缩数组分为多个数据序列;
分别计算所述多个数据序列的第一索引数组,所述第一索引数组包括对应的数据序列中的相邻数据的差值;
对于各数据序列,确定对应的所述第一索引数组中的参考值,所述参考值大于或等于预定值;
根据所述参考值的位置将对应的数据序列分为多个数据子序列;
根据所述数据子序列中的数据和所述数据的序号获取对应的压缩拟合函数,所述序号用于表征对应的数据在所述待压缩数组中的位置;
计算所述数据子序列中的数据与对应的拟合数据的差值以获取第二索引数组,所述拟合数据用于表征对应的所述数据子序列中的数据的序号在所述压缩拟合函数上的函数值;
采用预定的编码方式编码压缩所述第二索引数组;
确定并存储所述待压缩数组对应的压缩文件;所述压缩文件包括压缩后的第二索引数组和元数据信息,所述元数据信息包括所述压缩拟合函数的函参数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采用预定的编码方式编码压缩所述参考值对应的参考数据,所述压缩文件包括压缩后的所述参考值对应的参考数据。
3.根据权利要求1所述的方法,其特征在于,所述压缩拟合函数为线性拟合函数,所述压缩拟合函数的函参数包括线性拟合函数的各阶系数以及对应的数据子序列的序号范围。
4.根据权利要求1所述的方法,其特征在于,对于数据类型为整数的数据子序列,所述方法还包括:
获取所述数据子序列中的数据的序号在所述压缩拟合函数上的函数值;
对所述函数值取整以获取所述拟合数据。
5.根据权利要求1所述的方法,其特征在于,采用预定的编码方式编码压缩所述第二索引数组包括:
根据所述第二索引数组获取对应的压缩参数;
根据所述压缩参数采用所述预定的编码方式对所述第二索引数组进行编码压缩。
6.根据权利要求1所述的方法,其特征在于,基于加速处理器的多个线程并行处理所述多个数据序列。
7.一种数据解压缩方法,其特征在于,所述方法包括:
获取压缩文件的解压缩请求;
响应于所述解压缩请求为对所述压缩文件的全部数据进行解压,从所述压缩文件中获取元数据信息以及至少一个第二索引数组,所述元数据信息包括各所述第二索引数组的压缩拟合函数的函参数;
对于各第二索引数组,根据所述压缩拟合函数的函参数确定所述第二索引数组的每个元素对应的拟合数据,所述拟合数据用于表征所述第二索引数据中的元素对应的序号在对应的压缩拟合函数上的函数值,所述序号为第二索引数据中的元素对应的原始数据在所述压缩文件中的位置;
根据所述拟合数据和所述第二索引数组确定对应的数据子序列;
根据各所述第二索引数组对应的数据子序列确定至少一个数据序列,合并所述至少一个数据序列以确定解压后的文件。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
从所述压缩文件中获取参考数组,所述参考数组包括至少一个参考数据,所述参考数据位于对应的相邻两个数据子序列之间;
将所述参考数组中的数据按照对应的序号插入所述至少一个数据序列对应的位置上以确定解压后的文件。
9.根据权利要求7所述的方法,其特征在于,根据所述压缩拟合函数的函参数确定所述第二索引数组的每个元素对应的拟合数据包括:
根据所述压缩拟合函数的函参数确定对应的压缩拟合函数;
计算所述第二索引数组的每个元素的序号在对应的所述压缩拟合函数上的函数值;
对各所述函数值取整以确定所述第二索引数组的每个元素对应的拟合数据。
10.根据权利要求7所述的方法,其特征在于,所述方法还包括:
响应于所述解压缩请求为随机访问,获取待访问的数据的序号;
从所述元数据信息中获取对应的压缩拟合函数的函参数;
根据所述函参数获取所述对应的压缩拟合函数;
获取所述序号在所述压缩拟合函数上的函数值;
根据所述函数值获取对应的拟合数据;
读取所述序号对应的第二索引数组中的元素;
根据所述拟合数据和所述序号对应的第二索引数组中的元素获取所述序号对应的数据。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
响应于所述序号对应的数据为参考数据,从压缩文件的参考数组中读取所述序号对应的数据。
12.一种电子设备,包括存储器、CPU处理器和加速处理器,其特征在于,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述CPU处理器或加速处理器执行以实现如权利要求1-11中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行以实现如权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910704050.0A CN110442557B (zh) | 2019-07-31 | 2019-07-31 | 数据压缩及解压缩方法、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910704050.0A CN110442557B (zh) | 2019-07-31 | 2019-07-31 | 数据压缩及解压缩方法、电子设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442557A true CN110442557A (zh) | 2019-11-12 |
CN110442557B CN110442557B (zh) | 2021-09-28 |
Family
ID=68432606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910704050.0A Active CN110442557B (zh) | 2019-07-31 | 2019-07-31 | 数据压缩及解压缩方法、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442557B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113162960A (zh) * | 2020-01-23 | 2021-07-23 | 华为技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN114610952A (zh) * | 2022-02-28 | 2022-06-10 | 广州鼎甲计算机科技有限公司 | 一种有效数据索引方法、系统、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484476A (zh) * | 2014-12-31 | 2015-04-01 | 中国石油天然气股份有限公司 | 一种抽油机示功图数据压缩存储方法及装置 |
CN106649832A (zh) * | 2016-12-29 | 2017-05-10 | 北京奇艺世纪科技有限公司 | 一种基于缺失数据的预估方法及装置 |
CN109598093A (zh) * | 2018-12-29 | 2019-04-09 | 北京化工大学 | 基于拟合窗函数的地震矢量波场数值模拟方法及系统 |
-
2019
- 2019-07-31 CN CN201910704050.0A patent/CN110442557B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484476A (zh) * | 2014-12-31 | 2015-04-01 | 中国石油天然气股份有限公司 | 一种抽油机示功图数据压缩存储方法及装置 |
CN106649832A (zh) * | 2016-12-29 | 2017-05-10 | 北京奇艺世纪科技有限公司 | 一种基于缺失数据的预估方法及装置 |
CN109598093A (zh) * | 2018-12-29 | 2019-04-09 | 北京化工大学 | 基于拟合窗函数的地震矢量波场数值模拟方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113162960A (zh) * | 2020-01-23 | 2021-07-23 | 华为技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN114610952A (zh) * | 2022-02-28 | 2022-06-10 | 广州鼎甲计算机科技有限公司 | 一种有效数据索引方法、系统、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110442557B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101276367B (zh) | 用于在数据存储器上数字地存储数据的方法 | |
KR101638594B1 (ko) | Dna 서열 검색 방법 및 장치 | |
CN103329112B (zh) | 用于减少页面错误发生时压缩页面加载时间的方法和装置 | |
CN105027071B (zh) | 管理对存储数据单元的操作 | |
CN105009067A (zh) | 管理对存储数据单元的操作 | |
CN106874348A (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN110442557A (zh) | 数据压缩及解压缩方法、电子设备和计算机可读存储介质 | |
CN105009068B (zh) | 管理对存储数据单元的操作 | |
EP3173947B1 (en) | Paged inverted index | |
CN115438114B (zh) | 存储格式转换方法、系统、装置、电子设备及存储介质 | |
RU2633178C2 (ru) | Способ и система базы данных для индексирования ссылок на документы базы данных | |
CN111475402B (zh) | 程序功能的测试方法及相关装置 | |
CN111507430B (zh) | 基于矩阵乘法的特征编码方法、装置、设备及介质 | |
CN110413580A (zh) | 针对fpga配置码流的压缩方法、系统、装置 | |
CN108832935B (zh) | 一种rle算法实现方法、系统、设备及计算机存储介质 | |
KR20180014124A (ko) | 정보 처리 장치 및 데이터 관리 방법 | |
CN111831622B (zh) | 数据索引生成方法、装置、电子设备和可读存储介质 | |
CN113781658B (zh) | 一种流式处理3d模型数据的方法及装置 | |
CN110928902A (zh) | 针对分页获取云平台终端数据的查询方法和系统 | |
WO2018082245A1 (zh) | 栅格数据聚合方法和装置、栅格数据解耦方法和装置及系统 | |
CN111370070B (zh) | 一种针对大数据基因测序文件的压缩处理方法 | |
CN110797082A (zh) | 基因测序数据的存储读取方法及系统 | |
CN114513209A (zh) | 数据压缩方法、装置、设备及存储介质 | |
CN113407786A (zh) | 基于欧氏距离的度量空间索引构建方法、装置及相关设备 | |
US10404276B1 (en) | Stable variable-length order-preserving encoding scheme |
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 |