CN107193925B - 一种基于列式存储技术的实时数据压缩方法 - Google Patents

一种基于列式存储技术的实时数据压缩方法 Download PDF

Info

Publication number
CN107193925B
CN107193925B CN201710346825.2A CN201710346825A CN107193925B CN 107193925 B CN107193925 B CN 107193925B CN 201710346825 A CN201710346825 A CN 201710346825A CN 107193925 B CN107193925 B CN 107193925B
Authority
CN
China
Prior art keywords
compressible
function
column
division
real
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
CN201710346825.2A
Other languages
English (en)
Other versions
CN107193925A (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.)
ZHEJIANG ZHENGTAI ZHONGZI CONTROL ENGINEERING Co Ltd
Original Assignee
ZHEJIANG ZHENGTAI ZHONGZI CONTROL ENGINEERING Co 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 ZHEJIANG ZHENGTAI ZHONGZI CONTROL ENGINEERING Co Ltd filed Critical ZHEJIANG ZHENGTAI ZHONGZI CONTROL ENGINEERING Co Ltd
Priority to CN201710346825.2A priority Critical patent/CN107193925B/zh
Publication of CN107193925A publication Critical patent/CN107193925A/zh
Application granted granted Critical
Publication of CN107193925B publication Critical patent/CN107193925B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于列式存储技术的实时数据压缩方法,本发明的方法对于一个具体的列包里的序列,完成了可变步距计算公式的试算和评估,以及覆盖单元计算公式的搜索和参数计算,将可压缩划分内的实时数据列包进行压缩,从而解决了存储空间占用巨大的问题,减少硬件部署数量,小型化部署环境,节省部署成本,本发明能够实现实时、高频度、大数据量的数据压缩存储,大大减少存储空间占用的问题。

Description

