转载整理自:
http://titan.iteye.com/
传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB:Disk-Resident
Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。
近年来,内存容量不断提高,价格不断下跌,操作系统已经可以支持更大的地址空间(计算机进入了64位时代),同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。
在数据库技术中,目前主要有两种方法来使用大量的内存。一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。另一种就是内存数据库(MMDB:Main
Memory
Database,也叫主存数据库)技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。两种技术的区别如下表:
内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,理想情况甚至可以达到1000倍。
而使用共享内存技术的实时系统和使用内存数据库相比有很多不足,由于优化的目标仍然集中在最小化磁盘访问上,很难满足完整的数据库管理的要求,设计的非标准化和软件的专用性造成可伸缩性、可用性和系统的效率都非常低,对于快速部署和简化维护都是不利的。
目前几种常见的通用内存数据库
eXtremeDB:eXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。eXtremeDB采用了新的磁盘融合技术,将内存拓展到磁盘,将磁盘当做虚拟内存来用,实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。
eXtremeDB内存式实时数据库是为实时系统及嵌入式系统而特别设计的数据库。与同类产品不同,eXtremeDB不是通过
对企业数据库面向实时嵌入式应用进行剪裁而来;而是总结了30年来McObject公司在编译器、实时编程、数据管理、内核级驱
动软件等领域的经验,面向实时嵌入式应用从头开发的最新实时数据管理技术。
eXtremeDB满足了您对实时数据库的一切期待:高级数据定义语言、并行访问、基于交易及灵活的索引…
…等等。不仅如此,出乎您的意外,eXtremeDB在紧凑的引擎中还提供诸如事件触发、目标历史等等功能。eXtremeDB嵌入式数据库满足更多的实时开发的要求。又一个商业内存数据库产品,这个特点是实时数据库,号称最快。
- 最快的内存数据库。
- 极小尺寸和极小的内存消耗
- 多种索引支持
- 高可用性-组合选项
- 非常灵活的数据存储: 内存式,磁盘式或混合式
- 多种应用接口: 两种 SQL, 两种更快的原始接口
- 几乎牢不可破
SolidDB:Solid Information Technology 成立于 1992
年,全球总部位于加州,Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体级高可用性及强大的数据复制功能紧密地融为一体。
Altibase:ALTIBASE公司从1999年就一直致力于内存数据库软件和其应用的开发,提供高性能和高可用性的软件解决方案。特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。目前占据80%以上内存数据库市场,可以说是当今数据库软件技术的领导者。目前Altibase在国内成功案例也比较多,尤其是在电信行业,已经得到了广泛认可。
Altibase™内存数据库管理系统(DBMS),内存数据管理系统的最新技术,是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。Altibase提供极限性能、容错能力和事务管理的方便性,特别是在通信、网上银行、证券交易、实时应用和嵌入式系统领域。Altibase能够最大限度的发挥数据库服务系统的潜力,使用Altibase能大大增强您公司的数据服务器的处理能力。
Altibase™内存DBMS为需要容错服务的系统提供实时数据库复制的功能。采用Altibase数据库复制的系统可以实现高性能、高可用性、数据库一致性、负载平衡和系统可伸缩性。如果您希望您的业务能够实现最大的成功,请在您的事务优先的系统中使用我们的Altibase数据库复制解决方案。
Oracle TimesTen:Oracle
TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防)
所需的即时响应性和非常高的吞吐量。Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的 SQL
接口对完全位于物理内存中的数据存储区进行操作。
Oracle 的内存数据库 TimesTen 从某种角度上来看,也是一种 Cache 机制,是磁盘数据库的
'Cache',通过物理内存中的数据存储区的直接操作,减少了到磁盘间的 I/O 交互。TimesTen 中的这个 Ten
据说就是指速度能达到基于磁盘的 RDBMS
10倍,从去年开始在国内市场也有很多活动,逐渐吸引了很多技术人员的注意。实际上,这个产品也是有一定潜在市场的。TimesTen
与基于磁盘的 RDBMS 架构的比较如下:
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。SQLite发行版包含一个独立的命令行访问程序(sqlite),可用于管理SQLite数据库,并适合作为一个如何使用SQLite库的例子。特性包括:
事务操作是原子,一致,孤立,并且持久的(ACID),即使在系统崩溃和电源故障之后。
-
零配置——不需要安装和管理。
-
实现了绝大多数SQL92标准。
-
整个数据库存储在一个单一的文件中。
-
数据库文件可以在不同字节序的机器之间自由地共享。
-
支持最大可达2T的数据库。 (241 字节)
-
字符串和BLOB类型的大小最大可达 2G 字节(231字节)。
- 小的代码:
完整配置的少于250KB,忽略一些可选特性的少于150KB。
-
在大多数常见操作上比流行的客户/服务器数据库引擎更快。
-
简单,易于使用的API。
- 内建TCL绑定。
另外提供可用于许多其他语言的绑定。
-
具有良好注释的源代码,95%经过测试。
-
独立:没有外部依赖。
-
源代码位于公共域。 可用于任何用途。
作为数据库引擎SQLite适用于中小规模流量的网站(也就是说, 99.9%的网站). 因为SQLite数据库几乎不需要管理,
因此对于那些无人值守运行或无人工技术支持的设备或服务, SQLite是一个很好的选择. SQLite能很好的适用于手机, PDA,
机顶盒, 以及其他仪器. SQLite作为桌面应用程序的本地磁盘文件格式取得了巨大成功.例如金融分析工具、CAD
包、档案管理程序等等.
SQLite和H2 Database内存数据库比较。
- 查询性能:查询一条记录 SQLite的性能要优于H2。查询(5000或10000)条 H2的性能要好于SQLite。
- 插入性能:性能差不多快,SQLite略快。
- 更新性能:更新一条记录
SQLite的性能好于H2。更新多条记录(有索引),SQLite【0.04s】的性能要好于H2【0.18s】
-
删除性能:删除一条记录.SQLite【非常小】的性能略好于H2【非常小】。删除多条记录,SQLite【0.078s】好于H2的【0.12s】
- 启动时间:都比较快
- 并发性能:H2的查询支持一定的并发性,要强于SQLite。更新和插入,基本上都没有并发可言。
总的看来,SQLite的性能要好于H2,但并发性不如。另外SQLite一般使用C的API接口访问,而H2支持JDBC。
并且都可以大多数主流平台上对于C\C++\C#应用而言,使用SQLite是更好的选择。对于Java应用,H2是不错的选择。