内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,理想情况甚至可以达到1000倍。而使用共享内存技术的实时系统和使用内存数据库相比有很多不足,由于优化的目标仍然集中在最小化磁盘访问上,很难满足完整的数据库管理的要求,设计的非标准化和软件的专用性造成可伸缩性、可用性和系统的效率都非常低,对于快速部署和简化维护都是不利的。
ALTIBASE公司从1999年就一直致力于内存数据库软件和其应用的开发,提供高性能和高可用性的软件解决方案。特别适合通信、网上银行、证券交易、实时应用和嵌入式系统领域。目前占据80%以上内存数据库市场,可以说是当今数据库软件技术的领导者。目前Altibase在国内成功案例也比较多,尤其是在电信行业,已经得到了广泛认可.
SQLite是一个小型的C程序库,实现了独立的,可嵌入的,零配置的SQL数据库引擎。特性包括:
技术上的优点和特性SQLite是一个轻量级、跨平台的关系型数据库。
◇轻量级
先说它的第一个特色:轻量级。想必SQLite的作者很看重这个特性,连它的Logo都是用的“羽毛”,来显摆它的轻飘飘。SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。
◇绿色软件
SQLite的另外一个特点是绿色:它的核心引擎本身不依赖第三方的软件,使用它也不需要“安装”。所以在部署的时候能够省去不少麻烦。◇单一文件
所谓的“单一文件”,就是数据库中所有的信息(比如表、视图、触发器、等)都包含在一个文件内。这个文件可以copy到其它目录或其它机器上,也照用不误。
SQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化:
许多人喜欢SQLite因为它的小巧和快速.但是这些特性只是它的部分优点,使用者还会发现SQLite是非常稳定的.出色的稳定性源于它的简单,越简单就越不容易出错.除了上述的简单、小巧和稳定性外,最重要的在于SQLite力争做到简单化.
简单化在一个数据库引擎中可以说是一个优点,但也可能是个缺点,主要决定于你想要做什么.为了达到简单化,SQLite省略了一些人们认为比较有用的特性,例如高并发性、严格的存取控制、丰富的内置功能、存储过程、复杂的SQL语言特性、XML以及Java的扩展,超大的万亿级别的数据测量等等.如果你需要使用上述的这些特性并且不介意它们的复杂性,那么SQLite也许就不适合你了.SQLite没有打算作为一个企业级的数据库引擎,也并不打算和Oracle或者PostgreSQL竞争.
仅凭经验来说SQLite适用于以下场合:当你更看中简单的管理、使用和维护数据库,而不是那些企业级数据库提供的不计其数的复杂功能的时候,使用SQLite是一个比较明智的选择.事实也证明,人们在许多情况下已经清楚的认识到简单就是最好的选择.
·网站
作为数据库引擎SQLite适用于中小规模流量的网站(也就是说,99.9%的网站).SQLite可以处理多少网站流量在于网站的数据库有多大的压力.通常来说,如果一个网站的点击率少于100000次/天的话,SQLite是可以正常运行的.100000次/天是一个保守的估计,不是一个准确的上限.事实证明,即使是10倍的上述流量的情况下SQLite依然可以正常运行.
·嵌入式设备和应用软件
因为SQLite数据库几乎不需要管理,因此对于那些无人值守运行或无人工技术支持的设备或服务,SQLite是一个很好的选择.SQLite能很好的适用于手机,PDA,机顶盒,以及其他仪器.作为一个嵌入式数据库它也能够很好的应用于客户端程序.
·应用程序文件格式
SQLite作为桌面应用程序的本地磁盘文件格式取得了巨大成功.例如金融分析工具、CAD包、档案管理程序等等.一般的数据库打开操作需要调用sqlite3_open()函数,并且标记一个显式本地事务的起始点(BEGINTRANSACTION)来保证以独占的方式得到文件的内容.文件保存将执行一个提交(COMMIT)同时标记另一个显式本地事务起始点.这种事务处理的作用就是保证对于应用程序数据文件的更新是原子的、持久的、独立的和一致的.
数据库里可以加入一些临时的触发器,用来把所有的改变记录在一张临时的取消/重做日志表中.当用户按下取消/重做按钮的时候这些改变将可以被回滚.应用这项技术实现一个无限级的取消/重做功能只需要编写很少的代码.
·替代某些特别的文件格式
许多程序使用fopen(),fread(),或fwrite()函数创建和管理一些自定义的文件用来保存数据.使用SQLite替代这些自定义的文件格式将是一种很好的选择.
·内部的或临时的数据库
对于那些有大量的数据需要用不同的方式筛选分类的程序,相对于编写同样功能的代码,如果你把数据读入一个内存中的SQLite数据库,然后使用连接查询和ORDERBY子句按一定的顺序和排列提取需要的数据,通常会更简单和快速.按照上述的方法使用内嵌的SQLite数据库将会使程序更富有灵活性,因为添加新的列或索引不用重写任何查询语句.
·命令行数据集分析工具
有经验的SQL用户可以使用SQLite命令行程序去分析各种混杂的数据集.原是数据可以从CSV(逗号分隔值文件)文件中导入,然后被切分产生无数的综合数据报告.可能得用法包括网站日志分析,运动统计分析,编辑规划标准,分析试验结果.
当然你也可以用企业级的客户端/服务器数据库来做同样的事情.在这种情况下使用SQLite的好处是:SQLite的部署更为简单并且结果数据库是一个单独的文件,你可以把它存储在软盘或者优盘或者直接通过email发给同事.
·在Demo或测试版的时候作为企业级数据库的替代品
如果你正在编写一个使用企业级数据库引擎的客户端程序,使用一个允许你连接不同SQL数据库引擎的通用型数据库后台将是很有意义的.其更大的意义在于将SQLite数据库引擎静态的连接到客户端程序当中,从而内嵌SQLite作为混合的数据库支持.这样客户端程序就可以使用SQLite数据库文件做独立的测试或者验证.
·数据库教学
因为SQLite的安装和使用非常的简单(安装过程几乎忽略不计,只需要拷贝SQLite源代码或sqlite.exe可执行文件到目标主机,然后直接运行就可以)所以它非常适合用来讲解SQL语句.同学们可以非常简单的创建他们喜欢的数据库,然后通过电子邮件发给老师批注或打分.对于那些感兴趣怎样实现一个关系型数据库管理系统(RDBMS)的高层次的学生,按照模块化设计且拥有很好的注释和文档的SQLite源代码,将为他们打下良好的基础.这并不是说SQLite就是如何实现其他数据库引擎的精确模型,但是很适合学生们了解SQLite是如何快速工作的,从而掌握其他数据库系统的设计实现原则.
·试验SQL语言的扩展
SQLite简单且模块化的设计使得它可以成为一个用来测试数据库语言特性或新想法的优秀的原型平台
·客户端/服务器程序
好的经验告诉我们,应该避免在许多计算机需要通过一个网络文件系统同时访问同一个数据库的情况下使用SQLite.
·高流量网站
SQLite通常情况下用作一个网站的后台数据库可以很好的工作.但是如果你的网站的访问量大到你开始考虑采取分布式的数据库部署,那么你应当毫不犹豫的考虑用一个企业级的客户端/服务器数据库来替代SQLite.
·超大的数据集
当你在SQLite中开始一个事务处理的时候(事务处理会在任何写操作发生之前产生,而不是必须要显示的调用BEGIN...COMMIT),数据库引擎将不得不分配一小块脏页(文件缓冲页面)来帮助它自己管理回滚操作.每1MB的数据库文件SQLite需要256字节.对于小型的数据库这些空间不算什么,但是当数据库增长到数十亿字节的时候,缓冲页面的尺寸就会相当的大了.如果你需要存储或修改几十GB的数据,你应该考虑用其他的数据库引擎.
·高并发访问
方面
具体要求
必要条件
详细描述
License
是否收费
免费使用
是否开源
开源
是否有技术支持
主要是社区支持,如果需要专业支持需要购买
商业目的的分发版本是否仍要收费
是
免费
其他
性能
数据容量支持100000条以上记录
支持
并发查询处理能力
SQLite在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。
查询速度
修改速度
平台支持
32/64位
全部支持
Linux/window/UNIX/mobile
支持Linux/MacOS/Windows
运行方式支持
支持嵌入式
支持独立运行
不支持
连接方式支持
支持ODBC
默认不支持,必须通过第三方的ODBC驱动
支持JDBC
默认不支持,必须通过第三方的JDBC驱动
支持内存访问
通过c接口(专用API)
支持网络访问
SQL支持
支持SQL
支持Index,Trigger,
Constrains,Views
支持,有资料说其不支持外键约束。
管理界面
支持管理界面
支持CLI
管理界面友好程度
较差
Altibase内存数据库管理系统(DBMS),内存数据管理系统的最新技术,是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。Altibase提供极限性能、容错能力和事务管理的方便性,特别是在通信、网上银行、证券交易、实时应用和嵌入式系统领域。Altibase能够最大限度的发挥数据库服务系统的潜力,使用Altibase能大大增强您公司的数据服务器的处理能力。
Altibase内存DBMS为需要容错服务的系统提供实时数据库复制的功能。采用Altibase数据库复制的系统可以实现高性能、高可用性、数据库一致性、负载平衡和系统可伸缩性。如果您希望您的业务能够实现最大的成功,请在您的事务优先的系统中使用我们的Altibase数据库复制解决方案。
资料比较少,且需要商业License,没有详细去研究
Oracle是最重要的商业数据库产品提供商,它也有内存数据库的产品系列:主要就是OracleBerkeleyDB和TimesTen.前者是只支持嵌入式内存数据,后者是独立的内存优化数据库。
OracleBerkeleyDB是Oracle收购了开源数据库厂商后推出的产品,其前身是BerkeleyDB。它有开源版本,但且对于开源软件免费。商业版本是要付费。
OracleBerkeleyDB系列的可嵌入开源数据库为开发人员提供了无需管理的快速、可靠的本地持久性。OracleBerkeleyDB系列通常部署为“前沿”数据库,为不需要SQL的应用程序用例提供很高的性能、可靠性、可伸缩性以及可用性。
OracleBerkeleyDB产品系列
—针对Java环境优化的纯Java版BerkeleyDB—新增!版本3.3
eXtremeDB内存式实时数据库是为实时系统及嵌入式系统而特别设计的数据库。与同类产品不同,eXtremeDB不是通过对企业数据库面向实时嵌入式应用进行剪裁而来;而是总结了30年来McObject公司在编译器、实时编程、数据管理、内核级驱动软件等领域的经验,面向实时嵌入式应用从头开发的最新实时数据管理技术。
eXtremeDB满足了您对实时数据库的一切期待:高级数据定义语言、并行访问、基于交易及灵活的索引……等等。不仅如此,出乎您的意外,eXtremeDB在紧凑的引擎中还提供诸如事件触发、目标历史等等功能。
eXtremeDB嵌入式数据库满足更多的实时开发的要求。
·最快的内存数据库。
·高可用性-组合选项
·几乎牢不可破-
又一个商业内存数据库产品,这个特点是实时数据库,号称最快。
4.5H2Database
它的主要特性是:
其他特性还包括
性能比较(摘自h2database网站)
TestCase
Unit
H2
HSQLDB
Derby
Simple:Init
ms
610
657
3187
Simple:Query(random)
297
312
1828
Simple:Query(sequential)
203
266
1766
Simple:Update(random)
1078
1484
22031
Simple:Delete(sequential)
234
281
7407
Simple:MemoryUsage
MB
6
7
11
BenchA:Init
859
438
4047
BenchA:Transactions
5266
2875
17500
BenchA:MemoryUsage
9
14
10
BenchB:Init
4016
2687
16875
BenchB:Transactions
2609
3282
4250
BenchB:MemoryUsage
8
BenchC:Init
891
594
5766
BenchC:Transactions
4359
75438
11718
BenchC:MemoryUsage
18
Executedstatements
#
594255
Totaltime
20422
88314
96375
Statementspersecond
29098
6728
6166
包括Derby,HSQLDB等.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------