关系数据库、内存数据库、实时数据库的简单比较
很多情况下,用户会将实时数据库与关系数据库混为一谈,实际上,这两类产品的设计理念及应用场合是完全不同的。
内存数据库就是将数据放在内存中直接操作的数据库,它利用内存的读写速度比磁盘快、内存是随机访问而磁盘是顺序访问这两个特点,将数据保存在内存中,在内存中模仿建立表结构和索引结构并针对内存特性进行优化,相比从磁盘上访问,内存数据库能够提高应用的性能。
而实时数据库不但利用了内存的特性,而且考虑到工控行业的应用特性,将关系数据库的表结构和表关系简化,以进行性能的优化,并针对工控行业的数据特性,对数据进行压缩处理。
关系数据库、实时数据库与内存数据库相比,有如下差别:
数据库简单吗
比较项目
关系数据库
内存数据库
实时数据库
说明
表结构
完整
完整
简化
实时数据库不能处理复杂的表关系,但在特定行业的应用中,比如工控监控软件中,不需要复杂的表关系
每秒读写速度
3000
50000
500000
内存实时数据库比关系数据库快10倍左右,实时数据库比内存数据库快10倍左右
历史数据压缩
实时数据库比内存数据库的压缩率能达到20~40倍
4G空间能存贮30万个测点的每秒变化一次的历史数据(不带索引)
5小时
5小时
8.5天
在4G内存的情况下,在单服务器处理30万点的情况下,内存数据库只能存贮5小时以内的历史数据,在带索引时,只能保存3小时以内的历史数据。(详见我的博文《实时数据库存贮容量计算方法》)
128G空间能存贮30万个测点的每秒变化一次的历史数据(不带索引)
7天
7天
269天
内存数据库有般用在电信行业,国内电信行业应用的最大项目也就使用了90G内存,在128G内存下,内存数据库也只能保存7天的历史数据
是否需要历史数据库
不需要
需要
不需要
内存数据库还需要配套使用历史数据库,且历史数据库同样存在不能压缩、不能保存长时间海量历史数据的问题
从以上的表格可以看出,内存数据库与关系数据库相比,速度快10-20倍左右,且具有与关系数据库类似的完整表结构,因此在电信业处理大量实时事务业务时经常用到,它也可以应用在工控行业,比如,在很多电力行业SCADA软件中,都包含了一个小型的内存数据库系统(但不是真正意义上的内存数据库),但是,在超大型SCADA软件中,它仍不能满足需求,因为它性能比实时数据库慢10倍,且不能解决历史数据存贮的问题,还存在因为掉电导致大量数据丢失的风险。
以上的比较,指标并不全面,也并不是说,实时数据库一定比关系数据库和内存数据库好,只能说,需要针对不同应用的不同需求,做出综合决策,选择最适合自己需要的数据库产品。
最后,列举一些典型的内存数据库产品:
■ Oracle TimesTen
Oracle TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐
量。Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的 SQL 接口对完全位于物理内存中的数据存储区进行操作。
■ Altibase
Altibase是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。它提供高性能、容错能力和事务管理能力,特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。Altibase能够最大限度地发挥数据库服务系统的潜力,增强数据服务器的处理能力。Altibase支持客户端/服务器架构或嵌入式架构。其中客户端/服务器架构非常适合一般的应用。而嵌入式架构将应用程序嵌入到数据库服务器,适合于有高时效要求的实时系统。
■ eXtremeDB
eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。eXtremeDB采用了新的磁盘融合技术,将内存拓展到磁盘,将磁盘当做虚拟内存来用,实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。
实时数据库与关系数据库对比分析