一种基于列式存储技术的实时数据压缩方法
技术领域
本发明涉及数据压缩技术领域,特别涉及一种基于列式存储技术的实时数据压缩方法。
背景技术
实时数据库的数据结构设计,将其划分为内存和磁盘两个部分,其中磁盘部分又分为短期历史和长期历史两个部分。内存部分和磁盘部分都是列式存储结构,只是存储的物理位置不同。短期历史部分与长期历史部分的区别是,前者未进行数据压缩,而后者进行了数据压缩。
对于内存部分,我们所采取的是读写分离技术。这种技术为数据读写分别分配两种内存缓冲区。其中读区域只能用来读出数据,不能写入数据;写区域只能用来写入数据,不能读出数据。写区域是数个轮番写入数据的内存缓冲区。读区域则是一个内存区块的链接表,由写满数据的写区域转化而来。对于数据读取专门进行了缓存策略优化。
数据压缩的策略就是,只对长期历史部分进行压缩,而对短期历史部分不进行压缩。这是因为从用户需求来看,短期历史数据相较于长期历史数据仍然可能被程序频繁读取,因此不进行数据压缩可以避免查询时的效率损耗。在目前主流硬盘规格条件下,(不压缩的)短期历史部分的数据量是可以接受的。对此,主荐的磁盘类型是固态硬盘(SSD),可实现高性能的读写操作。
列式存储技术将数据按列包存储,每个数据包内都是同构数据,内容相关性高,存在被高度压缩的基础。在具体的压缩算法中,目前使用最广泛的是旋转门算法(SDT)。
旋转门算法比较擅长于压缩存在较多具有同一变化趋势的数据段的实时数据,但是对于以锯齿状为主的实时数据,压缩效率就比较低。究其原因,旋转门算法是一种线性拟合算法,而从工业设备采集的测量数据,很少是线性的。其背后的原因,决定现实中物理量变化的因素是多方面的,而且以非线性为主。
发明内容
本发明的目的是提供一种基于列式存储技术的实时数据压缩算法,对于一个具体的列包里的序列,完成了可变步距计算公式的试算和评估。
本发明的上述技术目的是通过以下技术方案得以实现的:
一种基于列式存储技术的实时数据压缩方法,所述方法包括下述步骤,
(1)读入实时数据列包Xi,i=1,2,...,n,Xi为第i个对应的数据值;
(2)设△F为精度值,若对于列包中的序列Xi(a≤i≤b),有定义在[Ta,Tb]上的函数Fi=f(Ti),使得:
|Xi-Fi|≤△F
|X(a-1)-F(a-1)|>△F
|X(n+1)-F(n+1)|>△F
则称区间[Ta,Tb]为对于f(Ti)和△F的可压缩区间,称Fi=f(Ti)为Xi的一个覆盖函数;
所有覆盖函数都被事先赋予一个代码fid;在精度△F的意义上,用fid、f(Ti)的所有参数值以及a、b来替代可压缩区间内的所有Xi,实现数据压缩;
(3)对下标i赋予一个可变性,以下述函数表达:
i=S(j) (i,j∈{0}∪N)
S(j)称为一个划分函数,对应于其值域的集合{Ti|i=S(j)}称为一个划分,记为Γ(S);
设△F为精度值,若对于列包中的序列Xi(a≤i≤b),有定义在Γ(S)∩[Ta,Tb]上的覆盖函数Fi=f(Ti),使得:
|Xi-Fi|≤△F
|X(S(S-1(a)-1))-F(S(S-1(b)-1))|>△F
|X(S(S-1(a)+1))-F(S(S-1(b)+1))|>△F
则称Γ(S)∩[Ta,Tb]为对于f(Ti)和△F的可压缩划分,记为Γk;
在精度△F的意义上,就用f(Ti)的代码fid、f(Ti)的所有参数值、S(j)的代码sid、S(j)的所有参数值以及a、b来替代可压缩划分内的所有Xi,实现数据压缩;
(4)对于列包中给定的序列Xi,姑且取第一个S(j),如果存在一个S(j)参数的组合,使得Γ(S)上的Xi具有某个f(Ti)的函数特征,就可以进一步计算f(Ti)在Γ(S)上的参数组合,从而得到第一个可压缩划分,然后取下一个S(j),重复进行以上步骤,直到所有S(j)被遍历完成,最后,列包中剩下的Xi需要单独存储;
(5)评估是否有效压缩,若是则结束,若否则改变完全划分的结构,回到第(3)步执行;
进一步的,如果存在一系列可压缩划分Γk,使得:
∪Γk = U (k∈N)
Γk1∩Γk2 = φ (k1、k2∈N且k1≠k2)
则称{Γk}为对U的一个完全可压缩划分集,简称完全划分,U为数据列包Xi中i的全集。
进一步的,所述任意函数Fi=f(Ti)为线性或非线性。
进一步的,所述评估是否有效压缩,是根据实时数据列包Xi中被覆盖函数Fi=f(Ti)覆盖的数据覆盖率与额定比率进行比较判断的,当数据覆盖率大于额定比率时,则判定为有效压缩,当数据覆盖率小于额定比率时,则判定为无效压缩,所述额定比率可调节。
综上所述,本发明具有以下有益效果:本发明的方法对于一个具体的列包里的序列,完成了可变步距计算公式的试算和评估,以及覆盖单元计算公式的搜索和参数计算,将可压缩划分内的实时数据列包进行压缩,从而解决了存储空间占用巨大的问题,减少硬件部署数量,小型化部署环境,节省部署成本,本发明能够实现实时、高频度、大数据量的数据压缩存储,大大减少存储空间占用的问题。
附图说明
图1是覆盖函数的示意图;
图2是多个可压缩区间与覆盖函数的示意图;
图3是本发明的方法流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的保护范围内都受到专利法的保护。
一种基于列式存储技术的实时数据压缩方法,该方法包括步骤:
(1)读入实时数据列包Xi,i=1,2,...,n,Xi为第i个对应的数据值;
(2)设△F为精度值,若对于列包中的序列Xi(a≤i≤b),有定义在[Ta,Tb]上的函数Fi=f(Ti),使得:
|Xi-Fi|≤△F
|X(a-1)-F(a-1)|>△F
|X(n+1)-F(n+1)|>△F
则称区间[Ta,Tb]为对于f(Ti)和△F的可压缩区间,称Fi=f(Ti)为Xi的一个覆盖函数;
所有覆盖函数都被事先赋予一个代码fid。在精度△F的意义上,用fid、f(Ti)的所有参数值以及a、b来替代可压缩区间内的所有Xi,实现数据压缩。
在本发明的实施例中,如图1所示,图中的点代表Xi的值,曲线代表函数Fi=f(Ti),位于曲线上下,与曲线保持△F为精度值的虚线代表函数Fi=f(Ti)的误差范围,当Xi位于这一误差范围内时,Xi就可被Fi=f(Ti)上与Xi对应的值覆盖。序列Xi在(a≤i≤b)内,均在误差范围内,那么称区间[Ta,Tb]为对于f(Ti)和△F的可压缩区间,称Fi=f(Ti)为Xi的一个覆盖函数。
(3)对下标i赋予一个可变性,以下述函数表达:
i=S(j) (i,j∈{0}∪N)
S(j)称为一个划分函数,对应于其值域的集合{Ti|i=S(j)}称为一个划分,记为Γ(S);
设△F为精度值,若对于列包中的序列Xi(a≤i≤b),有定义在Γ(S)∩[Ta,Tb]上的覆盖函数Fi=f(Ti),使得:
|Xi-Fi|≤△F
|X(S(S-1(a)-1))-F(S(S-1(b)-1))|>△F
|X(S(S-1(a)+1))-F(S(S-1(b)+1))|>△F
则称Γ(S)∩[Ta,Tb]为对于f(Ti)和△F的可压缩划分,记为Γk。
在精度△F的意义上,就用f(Ti)的代码fid、f(Ti)的所有参数值、S(j)的代码sid、S(j)的所有参数值以及a、b来替代可压缩划分内的所有Xi,实现数据压缩;
在本发明的实施例中,对i赋予了一个可变性,用i=S(j),(i,j∈{0}∪N)来表示,S(j)为一个划分函数,对应于其值域的集合{Ti|i=S(j)}称为一个划分,记为Γ(S)。
如图2所示,作为一个例子,i被划分为奇数和偶数,即i被分为两个划分:Γ(S)={Ti|i=2j+1,j∈N}和Γ´(S)={Ti|i=2j,j∈N}。对应的在Γ(S)内,Γ(S)∩[Ta,Tb]的区间范围内,存在Xi的覆盖函数Fi=f(Ti),那么Γ(S)∩[Ta,Tb]为对于f(Ti)和△F的可压缩划分,记为Γk。同理,Γ´(S)∩[Ta,Tb]的区间范围内,存在Xi的覆盖函数F´i=f´(Ti),那么Γ´(S)∩[Ta,Tb]为对于f´(Ti)和△F的可压缩划分,记为Γ´k。
(4)对于列包中给定的序列Xi,姑且取第一个S(j),如果存在一个S(j)参数的组合,使得Γ(S)上的Xi具有某个f(Ti)的函数特征,就可以进一步计算f(Ti)在Γ(S)上的参数组合,从而得到第一个可压缩划分,然后取下一个S(j),重复进行以上步骤,直到所有S(j)被遍历完成,最后,列包中剩下的Xi需要单独存储。
在本发明的实施例中,如图2所示,可根据可压缩划分Γ(S)对该压缩区间内的Xi用函数Fi=f(Ti)覆盖,然后根据可压缩划分Γ´(S)对该压缩区间内的Xi用函数F´i=f´(Ti)覆盖,不在覆盖函数范围内的Xi,被单独存储。本实施例仅是一种示例,Xi可根据需要被划分为更多的可压缩划分,但为了减少覆盖函数和可压缩划分的存储容量,在Xi完全划分或接近完全划分时,可压缩划分的个数尽可能的少。
(5)评估是否有效压缩,若是则结束,若否则改变完全划分的结构,回到第(3)步执行。
在本发明的实施例中,评估是否有效压缩,是根据实时数据列包Xi中被覆盖函数Fi=f(Ti)覆盖的数据覆盖率与额定比率进行比较判断的,当数据覆盖率大于额定比率时,则判定为有效压缩,当数据覆盖率小于额定比率时,则判定为无效压缩。当判定为无效压缩时,需改变可压缩划分的结构,回到第(3)布执行。
在本发明的本实施例中,在上述步骤(3)中,如果存在一系列可压缩划分Γk,使得:
∪Γk = U (k∈N)
Γk1∩Γk2 = φ (k1、k2∈N且k1≠k2)
则称{Γk}为对U的一个完全可压缩划分集,简称完全划分,U为数据列包Xi中i的全集。
将U分为完全可压缩划分集{Γk},则Xi中的所有数据均被压缩,是数据压缩最理想的效果。
在本发明的本实施例中,任意函数Fi=f(Ti)为线性或非线性。
本发明的方法流程图可参考图3:
S101:输入实时数据列包。
102:分别建立一个覆盖函数库和一个划分函数库,并给每个函数编码,用变长数组存储其参数,对于覆盖函数还要存储其特征值。
103:对于一个完全划分下的各个划分函数,计算划分上的函数特征值,如果存在特征相符的覆盖函数,则计算该函数的参数值使之计算结果在精度内覆盖列包数据。
104:存储搜索成功的各个划分、函数ID、函数参数以及区间开始和结束,对没有覆盖的数据进行单独存储。
105:评估是否有效压缩,若是则结束,若否则改变压缩划分的结构,回到S103执行。
实时数据库的数据结构设计,将其划分为内存和磁盘两个部分,其中磁盘部分又分为短期历史和长期历史两个部分。内存部分和磁盘部分都是列式存储结构,只是存储的物理位置不同。短期历史部分与长期历史部分的区别是,前者未进行数据压缩,而后者进行了数据压缩。本发明的实施数据压缩方法,可对短期历史部分也进行数据压缩,而考虑的数据压缩的速率,用于评估是否有效压缩的额定比率可适当降低,通过牺牲一定的压缩效率,来提数据压缩的速率。而对于长期历史部分,在压缩速率上没有很高的要求,因此可提高额定比率,来提高压缩的效率,使数据的占用空间尽可能的小。
在对实时数据进行函数拟合时,产生的新的覆盖函数与划分函数可分别存入覆盖函数库和划分函数库中,函数库的扩展,压缩能力也将增强。
结合本文所揭示实施例描述的方法或算法可直接包含在硬件、可由处理器执行的软件模块或两者的组合中。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬磁盘、可装卸磁盘、CD-ROM或所属技术领域中已知的任何其它形式的计算机可读媒体中。计算机可读媒体可耦合到所述处理器以使所述处理器可从计算机可读媒体读取信息及将信息写入到所述计算机可读媒体。或者,计算机可读媒体可集成到处理器。

