这里比较四个内存数据库系统情况,分别是Timesten、AltiBase、ExtremeDB、CacheDB(自研),需要说明的是,这是这段时间的粗略感性认识(并没有经过一段时间的使用,是换不来理性的客观认识) 一、市场与技术支持比较 项目 市场及应用领域比较 排行 Timesten
这里比较四个内存数据库系统情况,分别是Timesten、AltiBase、ExtremeDB、CacheDB(自研),需要说明的是,这是这段时间的粗略感性认识(并没有经过一段时间的使用,是换不来理性的客观认识)
一、市场与技术支持比较
项目
市场及应用领域比较
排行
Timesten
全球化,领域全面,金融领域有应用。
AltiBase
韩国及东南亚,分布较广,电信市场为主体
Extreme
全球化,领域全面,在国内的金融领域有大商所撮合系统、国际有印度证券风控系统
CacheDB
集中在电信、广电、监控领域。…
项目
金融领域和电信领域对数据库的要求特性比较
金融领域
数据的复杂度和量很高很大。传统应用对数据访问性能要求不高,近年来对性能要求在提高
电信领域
数据的复杂度较低,量很大,对数据访问性能要求一直都很高。
项目
市场及应用领域比较
排行
Timesten
市场老大,不见得会强力支持。
AltiBase
中国区的技术支持力量薄弱。
Extreme
感觉会提供更好的支持。
CacheDB
… …
二、数据库集成特性比较
项目
耦合特性比较
排行
Timesten
松耦合(独立的不同进程),可采用共享内存直连和CS两种模式进行访问。
AltiBase
松耦合(独立的不同进程),可采用共享内存直连和CS两种模式进行访问。
Extreme
紧耦合(作为一个库嵌入应用进程),可通过共享内存进行不同应用间的数据共享。
CacheDB
既支持紧耦合模式(小容量,作为一个库嵌入应用进程)、也支持松耦合模式(大容量,独立的不同进程,采用CS模式进行访问)
项目
接口特性比较
排行
Timesten
JDBC/ODBC/OCI,支持SQL交互
AltiBase
JDBC/ODBC/ACI,XDB支持API,支持SQL交互
Extreme
API,支持SQL交互
CacheDB
API,支持SQL交互
项目
系统复杂度
排行
Timesten
难管理
AltiBase
较易管理
Extreme
易管理
CacheDB
易管理
三、数据库通用特性比较
项目
表特性比较
排行
Timesten
行表;
AltiBase
行表
Extreme
行表、列表,还可并存
CacheDB
行表
项目
索引特性比较
排行
Timesten
T树、散列(静态,可通过语句动态调整),主/外键
AltiBase
B树、散列(静态,可通过语句动态调整),主/外键
Extreme
B树、散列(动态,但可能会影响应用的访问)、KD树、R树、前缀匹配树可以通过OID等实现
CacheDB
散列(静态,可修改配置重启生效,负载均衡模式下对业务不受影响),
T树(目前不支持范围查询,仅仅用在漫游号码分配应用中)
前缀匹配树(用作号码分析)
不支持主/外键
项目
视图
排行
Timesten
支持
AltiBase
只读
Extreme
不支持
CacheDB
只读,相比传统视图而言,功能更简单。
项目
事务特性比较(目前风控系统不需要事务)
排行
Timesten
支持事务模型,默认不立即提交。
AltiBase
支持事务模型,默认立即提交。
Extreme
支持事务模型,必须手工提交。(非事务系统操作麻烦一些)
CacheDB
不支持事务模型。
项目
序列特性比较(目前风控系统不需要序列)
排行
Timesten
支持
AltiBase
支持
Extreme
不清楚是否支持
CacheDB
不支持
项目
触发器特性比较。
如果紧耦合模式下,一般不需要,但从数据库复制数据到应用时应该支持。
松耦合模式下,应该要能支持(把部分计算的工作放在数据库后台,为的是减少通信量)
排行
Timesten
支持脚本性触发器或外挂C性驱动,但支持的特性不清楚
AltiBase
支持脚本性触发器,但支持的特性不清楚
Extreme
支持C性驱动,通过Event实现事件触发等。
CacheDB
支持C性驱动,紧耦合方式下,仅在数据库动态通知到应用时支持。松耦合模式下在应用修改时也支持(动态库架构)。
项目
数据类型比较
排行
Timesten
与Oracle一样
AltiBase
支持C数据类型和扩展类型
Extreme
支持所有的C数据类型,还支持时间,变长数据类型及大文件数据类型如,string,vector,blob。
CacheDB
仅支持C数据类型
项目
查询特性比较(无条件查询、条件查询 、分段查询 、分组查询、排序查询、模糊查询)
排行
Timesten
都支持
AltiBase
都支持
Extreme
都支持,可以通过API和SQL等模式进行排序查询,另外也还要落实大量的排序字段对系统性能的冲击(这个需要根据应用场景进行测试,因素包括事务大小,环境信息等)。
CacheDB
不支持分组查询、排序查询、模糊查询、范围查询
目前模糊查询的具体需求还不清楚,如果只是正则表达式模式,还是比较好加的。
增强范围查询的能力较难,范围查询支持后,分组排序查询就不是难点。
四、数据库持久特性比较
项目
纯内存表
排行
Timesten
支持
AltiBase
支持
Extreme
支持
CacheDB
支持
项目
部分字段持久化
排行
Timesten
不支持
AltiBase
不支持
Extreme
不支持
CacheDB
支持
项目
本地文件持久化
排行
Timesten
支持
AltiBase
支持
Extreme
支持
CacheDB
支持
项目
数据库持久化
排行
Timesten
支持Oracle,其它数据库的持久化,需要应用自行扩展
AltiBase
支持HDB持久化(性能较好),但HDB接受程度需要打问号。
其它数据库的持久化,需要应用自行扩展
Extreme
不支持,需要应用自行扩展
CacheDB
支持Oracle、MySql、SyBase无缝集成。尤其是Oracle和MySql
第一个排行是指支持的能力,第二个排行指支持的性能
项目
数据库部分列加载
排行
Timesten
支持
AltiBase
不支持
Extreme
X
CacheDB
支持
项目
数据库部分行加载
排行
Timesten
支持,还能进行动态换出
AltiBase
不支持
Extreme
X
CacheDB
支持,不能进行动态换出
项目
数据库故障对系统的影响
排行
Timesten
无影响,有本地CheckPoint文件和增量日志
AltiBase
无影响,压根不从数据库读。
XDB+HDB配合下,是很好的模式,但是任然需要应用干预。
Extreme
无影响,有本地数据库文件和redo,undo日志
CacheDB
无影响,有本地备份文件和增量日志
项目
数据库变更对应用的反向复制
排行
Timesten
需要另外的组件,其它特性不清楚
AltiBase
无需另外的组件,利用复制特性实现,其它特性不清楚
Extreme
可以根据项目提供
CacheDB
需要另外的组件,可触发应用,便于做处理
项目
数据入库特性
排行
Timesten
同步日志
AltiBase
同步日志,采用复制特性实现
Extreme
同步日志
CacheDB
同步日志,
项目
高频数据持久化策略(均没有入库的优化方案)
排行
Timesten
无特别方案
AltiBase
无特别方案
Extreme
无特别方案
CacheDB
目前高频数据采用本地保存的策略
五、数据库部署特性比较
项目
主备方案
排行
Timesten
支持,但需要应用层总裁
AltiBase
无,需要应用管理
Extreme
无,需要应用管理
CacheDB
无,需要应用管理
项目
均衡方案
排行
Timesten
支持,但不支持持久化
AltiBase
支持,复制模型较复杂,最多32个节点
Extreme
支持,无节点限制
CacheDB
支持,最多16个节点
项目
本地表支持情况
排行
Timesten
不清楚,从演示情况看,没有体现出来
AltiBase
支持,因为复制是基于表级别的
Extreme
支持,同时支持distributed特性,scatter和gather方式
CacheDB
支持,
项目
数据复制模型
排行
Timesten
仅仅TCP,数据库级别复制
AltiBase
仅仅TCP,表级别复制
Extreme
主播、单播TCP、管道、单播UDP,表级别复制
CacheDB
主播或单播TCP,数据库级别复制
项目
部分字段或部分记录的复制支持
排行
Timesten
全表复制
AltiBase
全表复制
Extreme
全表复制
CacheDB
支持部分复制
六、数据库一致性特性比较
项目
数据库一致性策略
排行
Timesten
支持事务,支持全同步方式(性能低),也支持异步模式
AltiBase
支持事务,支持全同步方式(性能低),也支持异步模式
Extreme
支持事务,支持全同步方式(性能低),也支持异步模式
CacheDB
不支持事务,采用异步方式,允许系统暂时的不一致
项目
数据库冲突补救
排行
Timesten
无
AltiBase
无
Extreme
可以通过mvcc的事务管理器进行冲突回滚,操作遵守ACID性
CacheDB
有单独的组件,进行不同节点数据的一致性检查(包括与持久性数据库系统之间),并提供策略让应用恢复数据,原则是“错,也要错成一致”
七、数据库性能特性比较
项目
数据库性能特性比较
排行
Timesten
有公司做过比较测试
AltiBase
Extreme
CacheDB
没有做过纯内存表的测试,从均衡测试情况来看,性能应该与Extreme相当
八、综合比较(没加权重)
(1)没有加权的统计,并不一定能说明什么问题。
统计
Timesten
AltiBase
Extreme
CacheDB
(2)从应用市场来看,Extreme无疑占据较大优势,无论从市场占有率还是在金融领域的应用,都是相当不错的。
(3)从数据库与应用集成特性来看,CacheDB和Extreme的集成难度最小、AltiBase稍高、Timesten最大。
(4)从数据库通用特性来看,Extreme、AltiBase、Timesten都差不多,CacheDB因为不支持范围查询(虽有T树索引),而相对较弱。
(5)从持久性上看,CacheDB无疑排在首位。Extreme不具备数据库持久化能力,需要应用层做工作【工作量应该很大】,如果接受HDB的持久化模式,在持久化性能上应该最好,否则也和Extreme一样。另外还有一个重要特性CacheDB可以支持临时字段。
(6)从分布式模式上看,CacheDB无疑排在首位。其次是Extreme,再就是AltiBase,Timesten最差。
(7)从数据一致性上看,强一致性的AltiBase、Timesten无疑性能低,所以用处不大,非强一致性的模式下,CacheDB提供了一致性补救措施。
(8)从性能上看,无疑Extreme和CacheDB都占据头号位置,而Timesten最差。
综合来看:
(1) 如果CacheDB支持了范围查询,无疑是首选。
(2) 如果ExtremeDB支持了Oracle数据库的持久化,无疑是首选。
(3) 如果大家能接受AltiBase的私有磁盘数据库系统,或者支持Oracle数据库系统,无疑是首选。
(4) 如果上面都不满足,那就只能选择Timesten。