实时数据库简介(转载)
1.前言
一提到数据库,大家肯定会想到SQL Server、Oracle等关系型数据库。实际上,数据库的种类非常多,在计算机发展的历史上,存在着多种类型的数据库。
早期,关系型数据库与层次型数据库、网络型数据库并驾齐驱,但关系型数据库依靠其描述简单、实现容易等特点,在竞争中取得了胜利,在上世纪90年代初期,从Foxpro、Access到Oracle、Informix、SyBase、SQL server,关系型数据库一统天下。
但在特定的应用领域中,关系型数据库并不能完美表现,于是,产生了新的数据库类型:在协同办公领域中使用的文档型数据库(如NOTES),在嵌入式应用领域中使用的嵌入式数据库(如SQLite),在工业监控领域使用的实时数据库(如PI)等等。
本文章将对实时数据库进行简单的介绍。
2.在工业监控领域中,数据库应用的特点
工业监控系统的定义非常大,所有需要对运行设备进行自动化监视、控制的系统都可以定义为工业监控系统,这里面就包括火电厂厂级监控系统(SIS),在这类应用领域中,数据库应用有如下特点:
2.1 测点数量多
一个新建300WM的火电厂的SIS系统,需要处理的测点数超过了10000点,这些测点的变化周期通常在1秒钟之内,也就是说,需要将超过10000点的数据在1秒钟之内保存到数据库中。
2.2 存储量大
实时数据库的核心就是对大量的实时信息进行处理,由于成年累月的数据将占据大量的硬盘空间。例如对于 1万点的系统,每 1秒钟存储一次,每次单点占用 8个字节,那么保存 10年的数据量将有 10000*8*10*365*86400=25228800000000字节,也就是 23TGB。若用 80GB的硬盘存放,需要存放 293块硬盘!
2.3 时效性强
每个需要处理的测点的值都与时间相关,一秒钟之后的数据与一秒钟之前的数据可能就不一样了,因此,在保存测点值的同时,必须通过某种方法将其对应的时间也纪录起来。
3.不选择关系型数据库的理由
关系型数据库,较难处理工业控制领域的数据。主要原因是:
3.1 插入速度慢
一般关系型数据库是基于事务处理的,在处理失效后,还要回滚作业。所以至少要存放两处,该机制使速度较慢;既使用今日的Intel P4 双至强类CPU,在对2000 个测点进行插入时也用占用10s 以上的时间。而工业监控系统需要面对的是数万点的实时数据以秒级的间隔存放数据。
3.2 维护困难
商用数据库为了保证完整性,所有的内容往往放在一个文件内,这对海量数据的存放维护发生困难。如果有一个200G 的数据库,完全备份就可能要一天。备份文件中有一个错误就可能导致200G 的备份文件失效,所以不实用。
3.3 不能满足实时应用的需求
用数据库存放实时数据据及查询方式不能满足实时应用的需要。一个简单的例子是假定以1 秒为间隔存放好了数据,一周有数据604800 组,但是现要以60 秒为间隔取出其中10080 组或者以等间隔原则取出8888 组,标准SQL 语法就较难实现。
因此,工业监控领域以及电厂SIS应用领域,必须寻找适合实时应用需要的实时数据库系统。
4.实时数据库的压缩算法介绍
实时数据库系统的技术核心在于数据压缩。需要将数据经压缩后再存入硬盘,当需要用数据时再解压缩硬盘上的数据。目前用于国内外实时数据库上的压缩算法通常分为两类:无损压缩和有损压缩。
4.1 无损压缩
大多数信息的表达都存在着一定的冗余度,通过采用一定的模型和编码方法,可以降低这种冗余度。Huffman编码是无损压缩中非常著名的算法之一。WinRar和WinZip等软件都采用了类似Huffman编码的压缩方式。这些压缩方法的共同特点是:压缩和解压过程中,信息不会发生变化。
在实时数据库中,也可以采用这些无损压缩技术,但是在实现时,必须要考虑压缩和解压缩的效率,如果某个压缩算法的压缩比非常高,但是其解压的速度非常慢,则肯定不能用于实时数据库中,否则,人们在查询数据时,会等待得失去耐心。
4.2 有损压缩
相对于无损压缩,有缩压缩肯定会丢失一些信息,但必须要保证这些丢失的信息不能影响系统数据的精度。大家在其它领域中也遇到过有损压缩的应用,比如:JPG图像压缩就是一种有损压缩,MP3声音压缩也是一种有损压缩。
在实时数据库中,有损压缩主要有两种方法:死区压缩和趋势压缩。
4.3 死区压缩
所谓死区就是定义某一测点的值不变的范围。采用死区压缩就是记录该点死区之外的数据值。例如有一测点 A,定义其死区为 1%,上次记录的测点值为 110.00,那么此次采集的测点值为 111.00,那么两者差值(111-110)/110<1%,那么认为此次测点值在该点的死区范围内,则认为不变化,即不记录。若下一次测点值为 120.00,那么两者差值(120-110)/110>1%,那么认为此次测点值在该点的死区范围外,则认为变化,记录。
4.4 趋势压缩
趋势压缩,是根据测点的阶段性趋势进行压缩,原则上只记录满足趋势条件的起点和终点。PI的旋转门压缩技术是该类算法的典范。
一般的趋势压缩如上图所示,T1到 T2时刻某测点的值保持者该趋势,那么在此趋势上下的两条容差线将是下一时刻点的死区范围,若下一时刻 T3在此两条两条容差线之间,那么不记录此值,两条容差线将适用于下一时刻,若下一时刻 T4在此两条两条容差线之外,则记录该值,趋势发生改变,两条容差线将发生改变,下一时刻测点将按改变后的容差线来判断。
5.实时数据库的访问方式
5.1 使用实时数据库提供的API
这种方式效率最高,也最简单。
5.2 使用ODBC
大部分实时数据库提供了标准的ODBC接口,也提供了SQL查询语言,通过这些方法,用户可以将实时数据库当作一个标准的数据库来使用。但这种方法速度较慢,且不能体现实时数据的全部优势。
5.3 使用OPC方式(OLE for Process Control)
因为太多的数据库和DCS使用自己的API方式存取数据,无法做到算法的通用,因为工业监控领域提出了一个标准的存取接口,这就是OPC,如今有超过两百家产商加入到OPC组织中,声势浩大。
6.可供选择的实时数据库产品
目前进入国内市场比较成熟的实时数据库产品如下所列:
美国OSIsoft公司,PI;
美国Wonderware公司,IndustrialSQL Server,简称INSQL;
美国 GE,Intellution公司,iHistorian;
美国 InStep公司,eDNA;
美国HONEYWELL公司,Process History Database,简称PHD ;
美国AspenTech公司,InfoPlus;
总的来说,国外实时数据库产品在工业监控行业占垄断地位。其中OSIsoft公司的PI采用了旋转门压缩专利技术和独到的二次过滤技术,使进入到PI数据库的数据经过了最有效的压缩,极大地节省了硬盘空间,是效率最高,使用最简单,使用最广泛的实时数据库。因为其杰出的性能,PI已经多次提高了它的价格。
7.总结
实时数据库在 SIS 系统中起着非常重要的作用,是SIS系统存贮数据的基础。实时数据库是一种特殊类型的数据库系统,但它有许多与关系型数据库存在差异。只有理解了这些相同之处和差异部分,才能对实时数据库有更深地了解。
原文地址:https://www.ngui.cc/zz/2278453.html?action=onClick
SIS 安全仪表系统:http://www.360doc.com/content/21/0607/02/75670407_980792289.shtml
posted on 2023-05-04 11:12 wangzhiliang 阅读(633) 评论(0) 编辑 收藏 举报