Claims (4)

1.一种基于列式存储技术的实时数据压缩方法,其特征是:所述方法包括下述步骤,
(1)读入实时数据列包Xi,i=1,2,...,n,Xi为第i个对应的数据值;
(2)设△F为精度值,若对于列包中的序列Xi(a≤i≤b),有定义在[Ta,Tb]上的函数Fi=f(Ti),使得:
|Xi-Fi|≤△F
|X(a-1)-F(a-1)|>△F
|X(n+1)-F(n+1)|>△F
则称区间[Ta,Tb]为对于f(Ti)和△F的可压缩区间,称Fi=f(Ti)为Xi的一个覆盖函数;
所有覆盖函数都被事先赋予一个代码fid;在精度△F的意义上,用fid、f(Ti)的所有参数值以及a、b来替代可压缩区间[Ta,Tb]内的所有Xi,实现数据压缩;
(3)对下标i赋予一个可变性,以下述函数表达:
i=S(j) (i,j∈{0}∪N)
S(j)称为一个划分函数,对应于其值域的集合{Ti|i=S(j)}称为一个划分,记为Γ(S);
设△F为精度值,若对于列包中的序列Xi(a≤i≤b),有定义在Γ(S)∩[Ta,Tb]上的覆盖函数Fi=f(Ti),使得:
|Xi-Fi|≤△F
|X(S(S-1(a)-1))-F(S(S-1(b)-1))|>△F
|X(S(S-1(a)+1))-F(S(S-1(b)+1))|>△F
则称Γ(S)∩[Ta,Tb]为对于f(Ti)和△F的可压缩划分,记为Γk;
在精度△F的意义上,就用f(Ti)的代码fid、f(Ti)的所有参数值、S(j)的代码sid、S(j)的所有参数值以及a、b来替代可压缩划分内的所有Xi,实现数据压缩;
(4)对于列包中给定的序列Xi,姑且取第一个S(j),如果存在一个S(j)参数的组合,使得Γ(S)上的Xi具有某个f(Ti)的函数特征,就可以进一步计算f(Ti)在Γ(S)上的参数组合,从而得到第一个可压缩划分,然后取下一个S(j),重复进行以上步骤,直到所有S(j)被遍历完成,最后,列包中剩下的Xi需要单独存储;
(5)评估是否有效压缩,若是则结束,若否则改变完全划分的结构,回到第(3)步执行。
2.根据权利要求1所述的一种基于列式存储技术的实时数据压缩方法,其特征是:如果存在一系列可压缩划分Γk,使得:
∪Γk = U (k∈N)
Γk1∩Γk2 = φ (k1、k2∈N且k1≠k2)
则称{Γk}为对U的一个完全可压缩划分集,简称完全划分,U为数据列包Xi中i的全集。
3.根据权利要求1所述的一种基于列式存储技术的实时数据压缩方法,其特征是: Fi=f(Ti)为线性或非线性。
4.根据权利要求1所述的一种基于列式存储技术的实时数据压缩方法,其特征是:所述评估是否有效压缩,是根据实时数据列包Xi中被覆盖函数Fi=f(Ti)覆盖的数据覆盖率与额定比率进行比较判断的,当数据覆盖率大于额定比率时,则判定为有效压缩,当数据覆盖率小于额定比率时,则判定为无效压缩,所述额定比率可调节。
CN201710346825.2A 2017-05-15 2017-05-15 一种基于列式存储技术的实时数据压缩方法 Active CN107193925B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710346825.2A CN107193925B (zh) 2017-05-15 2017-05-15 一种基于列式存储技术的实时数据压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710346825.2A CN107193925B (zh) 2017-05-15 2017-05-15 一种基于列式存储技术的实时数据压缩方法

