实时数据库简介

1. 前言
一提到数据库,大家肯定会想到SQL Server、Oracle等关系型数据库。实际上,数据库的种类非常多,在计算机发展的历史上,存在着多种类型的数据库。
早期,关系型数据库与层次型数据库、网络型数据库并驾齐驱,但关系型数据库依靠其描述简单、实现容易等特点,在竞争中取得了胜利,在上世纪90年代初期,从Foxpro、Access到Oracle、Informix、SyBase、SQL server,关系型数据库一统天下。
但在特定的应用领域中,关系型数据库并不能完美表现,于是,产生了新的数据库类型:在协同办公领域中使用的文档型数据库(如NOTES),在嵌入式应用领域中使用的嵌入式数据库(如SQLite),在工业监控领域使用的实时数据库(如PI),等等。
从发展的历史看, 数据库是数据管理的高级阶段, 它是由文件管理系统发展起来的。  关系数据库产生于20 世纪 60 年代, 是目前在数据库领域中应用最为广泛的数据库产品,主要用于人、财、物的管理,广泛服务于各个行业的管理领域。实时数据库是随着 20 世纪 80 年代工业信息化的发展而产生的, 主要服务于流程企业的生产领域,目前已延伸应用于非流程工业。它的功能主要是将生产过程中产生的大量实时数据采集和存储下来为下一步的优化分析提供数据基础。 关系数据库的发展已成熟, 实时数据库则尚处于发展阶段, 应用空间较大。 除关系数据库、实时数据库外, 其他类型的数据库主要被用来满足特定领域对数据存储的个性化需求,因此它们的应用范围往往限于某一领域,如:应用于网络搜索的非结构化数据库等。
实时数据库的实时性、压缩效率和检索能力等方面远远优于关系数据库。在流程工业中由于生产线规模很大、流程很长,在任一时点生产线均会产生大量生产数据(如:温度、压力、流量等) ,只有采用实时数据库才能对如此大量生产数据进行存储。

2. 数据库种类
2.1. 关系型数据库
关系数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM首先提出,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为数据库架构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。关系型数据库有着以下特点:
容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。
使用方便:通用的SQL语言使得操作关系型数据库非常方便,程序员甚至于数据管理员可以方便地在逻辑层面操作数据库,而完全不必理解其底层实现。
易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。
目前,关系数据库广泛应用于各个行业,用于构筑管理信息系统,如ERP,MIS,EAM等重要系统,是构建管理信息系统,存储及处理关系数据的不可缺少基础软件。
2.2. 实时数据库
实时数据库是数据库系统发展的一个分支,它适用于处理不断更新的快速变化的数据及具有时间限制的事务处理。实时数据库技术是实时系统和数据库技术相结合的产物。实时数据库最起初是基于先进控制和优化控制而出现的,对数据的实时性要求比较高,因而实时、高效、稳定是实时数据库最关键的指标。
早期实时数据库的概念即我们所说的内存数据库,其相当于数据中枢的作用,将厂级相互孤立的DCS数据有效整合起来,在厂级应用中某个DCS的数据可为其他DCS的工艺算法提供数据支持,其有效解决了数据孤岛问题,拓展了DCS的功能,因而,实时数据库在先进控制和优化控制中起到了尤为重要的作用。
但早期的内存数据库并不能有效的解决实时数据的细时间粒度压缩存储,工业模型对象数值属性高度分类抽象,大容量数据的高效实时检索及处理等关键问题。而实时数据库在数据通信、数据组织、数据存储、数据检索、数据访问、数据处理、数据展现等方面的专业化及产品化,为构建基于大容量实时历史数据之上的分析应用提供了便捷稳定的数据支撑,使应用系统可以从更高更深层次充分利用宝贵的生产实时历史数据。
目前,实时数据库已广泛应用于电力、石油石化、交通、冶金、军工、环保等行业,是构建工业生产调度监控系统、指挥系统,生产实时历史数据中心的不可缺少的基础软件。
2.3. 两种数据库的差别
2.3.1. 数据的组织方式
实时数据库可以简单地理解为它是这样的数据库:由测点信息库、实时数据库、历史数据库三个数据库组成。
测点信息库含有一个测点基本信息字段的一张表,这个表以测点标签作为关键字,对应一条测点基本信息的记录包含一条测点的基本配置信息,如压缩偏差,例外偏差,测点描述等。用户可从此数据库中查询测点的基本信息。实时数据库是内存快照数据库,反映了生产实时数据的时间戳、数值、质量等秒级变化。用户可从此数据库中查询生产实时数据的实时数据值(值,时间戳,质量)。
历史数据库是含有一个以测点名称字段和时间字段为关键字的一张表,这张表的另外的一个重要的字段就是数值字段,用来存储测点的采集值,除了这些字段,还可以包含数据的状态,数据质量字段等。随着时间的变化,不断地将实时数据库中的实时数据进行压缩过滤,并更新磁盘历史数据文件中的表里的数据。用户可从此数据库中查询生产实时数据的历史样本值或历史插值数据。

