实时数据压缩算法(GE Historian Compression Methods)
数据压缩算法讲述

常见压缩实现工具: RAR:结合了PPM和LZSS算法 GZIP:DEFLATE,gzipped "inflate" data is prefixed with a two-byte header, and suffixed with a four-byte checksum。 ZIP:/76676/
Difference between gzip, zip, deflate 参见:/Archive/Comp/pression/200707/msg00011.html 总结:目前压缩算法在日益更新,很难有最好的。但当前互联网领域广泛被使用,比如浏览器普遍支持的: gzip,deflate,compress等 ,或者一些大公司内部使用的如google的Snappy等。 因为被使用广泛且占有率高,因此可以达到兼容性好,解压方便的效果。
2.常见压缩算法
Wiki罗列了近100种算法,目的都是降低信息冗余度。
压缩算法思想 Entropy Encoding:最少bit数编码,Shannon,Huf较多的单词或词汇组合做成一个对应的字典列表,并用特殊代码来表示 这个单词或词汇。 Sliding Window:滑动窗口 LZ77,如: DEFLATE(先用LZ77,然后用Huffman编码) 非字典算法:(Non-dictionary Algorithms)使用输入中的一部分数据,来预测后续的符号将会是什么,通过 这种算法来减少输出数据的熵,PPM,BZIP
参考:/77247/
3.常见压缩算法比较
QuickLZ: is the world's fastest compression library, reaching 308 Mbyte/s per core. Snappy: is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger. On a single core of a Core i7 processor in 64-bit mode, Snappy compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec or more. LZ4号称速度快,压缩比高。 JAVA实现:https:///jpountz/lz4-java
数据压缩算法

数据压缩算法
数据压缩算法是一种以最小的代价(比如时间和存储空间)来提高数据存储和传输效率的技术。
它最初是为了减少计算机存储和网络传输所需的存储空间,使得当今的移动应用变得可行并取得了良好的成效。
随着计算机技术的发展,数据压缩算法的应用也越来越广泛,它们可以用来压缩和存储文件、图像、视频、音频等多种多样的数据,在网络流量管理、多媒体应用、空间游戏和移动应用等领域都有重要的作用。
一种典型的数据压缩算法是无损压缩,它通过重新编码原始数据来减少数据量,而不改变原始数据中所包含的信息量,用来压缩图片、视频、语音等多媒体数据。
最常用的无损压缩算法之一是JPEG算法,它以减少重复性的特点来设计,能够有效的把图像的冗余信息压缩掉,但同时也不改变压缩后图片的质量。
另一种常用的数据压缩算法是有损压缩算法,它使用一种特定的数据编码方法来减少文件的大小,但有必要涉及到数据的质量问题,因为在压缩过程中,有些信息将被抛弃或变得不可恢复。
最常用的有损压缩算法之一是MPEG算法,它具有高压缩率和低失真性,通常用
来压缩视频信息。
此外还有另外一种数据压缩算法频率域压缩,它使用傅里叶变换来将信号从时域转换到频域,利用信号中频率不变的属性,将所有频率不重要的信息抛弃掉,从而减少了存储体积。
最常用的频率域压缩
算法是AAC算法,它能够有效的压缩音频信息,同时保持音质和声音细节。
数据压缩算法的发展和进步极大地改善了存储和传输的效率,它们不仅提高了数据的存储密度和数据传输速率,而且还降低了数据传输的费用,为多媒体和移动应用的发展提供了巨大的支持。
在很多领域,数据压缩算法都有着重要的作用,因此它的发展仍将有着长期的前景。
历史数据压缩算法

历史数据压缩算法历史数据压缩算法是一种用于压缩和存储大量历史数据的技术。
随着现代社会数据的快速增长,如何有效地存储和管理历史数据成为一个重要的问题。
历史数据压缩算法通过提供高效的数据压缩和快速的数据检索功能,为大规模历史数据的存储和分析提供了有效的解决方案。
在传统的数据存储方式中,历史数据往往以原始的形式进行存储,这会导致存储空间的浪费和数据读取效率的降低。
而历史数据压缩算法通过对历史数据进行压缩,可以大大减少存储空间的占用,并提高数据的读取速度。
历史数据压缩算法的核心思想是利用数据的特点和规律进行压缩。
例如,对于周期性的历史数据,可以使用差值压缩算法来减少存储空间的占用。
该算法通过存储相邻数据之间的差值,而不是存储每个数据点的具体数值,从而实现数据的高效压缩。
在读取数据时,可以通过累加差值来还原原始数据。
历史数据压缩算法还可以利用数据的稀疏性进行压缩。
对于具有周期性波动的历史数据,可以使用稀疏存储算法来存储只有波峰和波谷的数据点,而忽略中间的平稳区域。
这样可以大大减少存储空间的占用,并提高数据的读取效率。
除了差值压缩和稀疏存储,历史数据压缩算法还可以使用词典压缩、哈夫曼编码等技术来进一步提高压缩效率。
词典压缩算法通过将重复出现的数据块存储为单个词条,从而减少存储空间的占用。
而哈夫曼编码则通过将出现频率高的数据用较短的编码表示,而将出现频率低的数据用较长的编码表示,从而实现数据的高效压缩。
除了压缩算法,历史数据压缩还需要具备快速的数据检索功能。
因为历史数据往往需要频繁地进行查询和分析。
为了实现快速的数据检索,可以使用索引和分块存储的技术。
索引可以提高数据的检索效率,而分块存储可以将数据按照时间进行划分,从而实现对特定时间段数据的快速访问。
总的来说,历史数据压缩算法是一种非常重要的技术,它可以有效地压缩和存储大量的历史数据,并提供快速的数据检索功能。
通过使用历史数据压缩算法,可以节省存储空间,提高数据读取效率,从而为历史数据的存储和分析提供强有力的支持。
数据压缩算法在卫星遥感数据处理中的应用技巧(四)

数据压缩算法在卫星遥感数据处理中的应用技巧引言随着科技的发展和卫星技术的进步,遥感数据在资源调查、环境监测、灾害预警等领域发挥着重要作用。
然而,由于卫星遥感数据的体积庞大,传输和存储过程中所需的带宽和存储空间较大,给数据处理带来了很大的挑战。
数据压缩算法作为一种处理大数据的常用手段,在卫星遥感数据处理中具有重要的应用意义。
一、数据压缩算法介绍数据压缩算法是一种将原始数据转换为更紧凑表示形式的技术。
在卫星遥感数据处理中,常用的数据压缩算法包括无损压缩算法和有损压缩算法。
1. 无损压缩算法无损压缩算法通过利用原始数据中的冗余信息来实现数据压缩,同时确保数据的完整性和可恢复性。
在卫星遥感数据处理中,无损压缩算法常用于需要精确还原原始数据的场景,如气象预测和地质研究等。
2. 有损压缩算法与无损压缩算法不同,有损压缩算法在压缩数据时会舍弃一定的细节信息,从而实现更高的压缩率。
卫星遥感数据中包含着大量的冗余信息和噪声数据,因此有损压缩算法能够在一定程度上满足数据处理需求。
在卫星图像处理中,常用的有损压缩算法有JPEG、LZ77和Huffman等。
二、卫星遥感数据处理中的应用技巧在卫星遥感数据处理过程中,灵活运用数据压缩算法能够提高数据处理的效率和准确性。
下面将从三个方面介绍数据压缩算法在卫星遥感数据处理中的应用技巧。
1. 预处理阶段的压缩卫星遥感数据通常需要先进行一系列的预处理步骤,如辐射校正、大气校正和几何校正等。
在这些步骤中,可以通过对原始数据进行压缩,减小数据量,并且保证数据处理的准确性。
例如,在辐射校正过程中,可以利用有损压缩算法去除数据中的一些噪声信息,从而提高校正效果。
2. 数据存储和传输的压缩卫星遥感数据在存储和传输过程中,通常需要占用较大的带宽和存储空间。
为了减少存储和传输成本,可以采用数据压缩算法将原始数据进行压缩。
在选择压缩算法时,需要综合考虑数据处理的精确度和压缩率。
例如,在数据传输过程中,可以使用无损压缩算法进行数据的压缩和解压缩,从而确保数据的完整性。
计算机科学中的数据压缩算法

计算机科学中的数据压缩算法在当今数字化时代,数据的产生和传输已经成为日常生活中不可或缺的一部分。
然而,随着数据量的不断增加,存储和传输数据所需的资源也越来越大。
为了解决这个问题,计算机科学家们开发了各种数据压缩算法,以减小数据的体积,提高存储和传输的效率。
数据压缩算法是一种数学和计算机科学的交叉领域,它研究如何通过改变数据的表示方式,以减少数据所占用的存储空间或传输带宽。
这些算法可以分为两类:有损压缩和无损压缩。
有损压缩算法通过牺牲一定的数据精度来减小数据的体积。
这种算法适用于那些对数据精度要求不高的场景,例如音频和视频文件。
在有损压缩算法中,最常见的是基于离散余弦变换(DCT)的算法。
DCT将数据表示为频域的系数,通过保留较大的系数,而舍弃一些较小的系数来减小数据的体积。
著名的JPEG图像压缩算法就是基于DCT的有损压缩算法。
与有损压缩相对的是无损压缩算法,它通过改变数据的表示方式,但不会丢失任何信息。
无损压缩算法适用于那些对数据精度要求较高的场景,例如文本文件和数据库。
最常见的无损压缩算法之一是霍夫曼编码。
霍夫曼编码通过使用不同长度的二进制编码来表示不同频率的字符,以减小数据的体积。
这种编码方式使得出现频率较高的字符使用较短的编码,而出现频率较低的字符使用较长的编码,从而提高压缩效率。
除了有损压缩和无损压缩算法之外,还有一种叫做字典压缩的算法。
字典压缩算法是一种无损压缩算法,它通过构建一个字典来减小数据的体积。
字典中存储了一系列已经出现过的字符串,当新的字符串出现时,可以用较短的索引来代替整个字符串。
这种算法在文本压缩中非常常见,例如LZ77和LZ78算法。
除了上述提到的常见压缩算法,还有许多其他的压缩算法被广泛应用于不同领域。
例如,在网络传输中,我们经常使用的压缩算法是Gzip和Deflate。
这些算法通过使用多种压缩技术的组合来减小数据的体积。
在数据库中,压缩算法可以提高查询和存储的效率,例如Snappy和LZ4。
时序数据的压缩技术

时序数据的压缩技术时序数据是一种特殊的数据形式,它记录了时间序列中的数据点,例如股票价格、传感器读数等。
由于时序数据具有时间相关性和连续性,因此可以使用一些特定的压缩技术来减小其存储和传输所需的资源。
下面将对时序数据的压缩技术进行详细解析。
一、时序数据的特性1.时间相关性:时序数据的时间戳和数据值之间存在一定的关联性。
例如,在股票价格时序数据中,当前时刻的数据值可能与之前时刻的数据值有关联。
2.连续性:时序数据通常具有连续的特性,即在时间轴上相邻的数据点之间存在一定的规律或趋势。
二、时序数据压缩技术1.差分压缩:利用时序数据的连续性,通过计算相邻数据点之间的差值来压缩数据。
由于相邻数据点之间存在一定的关联性,因此差值通常比原始数据更小,从而实现了压缩。
2.索引压缩:对于时序数据中的重复值或相似值,可以通过建立索引来减少存储空间。
索引可以指向相同或相似值的位置,从而减少数据的存储和传输量。
3.小波变换压缩:小波变换是一种信号处理技术,可以将时序数据分解成不同频率的分量,并对每个分量进行压缩。
由于时序数据在不同频率的分量中存在差异,因此小波变换可以有效地减小数据的存储和传输量。
4.字典压缩:字典压缩是一种无损压缩技术,通过建立字典来替换数据中的重复字符串或模式。
在时序数据中,如果存在重复的模式或字符串,可以使用字典压缩来减小数据的存储和传输量。
5.样本点插值:对于一些连续的时序数据,可以使用插值方法对样本点进行插值,从而减少数据的数量和大小。
插值方法可以使用多项式、样条曲线或其他数学方法来估计缺失的数据点。
总之,时序数据的压缩技术主要利用了其时间相关性和连续性等特点,通过不同的算法和技术实现数据的压缩和减小存储和传输所需的资源。
在实际应用中,可以根据具体场景和需求选择合适的压缩技术。
数据压缩 算法