Publications (2)

Publication Number Publication Date
CN107193925A CN107193925A (zh) 2017-09-22
CN107193925B true CN107193925B (zh) 2019-09-20

Family

ID=59873881

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710346825.2A Active CN107193925B (zh) 2017-05-15 2017-05-15 一种基于列式存储技术的实时数据压缩方法

Country Status (1)

Country Link
CN (1) CN107193925B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1786939A (zh) * 2005-11-10 2006-06-14 浙江中控技术有限公司 实时数据压缩方法
CN102609491A (zh) * 2012-01-20 2012-07-25 东华大学 一种基于列存储的区级数据压缩方法
CN104462334A (zh) * 2014-12-03 2015-03-25 天津南大通用数据技术股份有限公司 一种列存数据库的数据压缩方法及装置
WO2016152972A1 (ja) * 2015-03-25 2016-09-29 国立大学法人筑波大学 データ圧縮・解凍システム、データ圧縮方法及びデータ解凍方法、並びにデータ圧縮器及びデータ解凍器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1786939A (zh) * 2005-11-10 2006-06-14 浙江中控技术有限公司 实时数据压缩方法
CN102609491A (zh) * 2012-01-20 2012-07-25 东华大学 一种基于列存储的区级数据压缩方法
CN104462334A (zh) * 2014-12-03 2015-03-25 天津南大通用数据技术股份有限公司 一种列存数据库的数据压缩方法及装置
WO2016152972A1 (ja) * 2015-03-25 2016-09-29 国立大学法人筑波大学 データ圧縮・解凍システム、データ圧縮方法及びデータ解凍方法、並びにデータ圧縮器及びデータ解凍器

