CN107193925A - 一种基于列式存储技术的实时数据压缩算法 - Google Patents
一种基于列式存储技术的实时数据压缩算法 Download PDFInfo
- Publication number
- CN107193925A CN107193925A CN201710346825.2A CN201710346825A CN107193925A CN 107193925 A CN107193925 A CN 107193925A CN 201710346825 A CN201710346825 A CN 201710346825A CN 107193925 A CN107193925 A CN 107193925A
- Authority
- CN
- China
- Prior art keywords
- function
- compressible
- real
- division
- time 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.)
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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/221—Column-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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (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:输入实时数据列包。
S102:分别建立一个覆盖函数库和一个划分函数库,并给每个函数编码,用变长数组存储其参数,对于覆盖函数还要存储其特征值。
S103:对于一个完全划分下的各个划分函数,计算划分上的函数特征值,如果存在特征相符的覆盖函数,则计算该函数的参数值使之计算结果在精度内覆盖列包数据。
S104:存储搜索成功的各个划分、函数ID、函数参数以及区间开始和结束,对没有覆盖的数据进行单独存储。
S105:评估是否有效压缩,若是则结束,若否则改变压缩划分的结构,回到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)覆盖的数据覆盖率与额定比率进行比较判断的,当数据覆盖率大于额定比率时,则判定为有效压缩,当数据覆盖率小于额定比率时,则判定为无效压缩,所述额定比率可调节。
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 true CN107193925A (zh) | 2017-09-22 |
CN107193925B 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)
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 | 国立大学法人筑波大学 | データ圧縮・解凍システム、データ圧縮方法及びデータ解凍方法、並びにデータ圧縮器及びデータ解凍器 |
-
2017
- 2017-05-15 CN CN201710346825.2A patent/CN107193925B/zh active Active
Patent Citations (4)
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 |
---|---|
CN107193925B (zh) | 2019-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468294B (zh) | 用于固态存储设备的脱机去重 | |
US9489296B1 (en) | Methods, devices and systems for hardware-based garbage collection in solid state drives | |
CN104220991B (zh) | 用于允许数据在nand闪存上的有效存储的架构 | |
CN105242871B (zh) | 一种数据写入方法及装置 | |
KR101428189B1 (ko) | 비휘발성 메모리를 갖는 시스템을 위한 고속 트리 플래트닝 | |
US8028121B2 (en) | Method and apparatus for detecting static data area, wear-leveling, and merging data units in nonvolatile data storage device | |
US11249664B2 (en) | File system metadata decoding for optimizing flash translation layer operations | |
CN105849706A (zh) | 用于管理逻辑到物理地址映射的储存模块和方法 | |
US9251067B1 (en) | High speed trim command processing in a solid state drive | |
CN103019887B (zh) | 数据备份方法及装置 | |
CN101290613B (zh) | Fft处理器的数据存储系统和方法 | |
CN111125447A (zh) | 一种元数据访问方法、装置、设备及可读存储介质 | |
US20080162792A1 (en) | Caching device for nand flash translation layer | |
US20080126684A1 (en) | Caching method for nand flash translation layer | |
CN103488709A (zh) | 一种索引建立方法及系统、检索方法及系统 | |
CN104516822B (zh) | 一种内存访问方法和设备 | |
CN110413454A (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
KR20150142583A (ko) | 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법 | |
CN109976664A (zh) | 固态存储设备的日志数据组织 | |
CN104166627B (zh) | 一种基于单片机的nand‑flash写操作方法 | |
CN115756312A (zh) | 数据访问系统、数据访问方法和存储介质 | |
TWI553481B (zh) | 固態硬碟的資料管理方法、寫入管理系統及其方法 | |
CN107193925B (zh) | 一种基于列式存储技术的实时数据压缩方法 | |
CN103116640B (zh) | Fat文件系统格式化方法及装置 | |
CN111026678A (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 |