在很多情况下,用户很容易将实时数据库与关系数据库混为一谈,实际上,这两类产品的设计理念及应用场合是xx不同的。特别是在电厂SIS、化工MES中弄清这个概念尤为重要。为此本人又整理总结了一下:
内存数据库就是将数据放在内存中直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而磁盘是顺序访问这两个特点,将数据保存在内存中,在内存中模仿建立表结构和索引结构并针对内存特性进行优化,相比从磁盘上访问,内存数据库能够提高应用的性能。
而实时数据库不但利用了内存的特性,而且考虑到工控行业的应用特性,将关系数据库的表结构和表关系简化,以进行性能的优化,并针对工控行业的数据特性,对数据进行压缩处理。
关系数据库、实时数据库与内存数据库相比,有如下差别:
比较项目
|
关系数据库
|
内存数据库
|
实时数据库
|
说明
|
表结构
|
完整
|
完整
|
简化
|
实时数据库不能处理复杂的表关系,但在特定行业的应用中,比如工控监控软件中,不需要复杂的表关系
|
每秒读写速度
|
3000
|
50000
|
500000
|
内存实时数据库比关系数据库快10倍左右,实时数据库比内存数据库快10倍左右
|
历史数据压缩
|
无
|
无
|
有
|
实时数据库比内存数据库的压缩率能达到20~40倍
|
4G空间能存贮30万个测点的每秒变化一次的历史数据(不带索引)
|
5小时
|
5小时
|
8.5天
|
在4G内存的情况下,在单服务器处理30万点的情况下,内存数据库只能存贮5小时以内的历史数据,在带索引时,只能保存3小时以内的历史数据。(详见我的博文《实时数据库存贮容量计算方法》)
|
128G空间能存贮30万个测点的每秒变化一次的历史数据(不带索引)
|
7天
|
7天
|
269天
|
内存数据库有般用在电信行业,国内电信行业应用的{zd0}项目也就使用了90G内存,在128G内存下,内存数据库也只能保存7天的历史数据
|
是否需要历史数据库
|
不需要
|
需要
|
不需要
|
内存数据库还需要配套使用历史数据库,且历史数据库同样存在不能压缩、不能保存长时间海量历史数据的问题
|
实时数据库与关系数据库对比分析
从以上的表格可以看出,内存数据库与关系数据库相比,速度快10-20倍左右,且具有与关系数据库类似的完整表结构,因此在电信业处理大量实时事务业务时经常用到,它也可以应用在工控行业,比如,在很多电力行业SCADA软件中,都包含了一个小型的内存数据库系统(但不是真正意义上的内存数据库),但是,在超大型SCADA软件中,它仍不能满足需求,因为它性能比实时数据库慢10倍,且不能解决历史数据存贮的问题,还存在因为掉电导致大量数据丢失的风险。
以上的比较,指标并不全面,也并不是说,实时数据库一定比关系数据库和内存数据库好,只能说,需要针对不同应用的不同需求,做出综合决策,选择最适合自己需要的数据库产品。