而对于关系数据库则是根据各个实体之间的关系来设计数据表的。
2.3.2. 系统稳定性
由于实时数据库记录的是和生产相关的数据,并且和时间相关,所以要求其必须能够长时间稳定运行,否则就会导致数据的丢失。目前一些实时数据库已经具有缓存数据的功能,当数据采集机器和实时数据库服务器之间通信出现故障时,可以把采集到的数据缓存到本地,当通信恢复正常后,把缓存的数据写入到实时数据库服务器中,极大地保证了数据的完整性。

而对于关系数据库来说,如果不是应用在关键业务,比如金融证券等,对稳定要求一般来说不是很高。
2.3.3. 数据来源
针对不同的类型的企业,实时数据库的数据的来源也不尽相同。主要来源有DCS控制系统,数据采集系统(SCADA),手工录入,关系数据库等。这些数据的主要特点就是都和生产直接相关,并且大多数的数据都是数值型数据,比如设备或介质的压力、温度、流量、位置、电压、电流、功率等。
关系数据库的来源更加多样。除了记录数值数据外,也记录描述性的数据,如姓名家庭住址等信息。
一般来说,实时数据库的数据来源一般是设备。而关系数据库的数据来源一般是来自于人。
2.3.4. 数据压缩
实时数据库因为存储的数据量非常大,比如要采集10000点的数据,每5秒采集一个数据,假设采集的都是32位浮点数,那么一天的数据量(仅数值属性不含时间属性)就是10000*(60/5)*60*24*4/1024=675000K,大约675M的数据。由此可见数据量的庞大,而且占用磁盘的空间大,对数据的访问速度也会降低。因此各个数据库厂家大都开发出自己的数据压缩算法,对数据进行压缩。常用的压缩算法可以分为三类:无损压缩,有损压缩,二级压缩。其中,无损压缩一般以通用压缩理论为基础,采取huffman等经典的压缩算法;而有损压缩则更多地考虑了工业实时数据的特征,而采取的一些特殊舍点算法;二级压缩技术,则是同时利用了这两种数据压缩技术。实时数据库的无损压缩以通用压缩理论为基础。目前比较著名的有损压缩算法,有常用的旋转门压缩算法,以及一些变通压缩算法(如在旋转门算法基础上改用二次均方差作为偏差比较,以提高数据还原精度),这些算法原理都比较简单。

关系型数据库则不会对数据进行压缩。
2.3.5. 数据的访问方式
实时数据库一般有以下3种方式访问数据
1)     使用自己的API,这种方式效率最高也最简单。
2)     使用ODBC或者OLEDB,这种方式不大常用,主要是给那些刚刚接触实时数据库或者以前对关系型数据库了解的用户使用的。
3)     使用Opc方式访问数据。Opc是一种广泛使用的工业标准,虽然效率不高,但是目前很多的厂家都支持。

关系数据库访问数据的方式是通过结构化查询语言(SQL)来访问的。
2.3.6. 应用领域
过程控制系统是实时数据库系统最重要的应用领域之一.在生产装置运行过程中,实时数据库实时记录采集装置的运行数据,随时掌握装置的运行状况,并通过对生产过程的关键数据的监控和分析,对出现的问题及时处理,使生产的运行状态保持安全平稳,当生产状况发生变化时可以及时作出反映;通过对影响原材料用量的过程监视以及对水电汽的用量的监测分析,可以及时发现问题,特别对生产调度人员来说,可以及时地平衡物料供应,减少单耗,提高经济效益。

而关系数据库的应用则广泛的多,在各行各业基本都可以见到。大多数应用在管理方面,比如管理信息系统(MIS),客户关系管理(CRM)等。
2.3.7. 客户端工具
实时数据库由于目前并没有统一的标准,各个实时数据库客户端工具基本上都是由厂商自己提供的,主要是数据展示工具,组态工具,管理工具等。因为主要是面向流程工业,所以实时数据库都带有组态和发布工具。

