4.1.2 哪些场合适合使用其他的关系型数据库管理系统( RDBMS )
· 客户端/ 服务器程序
如果你有许多的客户端程序要通过网络访问一个共享的数据库, 你应当考虑用一个客户端/ 服务器数据库来替代SQLite. SQLite 可以通过网络文件系统工作, 但是因为和大多数网络文件系统都存在延时, 因此执行效率不会很高. 此外大多数网络文件系统在实现文件逻辑锁的方面都存在着bug( 包括Unix 和windows). 如果文件锁没有正常的工作, 就可能出现在同一时间两个或更多的客户端程序更改同一个数据库的同一部分, 从而导致数据库出错. 因为这些问题是文件系统执行的时候本质上存在的bug, 因此SQLite 没有办法避免它们.
好的经验告诉我们, 应该避免在许多计算机需要通过一个网络文件系统同时访问同一个数据库的情况下使用SQLite.
· 高流量网站
SQLite 通常情况下用作一个网站的后台数据库可以很好的工作. 但是如果你的网站的访问量大到你开始考虑采取分布式的数据库部署, 那么你应当毫不犹豫的考虑用一个企业级的客户端/ 服务器数据库来替代SQLite.
· 超大的数据集
当你在SQLite 中开始一个事务处理的时候( 事务处理会在任何写操作发生之前产生, 而不是必须要显示的调用BEGIN...COMMIT), 数据库引擎将不得不分配一小块脏页( 文件缓冲页面) 来帮助它自己管理回滚操作. 每1MB 的数据库文件SQLite 需要256 字节. 对于小型的数据库这些空间不算什么, 但是当数据库增长到数十亿字节的时候, 缓冲页面的尺寸就会相当的大了. 如果你需要存储或修改几十GB 的数据, 你应该考虑用其他的数据库引擎.
· 高并发访问
SQLite 对于整个数据库文件进行读取/ 写入锁定. 这意味着如果任何进程读取了数据库中的某一部分, 其他所有进程都不能再对该数据库的任何部分进行写入操作. 同样的, 如果任何一个进程在对数据库进行写入操作, 其他所有进程都不能再读取该数据库的任何部分. 对于大多数情况这不算是什么问题. 在这些情况下每个程序使用数据库的时间都很短暂, 并且不会独占, 这样锁定至多会存在十几毫秒. 但是如果有些程序需要高并发, 那么这些程序就需要寻找其他的解决方案了.
方面 | 具体要求 | 必要条件 | 详细描述 |
License | 是否收费 |
| 免费使用 |
是否开源 |
| 开源 | |
是否有技术支持 |
| 主要是社区支持,如果需要专业支持需要购买 | |
商业目的的分发版本是否仍要收费 | 是 | 免费 | |
其他 |
|
| |
性能 | 数据容量支持 100000 条以上记录 | 是 | 支持 |
并发查询处理能力 |
| SQLite 在并发(包括多进程和多线程)读写方面的性能一直不太理想。数据库可能会被写操作独占,从而导致其它读写操作阻塞或出错。 | |
查询速度 | 是 |
| |
修改速度 | 是 |
| |
平台支持 | 32/64 位 |
| 全部支持 |
Linux/window/UNIX/mobile |
| 支持 Linux/Mac OS/Windows | |
运行方式支持 | 支持嵌入式 |
| 支持 |
支持独立运行 |
| 不支持 | |
连接方式支持 | 支持 ODBC |
| 默认不支持,必须通过第三方的 ODBC 驱动 |
支持 JDBC |
| 默认不支持,必须通过第三方的 JDBC 驱动 | |
支持内存访问 |
| 通过 c 接口(专用 API ) | |
支持网络访问 |
| 不支持 | |
SQL 支持 | 支持 SQL | 是 | 支持 |
支持 Index , Trigger , Constrains , Views |
| 支持,有资料说其不支持外键约束。 | |
管理界面 | 支持管理界面 |
| 支持 CLI |
管理界面友好程度 |
| 较差 |
4.2 Altibase
Altibase™ 内存数据库管理系统( DBMS ),内存数据管理系统的最新技术,是一个在事务优先的环境中提供高性能和高可用性的软件解决方案。 Altibase 提供极限性能、容错能力和事务管理的方便性,特别是在通信、网上银行、证券交易、实时应用和嵌入式系统领域。 Altibase 能够最大限度的发挥数据库服务系统的潜力,使用 Altibase 能大大增强您公司的数据服务器的处理能力。
Altibase™ 内存 DBMS 为需要容错服务的系统提供实时数据库复制的功能。采用 Altibase 数据库复制的系统可以实现高性能、高可用性、数据库一致性、负载平衡和系统可伸缩性。如果您希望您的业务能够实现最大的成功,请在您的事务优先的系统中使用我们的 Altibase 数据库复制解决方案。
资料比较少,且需要商业 License ,没有详细去研究
4.3 Oracle 内存数据库系列 Berkeley DB 和 TimesTen
Oracle 是最重要的商业数据库产品提供商,它也有内存数据库的产品系列:主要就是 Oracle Berkeley DB 和 Times Ten. 前者是只支持嵌入式内存数据,后者是独立的内存优化数据库。
4.3.1 Oracle Berkeley DB
Oracle Berkeley DB 是 Oracle 收购了开源数据库厂商后推出的产品,其前身是 Berkeley DB 。它有开源版本,但且对于开源软件免费。商业版本是要付费。
Oracle Berkeley DB 系列的可嵌入开源数据库为开发人员提供了无需管理的快速、可靠的本地持久性。 Oracle Berkeley DB 系列通常部署为 “ 前沿 ” 数据库,为不需要 SQL 的应用程序用例提供很高的性能、可靠性、可伸缩性以及可用性。
Oracle Berkeley DB 产品系列
— Berkeley DB — 事务处理式存储引擎,用于基本键/ 值数据结构中的非类型化数据 — 新增!版本 4.7 现已推出
— 针对 Java 环境优化的纯 Java 版 Berkeley DB — 新增!版本 3.3
— Berkeley DB XML — 原生 XML 数据库,可基于 XQuery 访问容器中存储的文档,并根据其内容进行索引 — 新增!版本 2.4 现已推出
4.3.2 Oracle TimesTen
Oracle 内存数据库 TimesTen 是一个针对内存进行了优化的关系数据库,它为应用程序提供了当今实时企业和行业(如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。 Oracle 内存数据库 TimesTen 作为独立或嵌入式数据库部署在应用层中,利用标准的 SQL 接口对完全位于物理内存中的数据库进行操作。它也可以用作 Oracle 数据库的内存中数据库缓存,以改进用户应用程序的响应时间和吞吐量。
4.4 eXtremeDB
eXtremeDB 内存式实时数据库是为实时系统及嵌入式系统而特别设计的数据库。与同类产品不同, eXtremeDB 不是通过 对企业数据库面向实时嵌入式应用进行剪裁而来;而是总结了 30 年来 McObject 公司在编译器、实时编程、数据管理、内核级驱 动软件等领域的经验,面向实时嵌入式应用从头开发的最新实时数据管理技术。
eXtremeDB 满足了您对实时数据库的一切期待:高级数据定义语言、并行访问、基于交易及灵活的索引 … … 等等。不仅如此,出乎您的意外, eXtremeDB 在紧凑的引擎中还提供诸如事件触发、目标历史等等功能。
e Xtreme DB 嵌入式数据库满足更多的实时开发的要求。
· 最快的内存数据库。
· 多种索引支持
· 高可用性 - 组合选项
· 非常灵活的数据存储: 内存式,磁盘式或混合式
· 多种应用接口: 两种 SQL , 两种更快的原始接口
· 几乎牢不可破 -
又一个商业内存数据库产品,这个特点是实时数据库,号称最快。