CN116737716A - 时序数据压缩方法及装置 - Google Patents
时序数据压缩方法及装置 Download PDFInfo
- Publication number
- CN116737716A CN116737716A CN202310538670.8A CN202310538670A CN116737716A CN 116737716 A CN116737716 A CN 116737716A CN 202310538670 A CN202310538670 A CN 202310538670A CN 116737716 A CN116737716 A CN 116737716A
- Authority
- CN
- China
- Prior art keywords
- data
- dictionary
- exclusive
- dimensional
- dimensional dictionary
- 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 47
- 238000013144 data compression Methods 0.000 title claims abstract description 43
- 238000007906 compression Methods 0.000 claims abstract description 45
- 230000006835 compression Effects 0.000 claims abstract description 45
- 238000004590 computer program Methods 0.000 claims description 27
- 238000004519 manufacturing process Methods 0.000 claims description 21
- 238000012163 sequencing technique Methods 0.000 claims description 11
- 230000009191 jumping Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 11
- 238000005070 sampling Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 229910000831 Steel Inorganic materials 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000010959 steel Substances 0.000 description 1
- 239000002436 steel type Substances 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种时序数据压缩方法及装置,涉及数据压缩技术领域,其中该方法包括:根据时序数据创建一维词典;对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;合并压缩后的一维词典与压缩索引序列,得到时序数据压缩后的压缩数据。本发明可以在不损失精度的情况下,进一步提高数据的压缩比,以节省存储空间,实现高效存储。
Description
技术领域
本发明涉及数据压缩技术领域,尤其涉及时序数据压缩方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
为了实现对时序数据的高效存储,需要对时序数据进行压缩。目前,对于整型数据的无损压缩,已有相对成熟且高效的通用压缩算法,如霍夫曼编码、算术编码、词典编码、游程编码、Simple8b算法或组合算法等。但对于浮点型数据的无损压缩,成熟的算法较少,相对流行的是Facebook提出的XOR算法,用于其公司的Gorilla时序库中,排名第一的时序数据库Influxdb在压缩浮点型数据时也使用了该算法。但时序库的压缩算法,是要满足各种时序数据的存储,也即是说,该时序数据可能包含浮点型数据的所有表示范围,时序数据库只能根据时序数据本身的时序递增、相邻数据偏差不大的特点做通用的数据压缩算法。但时序究竟如何递增,是等间隔还是不等间隔,数据偏差究竟多大,是1.0还是1000.0,这些信息都无法事先知道,因此,其压缩比必然受到限制。
发明内容
本发明实施例提供一种时序数据压缩方法,用以在不损失精度的情况下,进一步提高数据的压缩比,以节省存储空间,实现高效存储,该方法包括:
根据时序数据创建一维词典;
对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;
对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;
根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;
合并压缩后的一维词典与压缩索引序列,得到时序数据压缩后的压缩数据。
本发明实施例还提供一种时序数据压缩装置,用以在不损失精度的情况下,进一步提高数据的压缩比,以节省存储空间,实现高效存储,该装置包括:
词典创建模块,用于根据时序数据创建一维词典;
词典索引创建模块,用于对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;
词典压缩模块,用于对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;
索引压缩模块,用于根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;
合并模块,用于合并压缩后的一维词典与压缩后的一维词典索引序列,得到时序数据压缩后的压缩数据。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述时序数据压缩方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述时序数据压缩方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述时序数据压缩方法。
本发明实施例中,根据时序数据创建一维词典;对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;合并压缩后的一维词典与压缩索引序列,得到时序数据压缩后的压缩数据。这样,可以在不损失精度的情况下,进一步提高数据的压缩比,以节省存储空间,实现高效存储。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种时序数据压缩方法的流程图;
图2为本发明实施例中提供的一种根据时序数据创建一维词典的方法流程图;
图3为本发明实施例中提供的一种预处理时序数据曲线TS1的示例图;
图4为本发明实施例中提供的一种对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典的方法流程图;
图5为本发明实施例中提供的一种前导0、有意义位串、尾随0的示例图;
图6为本发明实施例中提供的一种从第二个排序数据开始,将每个排序数据与前一个排序数据的异或结果加入到二进制串中的方法流程图;
图7为本发明实施例中提供的一种用二进制串对一维词典的编码方式进行编码的方法流程图;
图8为本发明实施例中提供的一种压缩一维词典的索引序列,得到压缩后的一维词典索引的方法流程图;
图9为本发明实施例中提供的一种时序数据压缩装置的示意图;
图10为本发明实施例中提供的一种计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
经研究发现,为了实现对时序数据的高效存储,需要对时序数据进行压缩。目前,对于整型数据的无损压缩,已有相对成熟且高效的通用压缩算法,如霍夫曼编码、算术编码、词典编码、游程编码、Simple8b算法或组合算法等。但对于浮点型数据的无损压缩,成熟的算法较少,相对流行的是Facebook提出的XOR算法,用于其公司的Gorilla时序库中,排名第一的时序数据库Influxdb在压缩浮点型数据时也使用了该算法。但时序库的压缩算法,是要满足各种时序数据的存储,也即是说,该时序数据可能包含浮点型数据的所有表示范围,时序数据库只能根据时序数据本身的时序递增、相邻数据偏差不大的特点做通用的数据压缩算法。但时序究竟如何递增,是等间隔还是不等间隔,数据偏差究竟多大,是1.0还是1000.0,这些信息都无法事先知道,因此,其压缩比必然受到限制。
并且,经进一步研究发现,工业过程时序数据,表征的是生产过程数据,通常为等采样间隔,并且采样间隔短,通常为毫秒级别,时序数据有明确的物理含义,相邻采样的最大变化量可预测,最重要的是,由于生产过程具有周期性和确定性,导致时序数据具有明显的周期性和固定模式,这些特点为进一步提高压缩比提供了有效保障。
针对上述研究,如图1所示,本发明实施例提供一种时序数据压缩方法,包括:
S101:根据时序数据创建一维词典;
S102:对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;
S103:对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;
S104:根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;
S105:合并压缩后的一维词典与压缩索引序列,得到时序数据压缩后的压缩数据。
本发明实施例中,根据时序数据创建一维词典;对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;合并压缩后的一维词典与压缩索引序列,得到时序数据压缩后的压缩数据。这样,可以在不损失精度的情况下,进一步提高数据的压缩比,以节省存储空间,实现高效存储。
下面对上述时序数据压缩方法加以详细说明。
针对上述S101,时序数据包括:一维时序数据或多维时序数据。
如图2所示,为本发明实施例提供的一种根据时序数据创建一维词典的方法流程图,包括:
S201:获取时序数据序列。
例如获取多个时序数据序列TS1、TS2……TSn,其中,时序数据序列中包含代表不同生产工况的标识数据。
其中,标识数据是时序数据中的数据,时序数据可以反应生产状况,如,钢种ID不同,则代表生产不同品种钢,此时生产状况发生变化。
本发明一实施例中,标识数据包括下述至少一种:生产产品规格、生产班次、生产设定参数等。
此外,时序数据序列例如可来自实时数据流、数据缓存池、数据文件、数据库等。时序数据序列例如包含停止创建词典标志的序列。
S202:依次判断时序数据序列中的数据是否在一维词典中存在。
例如,对序列TS1,其数据为Dt1、Dt2、……Dtm,则依次判断Dti(i=1~m)是否在词典中存在,对于多维时序数据,依次判断各维序列的数据即可。
S203:若不存在,则将该数据放入词典。
S204:若存在,则不操作,继续下一个数据判断,直至满足停止创建词典条件时,停止创建词典,记录词典实际大小。
其中,所述条件至少包括词典实际大小大于预设词典大小和/或代表不同生产工况的标识数据发生改变。
例如,序列TS1为32位浮点型(如图3所示),序列长度为90000点,数据序列为0.361033、0.361033、……、0.360325、0.360325、0.360325、0.35891、0.35891、0.35714、……,则词典中数据为0.361033、0.360325、0.35891、0.35714、……。TS1在90000点时,发生换班,即班次发生改变,因此,停止词典创建,此时词典实际大小为Da=1147。
针对上述S102,对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引,例如包括:对一维词典内数据进行排序,得到第一排序结果;根据第一排序结果,为一维词典内数据分配整数索引值,得到一维词典索引。
此处,排序可以是任何有规律的排序,如:从小到大排序、从大到小排序或者间隔抽样排序等。例如,对一维词典进行从小到大排序,一维词典内数据排列变为……0.35714…0.35891…0.360325…0.361033…。
另外,根据第一排序结果,为一维词典内数据分配整数索引值,索引的顺序可以是任何有规律的排序,如:从小到大索引、从大到小索引、或者间隔索引等。目的是根据索引做相邻元素差值计算后,可以减少不同差值的数量,便于后续压缩,提高压缩比。例如,根据第一排序结果,为一维词典内数据建立从小到大的索引,依次为0、1、2、……。
针对上述S103,如图4所示,为本发明实施例提供的一种对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典的方法流程图,包括:
S401:对一维词典内的数据进行遍历异或排序,得到第二排序结果。
本发明一实施例中,对一维词典内的数据进行遍历异或排序,得到第二排序结果,包括:
步骤1:取一维词典内的任一个数据作为当前排序数据。
步骤2:将当前排序数据与一维词典内的所有未排序数据按位异或,得到中间异或结果,在一维词典中还存在未排序数据时,执行步骤3,在一维词典中不存在还未排序的数据时,跳转至步骤4。
步骤3:将中间异或结果中前导0个数与尾随0个数之和最大的数据作为当前排序数据,返回步骤2。
此处,如图5所示,前导0个数为用二进制位串表示的数据从左边数连续为0的位的个数,尾随0为用二进制位串表示的数据从右边数连续为0的位的个数。
步骤4:停止执行,根据每一排序数据得到第二排序结果。
例如,取一维词典中第1个数据0.351446作为第一排序数据;将第一排序数据与词典中所有其它数据按位异或,得到中间异或结果;中间异或结果中前导0个数和尾随0个数之和最大的数据作为第二排序数据;本实施例中将0.351446(二进制表示0b00111110101100111111000010111101)与一维词典中其它所有数据按位异或,其中0.351518(二进制表示0b00111110101100111111101000100100)和0.351446的中间异或结果的前导0个数和尾随0个数之和最大,为20,因此0.351518作为第二排序数据;将第二排序数据与词典中除第一排序数据外的所有其它数据按位异或,中间异或结果中前导0个数和尾随0个数之和最大的数据作为第三排序数据;本实施例中是0.373338(二进制表示0b00111110101111110010011000100100)和0.351518的异或结果的前导0和尾随0数量之和最大,为22,因此0.373338作为第三排序数据,以此类推,将第i排序数据与词典中未排序的剩余数据按位异或,异或结果中前导0个数和尾随0个数之和最大的数据作为第i+1排序数据,直到所有数据排序完毕。
S402:根据第二排序结果,对一维词典内的相邻数据进行异或操作,得到相邻异或结果。
由于第二排序结果已经是经过按位异或的最大前导0个数和尾随0个数之和最大排序的,因此,可以减小有意义位串的长度,提高压缩比。
S403:用二进制串对相邻异或结果进行编码。
本发明一实施例中,用二进制串对相邻异或结果进行编码,例如包括:将第一个排序数据直接转换为二进制串;从第二个排序数据开始,将每个排序数据与前一个排序数据的异或结果加入到二进制串中。
具体的,如图6所示,为本发明实施例提供的一种从第二个排序数据开始,将每个排序数据与前一个排序数据的异或结果加入到二进制串中的方法流程图,包括:从第二个排序数据开始,针对每个排序数据与前一个排序数据的异或结果:
S601:根据时序数据的实际二进制位长度确定第一位数。
具体的,第一位数N的大小由时序数据的实际二进制位长度确定,若长度为L位,则有2的N+1次方等于L。如,float类型数据长度为32位,2的5次方等于32,则N=4。本实施例中TS1为32位浮点型时间序列,因此N=4。
S602:用第一位数的二进制编码代表异或结果的前导0数量或尾随0数量。
本发明一实施例中,用第一位数的二进制编码代表异或结果的前导0数量或尾随0数量,包括:统计从第二个排序数据开始,每个排序数据与前一个排序数据的异或结果中的前导0总数、后导0总数;在前导0总数小于后导0总数时,用第一位数的二进制编码代表前导0数量;在前导0总数不小于后导0总数时,用第一位数的二进制编码代表尾随0数量;若第一位数的二进制表示最大值小于实际需要代表的前导0或尾随0数量,则将多余的0并入有意义位串中。
例如,统计所有异或结果的前导0总数SNL和后导0总数SNT,当SNL<SNT时,用N位(即第一位数)二进制编码代表前导0数量,否则,代表尾随0数量。经统计,这里用N位二进制代表尾随0的数量。若N位二进制表示最大值<实际需要代表的前导0或尾随0数量,则将多余的0并入有意义位串中。假设,N位二进制代表前导0数量,N=4,则N位二进制可表示的最大值为0b1111,十进制为15,而实际需要代表的前导0数量为16,那么多余的1个前导0并入有意义位串中。本实施例中,异或结果为0b00000000000000000000101010011001,尾随0数量为0,因此编码尾随0数量的N位二进制串表示为0b0000。
S603:用第二位数的二进制编码代表异或结果的有意义位串长度;其中,第二位数等于第一位数加一。
S604:将由第一位数确定的二进制编码、第二位数确定的二进制编码、以及异或结果中除前导0和尾随0外的有意义位串拼接。
例如0b00000000000000000000101010011001的有意义位串长度为12,因此编码有意义位串长度的M位(即第二位数,M=N+1)二进制串表示为0b01100。将由N、M确定的二进制编码和有意义位串拼接。拼接后的二进制串表示为0b000001100101010011001。
S404:用二进制串对一维词典的编码方式进行编码,用于标识编码方式。
如图7所示,为本发明实施例提供的一种用二进制串对一维词典的编码方式进行编码的方法流程图,包括:
S701:用两位二进制编码表示时序数据二进制位长度。
例如,两位二进制可编码4种长度,0b00代表8位,0b01代表16位,0b10代表32位,0b11代表64位。本实施例中用0b10表示TS1的32位浮点数。
S702:用一位二进制编码标识第一位数的二进制编码的含义。
例如,用一位二进制编码表示N位二进制编码代表前导0数量还是尾随0数量。如,0b0代表前导0数量,0b1代表尾随0数量。这里,用0b1表示N位二进制代表尾随零数量,因此,头部总体信息编码为0b100。
S405:将一维词典的编码方式与相邻异或结果的编码进行合并,得到压缩后的一维词典。
例如,合并后的二进制串为0b10000111110101100111111000010111101000001100101010011001……其含义依次为3位头部信息编码,32位第一排序数据,4位尾随0长度,5位有意义位串长度,12位有意义位串……。
针对上述S104,根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,例如包括:按时序数据对应的时间序列的顺序查询一维词典中相同数据的索引值,得到时间序列对应的一维词典索引序列。
其中,一维词典索引序列中包含时间序列中的数值在一维词典中对应的索引值。
例如,将时间序列的数据映射为一维词典中的索引,按时间序列顺序查询序列数据对应一维词典中相同数据的索引值,时间序列映射为索引序列。本实施例中,时间序列0.361033、0.361033、……、0.360325、0.360325、0.360325、0.35891、0.35891、0.35714、……被映射为索引序列231、231、……、225、225、225、148、148、125、……。
如图8所示,为本发明实施例提供的一种压缩索引序列的方法流程图,包括:
S801:对时间序列对应的一维词典索引序列中的相邻索引值做差值运算。
这样,可以减少不同差值数量,便于后续压缩,提高压缩比,直接对原时序数据进行差值运算,达不到该效果。本实施例中,索引差值后,不同差值数量为90,是词典大小的7.85%,是原始数据总数的0.1%,而若用原时序数据进行差值运算,则不同差值数量为1219,比词典的1147还要大,可见,做索引差值后有助于提高压缩比。
S802:对差值运算后的索引应用通用整型数据无损压缩算法进行压缩。
通用整型数据无损压缩算法例如包括:霍夫曼编码、算术编码、词典编码、游程编码、Simple8b算法或组合算法等至少一种或几种组合。
针对上述S105,将压缩后的一维词典与压缩索引序列合并,即完成对时序数据的压缩,得到时序数据压缩后的压缩数据。
本发明实施例中还提供了一种时序数据压缩装置,如下面的实施例所述。由于该装置解决问题的原理与时序数据压缩方法相似,因此该装置的实施可以参见时序数据压缩方法的实施,重复之处不再赘述。
如图9所示,为本发明实施例提供的一种时序数据压缩装置的示意图,包括:
词典创建模块901,用于根据时序数据创建一维词典;
词典索引创建模块902,用于对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;
词典压缩模块903,用于对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;
索引压缩模块904,用于根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;
合并模块905,用于合并压缩后的一维词典与压缩后的一维词典索引序列,得到时序数据压缩后的压缩数据。
在一种可能的实施方式中,词典创建模块,具体用于获取时序数据序列,其中,时序数据序列中包含代表不同生产工况的标识数据;依次判断时序数据序列中的数据是否在一维词典中存在;若不存在,则将该数据放入词典;若存在,则不操作,继续下一个数据判断,直至满足停止创建词典条件时,停止创建词典,记录词典实际大小;其中,所述条件至少包括词典实际大小大于预设词典大小和/或代表不同生产工况的标识数据发生改变。
在一种可能的实施方式中,标识数据包括下述至少一种:生产产品规格、生产班次、生产设定参数。
在一种可能的实施方式中,词典索引创建模块,具体用于对一维词典内数据进行排序,得到第一排序结果;根据第一排序结果,为一维词典内数据分配整数索引值,得到一维词典索引。
在一种可能的实施方式中,词典压缩模块,具体用于对一维词典内的数据进行遍历异或排序,得到第二排序结果;根据第二排序结果,对一维词典内的相邻数据进行异或操作,得到相邻异或结果;用二进制串对相邻异或结果进行编码;用二进制串对一维词典的编码方式进行编码,用于标识编码方式;将一维词典的编码方式与相邻异或结果的编码进行合并,得到压缩后的一维词典。
在一种可能的实施方式中,词典压缩模块,具体用于执行下述步骤:步骤1:取一维词典内的任一个数据作为当前排序数据;步骤2:将当前排序数据与一维词典内的所有未排序数据按位异或,得到中间异或结果,在一维词典中还存在未排序数据时,执行步骤3,在一维词典中不存在还未排序的数据时,跳转至步骤4;步骤3:将中间异或结果中前导0个数与尾随0个数之和最大的数据作为当前排序数据,当前排序数据排序序号加一;其中前导0个数为用二进制位串表示的数据从左边数连续为0的位的个数,尾随0为用二进制位串表示的数据从右边数连续为0的位的个数,返回步骤2;步骤4:停止执行,根据每一排序数据得到第二排序结果。
在一种可能的实施方式中,词典压缩模块,具体用于将第一个排序数据直接转换为二进制串;从第二个排序数据开始,将每个排序数据与前一个排序数据的异或结果加入到二进制串中。
在一种可能的实施方式中,词典压缩模块,具体用于从第二个排序数据开始,针对每个排序数据与前一个排序数据的异或结果:根据时序数据的实际二进制位长度确定第一位数;用第一位数的二进制编码代表异或结果的前导0数量或尾随0数量;用第二位数的二进制编码代表异或结果的有意义位串长度;其中,第二位数等于第一位数加一;将由第一位数确定的二进制编码、第二位数确定的二进制编码、以及异或结果中除前导0和尾随0外的有意义位串拼接。
在一种可能的实施方式中,词典压缩模块,具体用于统计从第二个排序数据开始,每个排序数据与前一个排序数据的异或结果中的前导0总数、后导0总数;在前导0总数小于后导0总数时,用第一位数的二进制编码代表前导0数量;在前导0总数不小于后导0总数时,用第一位数的二进制编码代表尾随0数量;若第一位数的二进制表示最大值小于实际需要代表的前导0或尾随0数量,则将多余的0并入有意义位串中。
在一种可能的实施方式中,词典压缩模块,具体用于用两位二进制编码表示时序数据二进制位长度;用一位二进制编码标识第一位数的二进制编码的含义。
在一种可能的实施方式中,索引压缩模块,具体用于按时序数据对应的时间序列的顺序查询一维词典中相同数据的索引值,得到时间序列对应的一维词典索引序列。
在一种可能的实施方式中,索引压缩模块,具体用于对时间序列对应的一维词典索引序列中的相邻索引值做差值运算;对差值运算后的索引应用通用整型数据无损压缩算法进行压缩。
基于前述发明构思,如图10所示,本发明还提出了一种计算机设备1000,包括存储器1010、处理器1020及存储在存储器1010上并可在处理器1020上运行的计算机程序1030,所述处理器1020执行所述计算机程序1030时实现前述时序数据压缩方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述时序数据压缩方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述时序数据压缩方法。
本发明实施例中,根据时序数据创建一维词典;对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;合并压缩后的一维词典与压缩索引序列,得到时序数据压缩后的压缩数据。这样,可以在不损失精度的情况下,进一步提高数据的压缩比,以节省存储空间,实现高效存储。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1.一种时序数据压缩方法,其特征在于,包括:
根据时序数据创建一维词典;
对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;
对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;
根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;
合并压缩后的一维词典与压缩索引序列,得到时序数据压缩后的压缩数据。
2.如权利要求1所述的时序数据压缩方法,其特征在于,根据时序数据创建一维词典,包括:
获取时序数据序列,其中,时序数据序列中包含代表不同生产工况的标识数据;
依次判断时序数据序列中的数据是否在一维词典中存在;
若不存在,则将该数据放入词典;
若存在,则不操作,继续下一个数据判断,直至满足停止创建词典条件时,停止创建词典,记录词典实际大小;其中,所述条件至少包括词典实际大小大于预设词典大小和/或代表不同生产工况的标识数据发生改变。
3.如权利要求2所述的时序数据压缩方法,其特征在于,标识数据包括下述至少一种:生产产品规格、生产班次、生产设定参数。
4.如权利要求1所述的时序数据压缩方法,其特征在于,对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引,包括:
对一维词典内数据进行排序,得到第一排序结果;
根据第一排序结果,为一维词典内数据分配整数索引值,得到一维词典索引。
5.如权利要求1所述的时序数据压缩方法,其特征在于,对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典,包括:
对一维词典内的数据进行遍历异或排序,得到第二排序结果;
根据第二排序结果,对一维词典内的相邻数据进行异或操作,得到相邻异或结果;
用二进制串对相邻异或结果进行编码;
用二进制串对一维词典的编码方式进行编码,用于标识编码方式;
将一维词典的编码方式与相邻异或结果的编码进行合并,得到压缩后的一维词典。
6.如权利要求5所述的时序数据压缩方法,其特征在于,对一维词典内的数据进行遍历异或排序,得到第二排序结果,包括:
步骤1:取一维词典内的任一个数据作为当前排序数据;
步骤2:将当前排序数据与一维词典内的所有未排序数据按位异或,得到中间异或结果,在一维词典中还存在未排序数据时,执行步骤3,在一维词典中不存在还未排序的数据时,跳转至步骤4;
步骤3:将中间异或结果中前导0个数与尾随0个数之和最大的数据作为当前排序数据,当前排序数据排序序号加一;其中前导0个数为用二进制位串表示的数据从左边数连续为0的位的个数,尾随0为用二进制位串表示的数据从右边数连续为0的位的个数,返回步骤2;
步骤4:停止执行,根据每一排序数据得到第二排序结果。
7.如权利要求5所述的时序数据压缩方法,其特征在于,用二进制串对相邻异或结果进行编码,包括:
将第一个排序数据直接转换为二进制串;
从第二个排序数据开始,将每个排序数据与前一个排序数据的异或结果加入到二进制串中。
8.如权利要求7所述的时序数据压缩方法,其特征在于,从第二个排序数据开始,将每个排序数据与前一个排序数据的异或结果加入到二进制串中,包括:
从第二个排序数据开始,针对每个排序数据与前一个排序数据的异或结果:
根据时序数据的实际二进制位长度确定第一位数;
用第一位数的二进制编码代表异或结果的前导0数量或尾随0数量;
用第二位数的二进制编码代表异或结果的有意义位串长度;其中,第二位数等于第一位数加一;
将由第一位数确定的二进制编码、第二位数确定的二进制编码、以及异或结果中除前导0和尾随0外的有意义位串拼接。
9.如权利要求8所述的时序数据压缩方法,其特征在于,用第一位数的二进制编码代表异或结果的前导0数量或尾随0数量,包括:
统计从第二个排序数据开始,每个排序数据与前一个排序数据的异或结果中的前导0总数、后导0总数;
在前导0总数小于后导0总数时,用第一位数的二进制编码代表前导0数量;
在前导0总数不小于后导0总数时,用第一位数的二进制编码代表尾随0数量;
若第一位数的二进制表示最大值小于实际需要代表的前导0或尾随0数量,则将多余的0并入有意义位串中。
10.如权利要求5所述的时序数据压缩方法,其特征在于,用二进制串对一维词典的编码方式进行编码,包括:
用两位二进制编码表示时序数据二进制位长度;
用一位二进制编码标识第一位数的二进制编码的含义。
11.如权利要求1所述的时序数据压缩方法,其特征在于,根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,包括:
按时序数据对应的时间序列的顺序查询一维词典中相同数据的索引值,得到时间序列对应的一维词典索引序列。
12.如权利要求1所述的时序数据压缩方法,其特征在于,压缩时间序列对应的一维词典索引序列,得到压缩索引序列,包括:
对一维词典中时间序列对应的一维词典索引序列中的相邻索引值做差值运算;
对差值运算后的索引应用通用整型数据无损压缩算法进行压缩。
13.一种时序数据压缩装置,其特征在于,包括:
词典创建模块,用于根据时序数据创建一维词典;
词典索引创建模块,用于对一维词典内的数据进行排序,得到第一排序结果,根据第一排序结果创建一维词典索引;
词典压缩模块,用于对一维词典内的数据进行遍历异或,得到遍历异或结果,根据遍历异或结果对一维词典进行压缩,得到压缩后的一维词典;
索引压缩模块,用于根据一维词典索引、以及时序数据对应的时间序列,确定时间序列对应的一维词典索引序列,压缩时间序列对应的一维词典索引序列,得到压缩索引序列;
合并模块,用于合并压缩后的一维词典与压缩后的一维词典索引序列,得到时序数据压缩后的压缩数据。
14.如权利要求13所述的时序数据压缩装置,其特征在于,词典创建模块,具体用于获取时序数据序列,其中,时序数据序列中包含代表不同生产工况的标识数据;
依次判断时序数据序列中的数据是否在一维词典中存在;
若不存在,则将该数据放入词典;
若存在,则不操作,继续下一个数据判断,直至满足停止创建词典条件时,停止创建词典,记录词典实际大小;其中,所述条件至少包括词典实际大小大于预设词典大小和/或代表不同生产工况的标识数据发生改变。
15.如权利要求13所述的时序数据压缩装置,其特征在于,词典索引创建模块,具体用于对一维词典内数据进行排序,得到第一排序结果;
根据第一排序结果,为一维词典内数据分配整数索引值,得到一维词典索引。
16.如权利要求13所述的时序数据压缩装置,其特征在于,词典压缩模块,具体用于对一维词典内的数据进行遍历异或排序,得到第二排序结果;
根据第二排序结果,对一维词典内的相邻数据进行异或操作,得到相邻异或结果;
用二进制串对相邻异或结果进行编码;
用二进制串对一维词典的编码方式进行编码,用于标识编码方式;
将一维词典的编码方式与相邻异或结果的编码进行合并,得到压缩后的一维词典。
17.如权利要求16所述的时序数据压缩装置,其特征在于,词典压缩模块,具体用于执行下述步骤:
步骤1:取一维词典内的任一个数据作为当前排序数据;
步骤2:将当前排序数据与一维词典内的所有未排序数据按位异或,得到中间异或结果,在一维词典中还存在未排序数据时,执行步骤3,在一维词典中不存在还未排序的数据时,跳转至步骤4;
步骤3:将中间异或结果中前导0个数与尾随0个数之和最大的数据作为当前排序数据;其中前导0个数为用二进制位串表示的数据从左边数连续为0的位的个数,尾随0为用二进制位串表示的数据从右边数连续为0的位的个数,返回步骤2;
步骤4:停止执行,根据每一排序数据得到第二排序结果。
18.如权利要求16所述的时序数据压缩装置,其特征在于,词典压缩模块,具体用于将第一个排序数据直接转换为二进制串;
从第二个排序数据开始,将每个排序数据与前一个排序数据的异或结果加入到二进制串中。
19.如权利要求18所述的时序数据压缩装置,其特征在于,词典压缩模块,具体用于从第二个排序数据开始,针对每个排序数据与前一个排序数据的异或结果:
根据时序数据的实际二进制位长度确定第一位数;
用第一位数的二进制编码代表异或结果的前导0数量或尾随0数量;
用第二位数的二进制编码代表异或结果的有意义位串长度;其中,第二位数等于第一位数加一;
将由第一位数确定的二进制编码、第二位数确定的二进制编码、以及异或结果中除前导0和尾随0外的有意义位串拼接。
20.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12任一所述方法。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至12任一所述方法。
22.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至12任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310538670.8A CN116737716A (zh) | 2023-05-12 | 2023-05-12 | 时序数据压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310538670.8A CN116737716A (zh) | 2023-05-12 | 2023-05-12 | 时序数据压缩方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116737716A true CN116737716A (zh) | 2023-09-12 |
Family
ID=87905238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310538670.8A Pending CN116737716A (zh) | 2023-05-12 | 2023-05-12 | 时序数据压缩方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737716A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117082154A (zh) * | 2023-10-16 | 2023-11-17 | 长沙瑞腾信息技术有限公司 | 基于大数据的双路服务器数据存储系统 |
-
2023
- 2023-05-12 CN CN202310538670.8A patent/CN116737716A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117082154A (zh) * | 2023-10-16 | 2023-11-17 | 长沙瑞腾信息技术有限公司 | 基于大数据的双路服务器数据存储系统 |
CN117082154B (zh) * | 2023-10-16 | 2023-12-15 | 长沙瑞腾信息技术有限公司 | 基于大数据的双路服务器数据存储系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103067022B (zh) | 一种整型数据无损压缩方法、解压缩方法及装置 | |
KR101049699B1 (ko) | 데이터의 압축방법 | |
US20140185668A1 (en) | Method for adaptive entropy coding of tree structures | |
WO2019076177A1 (zh) | 基因测序数据压缩预处理、压缩、解压方法、系统及计算机可读介质 | |
CN103995887A (zh) | 位图索引压缩方法和位图索引解压方法 | |
CN116737716A (zh) | 时序数据压缩方法及装置 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
US20130019029A1 (en) | Lossless compression of a predictive data stream having mixed data types | |
CN105391454A (zh) | 一种dna测序质量分数无损压缩方法 | |
CN113312325B (zh) | 轨迹数据传输方法、装置、设备及存储介质 | |
CN104156990B (zh) | 一种支持特大型数据窗口的无损压缩编码方法及系统 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
CN116016606A (zh) | 一种基于智慧云的污水处理运维数据高效管理系统 | |
CN100568284C (zh) | 计算机图形数据编码装置、解码装置、编码和解码方法 | |
CN110442557B (zh) | 数据压缩及解压缩方法、电子设备和计算机可读存储介质 | |
CN102724505A (zh) | Jpeg_ls游程编码fpga实现方法 | |
CN115882867B (zh) | 一种基于大数据的数据压缩存储方法 | |
CN109698703B (zh) | 基因测序数据解压方法、系统及计算机可读介质 | |
CN116208171A (zh) | 数据压缩和解压缩方法、装置、电子设备及存储介质 | |
CN110233627B (zh) | 一种基于流水式的硬件压缩的系统及方法 | |
CN109257047B (zh) | 数据压缩方法及装置 | |
CN113364466A (zh) | 数据处理系统 | |
CN111384962B (zh) | 数据压缩解压装置和数据压缩方法 | |
CN114025024A (zh) | 一种数据传输方法及装置 | |
CN113452376A (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 |