Also Published As

Publication number Publication date
CN107193925A (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
CN100382052C (zh) 使用页信息的页替换方法
CN104246722B (zh) 用于基于哈希表排除数据重复的存储系统,存储控制器及方法
CN103019887B (zh) 数据备份方法及装置
US8010770B2 (en) Caching device for NAND flash translation layer
CN105849706A (zh) 用于管理逻辑到物理地址映射的储存模块和方法
KR101428189B1 (ko) 비휘발성 메모리를 갖는 시스템을 위한 고속 트리 플래트닝
CN103488709A (zh) 一种索引建立方法及系统、检索方法及系统
CN105117402B (zh) 日志数据分片方法及装置
CN106708424A (zh) 对用户数据执行选择性底层暴露映射的设备和方法
CN106484319A (zh) 用于非易失性存储器的支持无效命令
CN106708751A (zh) 包括用于多模操作的多分区的存储装置及其操作方法
CN106354615A (zh) 固态硬盘日志生成方法及其装置
CN103559027A (zh) 一种key与value分开存储的key-value存储系统设计方法
CN104182176B (zh) 一种独立磁盘冗余阵列raid5的快速扩容方法
CN104050057B (zh) 一种历史感知的数据去重碎片消除方法与系统
CN107193925B (zh) 一种基于列式存储技术的实时数据压缩方法
KR20140021793A (ko) 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법
CN105512047A (zh) Flash闪存的写操作、擦除操作方法及装置
CN107229580A (zh) 顺序流检测方法与装置
CN111813709A (zh) 一种基于fpga存算一体架构的高速并行存储方法
CN116382582A (zh) 一种raid重映射方法、系统、设备以及存储介质
CN111190835A (zh) 一种数据写入方法、装置、设备及介质
CN113641681B (zh) 一种空间自适应的海量数据查询方法
CN107015764B (zh) Nand flash的数据处理方法、装置和一种Nand flash
CN112486861B (zh) 固态硬盘映射表数据查询方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant