今天心情不好,写写文章散散心。

我在文章《实时数据库领域中有关数据压缩的认识误区》中提到,在工业应用领域中,常用的压缩算法分为三类:无损压缩、有损压缩、二级压缩。二级压缩技术,同时利用了无损压缩、有损压缩这两种数据压缩技术。

liyaoer123同学很好学也很好问,他问到:“我有点疑问,通过旋转门压缩后的数据基本上是没有重复量了,二次压缩这个词应该不能准确表达意思。”

首先要提醒liyaoer123同学一下,旋转门压缩只是有损压缩的一种,osisoft公司似乎还拥有旋转门压缩的技术专利,我们还是少提它吧。

常用的几种的有损压缩的方法都类似,主要是抽取那些特征点,以特征点的连线来近似地表示原始数据曲线,如下两图所示。

图一 压缩前,总共有52个采集点

图二 压缩后,只有6个特征点

二级压缩的概念,是在已进行有损压缩的基础上,再次对数据进行压缩。

对于二级压缩,需要考虑如下如下两方面的问题:

1、为什么需要进行二级压缩?

在《实时数据库领域中有关数据压缩的认识误区》中,我已提到,对实时数据库而言,数据压缩可以带来两方面的好处:占用硬盘容量减小、系统整体处理速度提高。

随着计算机硬件水平的提高,硬件成本在整个系统投入的比重逐步下降,硬盘容量不再是实时数据库中最主要的矛盾,但对系统整体处理速度及性能的追求,还是非常重要的。

关于压缩性能和系统整体处理速度及性能的指标,我经常面对两类指责。

有一些人对我说,我们保必要追求那么高的压缩比,何必要追求那么快的处理速度,只要够用就行了,我们还是将精力放在系统的稳定性和可靠性方面吧,似乎对指标的追求导致了系统稳定性的下降。

而另外一些人则对我说,你们中国人只知道在低层次上的技术水平上竞争,现在PI的最新的版本已支持单服务器1000万点,而国内这些实时数据库厂家还在10万点这个层次上竞争。

对这两类指责,我不想评价是与非,只想说,不管我们做什么,都会有不同的意见,关键的问题是,我们自己想做出什么东西。

对于MES系统集成商,实时数据库只是其中一个子系统,只要够用就行,而作为实时数据库的提供商,我们希望我们的实时数据库系统在各个指标方面,包括稳定性和可靠性方面,也包括功能的完备性和需求的准确性,都能全面与国外产品抗衡,因此,对性能的追求是一直会坚持走下去的。

写到这里,跑一下题。这前段时间在全国几处地方跑了跑,与很多客户进行了技术和商务交流,当我们提到,我们的实时数据库的数据读写指标为每秒30万次,他们大部分表示了惊讶:不对呀,PI和IH都是每秒2万到10万呀,你们的实时数据库怎么比那些国外的品牌还要强呀。

再将马拉回来,我在《此实时数据库非彼实时数据库》中提到,压缩比例的提高,对实时数据库的整体性能的提高有很大的推动作用(但不一定成正比),因此,有必要分析一下,能否对已经进行有损压缩处理的数据进行二级压缩。

2、如何进行二级压缩?

从刚才分析的情况,大家很可能就得出结论,行呀,先通过有损压缩,将点数由52个变成6个,再对剩下的6个点进行编码,再进行哈佛曼压缩或别的什么压缩,不就行了?

没这么简单。

哈佛曼压缩的特点是,将那些经常使用的字母用较小长度的字节表示,这在文本和字符串压缩中会有比较大的效果,比如英文那个e就是用得很多的,而汉字中的五笔字型也有一级编码、二级编码等,也就是说,它们具有可压缩的余地。

如果大家对随机的数据点,比如刚才6个数据点,采用哈佛曼或其它无损压缩试验,会发现压缩率不会特别地高,也就是说,再次进行无损压缩的意义已经不是特别地大。

难度就没有别的办法了?办法还是有的,要完整地表达测点的一个数据,需要包括以下四个字段:

  • 测点ID
  • 时间戳
  • 质量戳

其中,同一测点的多个数据可以保存在一起,因此,测点ID可以不考虑。还剩下三个字段,仔细分析一下这三个字段的特性,还是有很多文章可做的。

先考虑“值”字段,我们采用8字节的双精度数来表示一个模拟量,这里就存在一个由低精度值来表示高精度值的可能。如果一批数据中,全部(或大部分)数据都可以由4个字节(或2个字节)来表示精度误差范围内的8字节双精度数,便可以节省下很多空间了。

当然,如果我们能明确地知道某数据的精度范围,便可直接在配置环境下选择最合适的数据类型,而不必要一定要选择双精度数。

对于值,还有另一种压缩思路,在流程工业中,某值的绝对值可能非常大,但如果该值在某时间段时的变量范围在某个精度范围内,也可以采用基准值+变化值的方式保存值,其中基准值只保存一次,而变化值用低精度值表示。

质量戳

质量戳是慢变化量,如果不与值共同保存,则可以有很高的压缩比。但如果不共同保存,则需要考虑查找的索引方式,这是一笔额外的空间开销。

时间戳

对于时间戳,也可以按照值相类似的方式来考虑。

首先,那个毫秒字段,不一定是每个系统每个测点都需要的。再者,两个时间之间的相差值,在大部分情况下,不会超过1天的,这个就可以采用简化表示。还有,现在的系统,肯定不需要再处理时间为2000年以前的时间了。

以上只是分析,在实际系统中,还需要考虑这些因素的制约关系,解压的难度和时间度,索引建立的方便性,以及编程的复杂度。

转载于:https://www.cnblogs.com/linkman/archive/2007/11/17/962427.html

实时数据库中的二级压缩技术相关推荐

  1. QEMU-KVM中的多线程压缩迁移技术

    导读 目前的迁移技术,都是通过向QEMUFILE中直接写入裸内存数据来达到传送虚拟机的目的端,这种情况下,发送的数据量大,从而会导致更高的迁移时间(total time)和黑宕时间(downtime) ...

  2. 【ELT.ZIP】OpenHarmony啃论文俱乐部——点燃主缓存压缩技术火花

    本文出自ELT.ZIP团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英. 成员: 上海工程技术大学大二在校生 合肥师范学院大二在校生 清华大学大二在校生 ...

  3. Bundle捆绑压缩技术

    Bundle捆绑压缩技术由命名空间System.Web.Optimization中的类提供.顾名思义,这些类是用来优化Web页面性能的,它们通过压缩文件大小,捆绑文件(把多个文件合成一个下载文件)来实 ...

  4. 【模型蒸馏】从入门到放弃:深度学习中的模型蒸馏技术

    点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要17分钟 跟随小博主,每天进步一丢丢 来自 | 知乎   作者 | 小锋子Shawn 地址 | https://zhuanlan.zhihu.c ...

  5. 【MyBatis学习13】MyBatis中的二级缓存

    1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的.为了更加 ...

  6. java 压缩技术_Java压缩技术(三) ZIP解压缩——Java原生实现

    JavaEye的朋友跟我说:"你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读".ok,面向读者需求,我做调整,这里单说ZIP解压缩! 相关链接: Jav ...

  7. 音视频通话:小议音频处理与压缩技术

    在视频或者音频通话过程中,一方面为了减小原始声音数据的传输码率,需要进行音频压缩,另一方面为了得到更高质量的音质,需要进行音频处理.那么,如何处理好这两方面,保证声音传播的高真性?本篇文章将会结合网易 ...

  8. 四篇NeurIPS 2019论文,快手特效中的模型压缩了解一下

    在即将过去的 2019 年中,快手西雅图实验室在 ICLR.CVPR.AISTATS.ICML 和 NeurIPS 等顶会上发表了十多篇论文. 除了这些研究方面的成果,针对实际业务,西雅图实验室和快手 ...

  9. Netflix选择AVIF作为下一代图片压缩技术

    Photo by John-Mark Smith from Pexels Netflix在情人节当天公开AVIF作为下一代图片压缩技术,同其宣布在Android端采用AV1视频编解码格式仅相隔一周时间 ...

最新文章

  1. 成都网络推广带大家了解一个好的标题需遵循的原则有哪些?
  2. Fedora 23如何安装LAMP服务器
  3. Python中异常处理的用法
  4. java 飞信接口_java 飞信接口
  5. adams2016安装教程
  6. python文件存储过程_python调用MySql存储过程
  7. word2vec相似度计算_文档相似度助力搜索引擎
  8. (十四)【RecSys 2016】Personalized Recommendations using Knowledge Graphs: A Probabilistic【看不懂】
  9. mysql8.0与mysql7.0_MySQL 5.7 vs 8.0,哪个性能更牛?
  10. MySQL进阶篇(01):基于多个维度,分析服务器性能
  11. python 相对路径报错_小白学 Python(18):基础文件操作
  12. 你不知道的javascript_为什么前端要学JavaScript?JS都有哪些逆天的功能?
  13. linux fastboot工具,Linux下使用Fastboot给手机刷机
  14. 使用 VBRichClient 库
  15. Pdf格式文件怎么修改
  16. Python.习题七 函数(上)
  17. requests和xml的结合应用
  18. 双十一投影买什么?投影仪该如何选择?家用投影详细选购攻略
  19. ICPC训练联盟2021寒假冬令营(5)_2021.01.22_笔记
  20. wtc java 代码 tpcall(servicename_[转载]Dorado+Spring+Wtc+Tuxedo开发

热门文章

  1. testng 组_TestNG组
  2. jqueryui时间插件_jQueryUI菜单插件教程示例
  3. 开课吧:MySQL索引的使用知识有哪些?
  4. vue中动态添加组件
  5. 自制微信小程序通讯JS
  6. 传递一个父id返回所有子id的用法,可用于删除父级以下的所有子级
  7. 巧用XP的Hosts文件 防止误进恶意网站
  8. 简单制作RPM二进包实例(转)
  9. 基于proxychains4进行终端加速 wget,curl等
  10. CC1101魔幻的收发切换机制