关系数据库因为应用范围广泛,客户工具相当丰富。除了厂商提供的工具外,第三方软件厂商也可以为关系数据库厂商开发客户端工具。
3. 实时数据库特点
工业监控系统的定义非常大,所有需要对运行设备进行自动化监视、控制的系统都可以定义为工业监控系统,这里面就包括火电厂厂级监控系统(SIS),在这类应用领域中,数据库应用有如下特点:测点数据多、存储量大、时效性强等。
3.1. 测点数量多
一个新建300WM的火电厂的SIS系统,需要处理的测点数超过了10000点,这些测点的变化周期通常在1秒钟之内,也就是说,需要将超过10000点的数据在1秒钟之内保存到数据库中。
3.2. 存储量大
实时数据库的核心就是对大量的实时信息进行处理,由于成年累月的数据将占据大量的硬盘空间。例如对于 1万点的系统,每 1秒钟存储一次,每次单点占用 8个字节,那么保存 10年的数据量将有 10000*8*10*365*86400=25228800000000字节,也就是 23TGB。若用 80GB的硬盘存放,需要存放 293块硬盘!
3.3. 时效性强
每个需要处理的测点的值都与时间相关,一秒钟之后的数据与一秒钟之前的数据可能就不一样了,因此,在保存测点值的同时,必须通过某种方法将其对应的时间也纪录起来。

4. 不选择关系型数据库的理由
关系型数据库,较难处理工业控制领域的数据。主要原因是:
4.1. 插入速度慢
一般关系型数据库是基于事务处理的,在处理失效后,还要回滚作业。所以至少要存放两处,该机制使速度较慢;既使用今日的Intel P4 双至强类CPU,在对2000 个测点进行插入时也用占用10s 以上的时间。而工业监控系统需要面对的是数万点的实时数据以秒级的间隔存放数据。
4.2. 维护困难
商用数据库为了保证完整性,所有的内容往往放在一个文件内,这对海量数据的存放维护发生困难。如果有一个200G 的数据库,完全备份就可能要一天。备份文件中有一个错误就可能导致200G 的备份文件失效,所以不实用。
4.3. 不能满足实时应用的需求
用数据库存放实时数据据及查询方式不能满足实时应用的需要。一个简单的例子是假定以1 秒为间隔存放好了数据,一周有数据604800 组,但是现要以60 秒为间隔取出其中10080 组或者以等间隔原则取出8888 组,标准SQL 语法就较难实现。
因此,工业监控领域以及电厂SIS应用领域,必须寻找适合实时应用需要的实时数据库系统。

实时数据库压缩算法
实时数据库系统的技术核心在于数据压缩。需要将数据经压缩后再存入硬盘,当需要用数据时再解压缩硬盘上的数据。目前用于国内外实时数据库上的压缩算法通常分为两类:无损压缩和有损压缩。
4.1 无损压缩
大多数信息的表达都存在着一定的冗余度,通过采用一定的模型和编码方法,可以降低这种冗余度。Huffman编码是无损压缩中非常著名的算法之一。 WinRar和WinZip等软件都采用了类似Huffman编码的压缩方式。这些压缩方法的共同特点是:压缩和解压过程中,信息不会发生变化。
在实时数据库中,也可以采用这些无损压缩技术,但是在实现时,必须要考虑压缩和解压缩的效率,如果某个压缩算法的压缩比非常高,但是其解压的速度非常慢,则肯定不能用于实时数据库中,否则,人们在查询数据时,会等待得失去耐心。
4.2 有损压缩
相对于无损压缩,有缩压缩肯定会丢失一些信息,但必须要保证这些丢失的信息不能影响系统数据的精度。大家在其它领域中也遇到过有损压缩的应用,比如:JPG图像压缩就是一种有损压缩,MP3声音压缩也是一种有损压缩。
在实时数据库中,有损压缩主要有两种方法:死区压缩和趋势压缩。
 死区压缩
所谓死区就是定义某一测点的值不变的范围。采用死区压缩就是记录该点死区之外的数据值。例如有一测点 A,定义其死区为 1%,上次记录的测点值为 110.00,那么此次采集的测点值为 111.00,那么两者差值(111-110)/110<1%,那么认为此次测点值在该点的死区范围内,则认为不变化,即不记录。若下一次测点值为 120.00,那么两者差值(120-110)/110>1%,那么认为此次测点值在该点的死区范围外,则认为变化,记录。
 趋势压缩
趋势压缩,是根据测点的阶段性趋势进行压缩,原则上只记录满足趋势条件的起点和终点。PI的旋转门压缩技术是该类算法的典范。


实时数据库系统市场分析
分类 类型 厂商-产品 优缺点
外资 OSI-PI
Aspen-InfoPlus.21
Honeywell-PHD
Instep-Edna
Wonderware-Historian
Rockwell-RSSQL
Siemens-SIMATIC-IT-Historian
内资 北京华恒信远-PI
北京和利时-HiRIS
浙江中控-ESP-iSYS
上海麦杰-OpenPlant
中科启信-Aglior
北京亚控-KingRDB
北京三维力控-pSpace
紫金桥-RealDB


未完待续……

猜你喜欢

转载自xuejiangtao.iteye.com/blog/2110333