数据压缩算法摘要:一、数据压缩算法概述1.数据压缩的意义和目的2.数据压缩算法的分类二、无损数据压缩算法1.哈夫曼编码2.算术编码3.LZW算法三、有损数据压缩算法1.预测编码2.变换编码3.量化与熵编码四、常见压缩格式与应用领域1.JPEG(图像压缩)2.MPEG(视频压缩)3.ZIP(文件压缩)五、我国在数据压缩领域的进展1.研究成果2.产业应用正文:一、数据压缩算法概述数据压缩是指在传输、存储和处理数据过程中,通过一定的算法减少数据量,提高数据传输和存储效率。
数据压缩的目的主要是降低存储成本、减少传输时间和提高数据处理速度。
根据压缩后数据是否能恢复原始数据,数据压缩算法可分为无损压缩和有损压缩两大类。
无损数据压缩算法是指在压缩过程中,压缩后的数据能够完全恢复成原始数据,通常应用于对数据准确性要求较高的场景。
常见的无损压缩算法包括哈夫曼编码、算术编码和LZW算法等。
哈夫曼编码是一种基于概率的字符编码方法,通过对字符出现的概率进行编码,实现数据的压缩。
算术编码则是利用源数据中字符出现的概率信息进行编码,同样具有较高的压缩比。
LZW算法则是一种基于字典的无损压缩算法,适用于重复模式较多的数据。
二、有损数据压缩算法有损数据压缩算法是指在压缩过程中,部分数据会被丢弃,无法完全恢复原始数据。
此类算法通常应用于对数据视觉效果要求较高的场景,如图像和视频压缩。
有损压缩算法主要包括预测编码、变换编码和量化与熵编码等。
预测编码利用前后帧图像的关联性减少冗余信息,从而实现压缩。
变换编码则是将图像或视频中的空间域数据转换为频域数据,再进行编码。
量化与熵编码则是对变换后的系数进行量化处理,并利用熵编码技术进一步压缩。
三、常见压缩格式与应用领域根据不同的应用场景,有不同的压缩格式。
如JPEG用于图像压缩,MPEG用于视频压缩,ZIP用于文件压缩等。
这些压缩格式在各自领域具有广泛的应用,为数据传输和存储带来了极大的便利。
实时数据库中的数据压缩技术

实时数据库中的数据压缩技术实时数据库中的数据压缩技术很高深很神秘。
转()现在的数据压缩理论和技术已经很成熟,大家可以看看我转摘的博文《数据压缩技术简史》,该文章浅显易懂,是一篇很好的关于数据压缩的科普文章。
在不同的应用领域,又可以针对不同的数据应用特征,引用不同的数据压缩技术,比如,图形处理领域的JEPG压缩技术,声音处理中的MP3压缩技术等。
在流程工业行业中,工业实时数据也有一定的变化规律,可以针对这些规律,研究特定的数据压缩算法。
下面是工业实时数据的一些特征:工业实时数据的数据变化具有一定波形规律;工业实时数据中只有一小部分测点的值经常发生改变;工业实时数据中很多测点的数值都具有慢变化的特征;数值变化与时间变化具有共同变化特性;用户在一定范围内,能够允许数据的精度损失;在工业应用领域中,常用的压缩算法分为三类:无损压缩;有损压缩;二级压缩;其中,无损压缩一般以通用压缩理论为基础,采取哈佛曼算法等经典的压缩算法;而有损压缩而更多地考虑了工业实时数据的特征,而采取的一些特殊舍点算法;二级压缩技术,则是同时利用了这两种数据压缩技术。
实时数据库的无损压缩以通用压缩理论为基础,随便找一本大学教材就能看懂,在此不再多说。
目前比较著名的有损压缩算法,有PI中使用的旋转门压缩算法,IH中使用的死区压缩算法,以及一些变通压缩算法(如在旋转门算法基础上改用二次均方差作为偏差比较,以提高数据还原精度),这些算法原理都比较简单。
网上有很多相关的文章,我在前几篇文章中提到的变化压缩算法,是死区压缩算法的简化变种,而liyaoer123同学在他的博客上帖出了osisoft关于旋转门压缩的技术文章,大家有兴趣可以去看看。
总而言之,实时数据库的压缩算法真的不难理解,只是实时数据库重多技术中的一种而已。
2.只要搞清楚数据压缩算法,就能编写好的实时数据库了。
这个问题要从两方面来分析。
首先要说明,数据压缩只是实时数据库中一个技术点,这个技术点相对于实时数据库其它技术点而言,难度和工作量是非常小的,我在《实时数据库的理论与技术》中,列出了实时数据库需关心的技术点,大家可以看看。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
申明:本文中思想及图片都是参照EVSystems(网址如下)说明文档,版权归其所有,鄙人只管翻译和归纳。
要转载本文也请说明出处,谢谢!
sfriedenthal@
实时数据压缩算法(GE Historian Compression Methods)
一、GE Historian Compression Methods
1. CC:Collector Compression
‘X’表示丢弃的数,圆表示保留的数。
方法:选一个点为起始点,以此点为中心,在y轴方向规定一个‘Dead band’区域,在区域内的点丢弃,直到遇到一个不再区域内的点,该点作为新的起始点,从而设定新的‘Dead band’区域。
此方法的缺点是:不能丢弃‘保持斜率不变’的点,如图中‘Constant slope line’。
2. AC:Archive Compression(存档压缩)
此方法通过判断斜率区域来丢弃多余的点,可识别并丢弃‘保持斜率不变’的点,AC一般在CC之后使用。
具体实现方法在下文中说明。
CC和AC组合实现实时数据压缩,统称为:GE Historian Compression Methods
二、OSI PI Swinging Door Comrpession(美国OSI公司:游泳门压缩)
方法:选一个点为起始点(存储点)如图中‘Archived Point’,图中‘New Point
’称为当前点。
然后依次选取后面的点(做当前点)做平行四边形,如下图所示:
当产生的平行四边形不能容纳上个存储点到当前点之间的所有数据点时,即
有数据点落在当前平行四边形覆盖面积之外时,则将‘当前点’的前一个数据点保存,作为新的存储点,其他点舍弃。
以此往复。
如下图所示:
判断一个点是否在当前平行四边形覆盖面积之内的方法如下图(能看懂就不翻译了):
该方法的缺点是:计算量大,CPU占时太多,程序实现复杂。
GE Historian Compression Methods和Swinging Door Comrpession不同之处在于:其丢弃点动作的触发条件不一样,它不计算一个点是否在平行四边形中,通过斜率范围来判断,即判断“存储点和但前点之间连线是否与他们中间各个点的dead band 线相交”,其判断方法及整体示意图如下两图所示:
此图存储点和但前点之间连线与黑色点的dead band 线的下半部相交
此图中红色点dead band未相交,触发‘丢弃点和存储新起始点’动作如果看懂了就可以不往下看了,没看懂或需详细了解的可看下面example。
三、GE Archive Compression 举例
该算法有个好处,就是程序不需缓存存储点到当前点之间的所有数据点,在举例之前再说明一下存储点和当前点:
存储点:Archived Point,作为起始的点,最后来看,是最终保存下来的的点(多为整个曲线的拐点)。
当前点:Held Point,当前需要判断的一个有效点,靠其下一个点来判断自己是否被丢弃,具体方法见下。
最新点:New Point,在Held Point之后,为最新取得的点。
计算U和L两条斜线的斜率,U和L是存储点分别和当前点的dead band 线两端连接构成的斜线,它们与前点的dead band 线一起构成区域‘Critical Aperture Window’。
在存档点与最新点之间连一条线,称为为‘N线’(line N) ,只要N线的斜率在U和L 两条斜线的斜率之间,则说明N线与当前点的dead band 线相交,则可丢弃当前点(Held Point)。
反之,则出发存档事件,存档事件的操作见下。
按上述方法一次判断后面的各个点,见下面多图,白色点均为过程中丢弃的点:
直到出现N线在‘Critical Aperture Window’外的情况发生,如下图:
出发存档事件,存档事件操作就是将Held
Point存储,并作为新的Archived Point,将New
Point设为新的Held Point,如右图所示。
后面的
步骤同,以此往复。
最后再次声明,版权归EVSystems所有:/。