内存数据库的比较

这里比较四个内存数据库系统情况,分别是Timesten、AltiBase、ExtremeDB、CacheDB(自研),需要说明的是,这是这段时间的粗略感性认识(并没有经过一段时间的使用,是换不来理性的客观认识)

 

一、市场与技术支持比较

项目

市场及应用领域比较

排行

Timesten

全球化,领域全面,金融领域有应用。

2

AltiBase

韩国及东南亚,分布较广,电信市场为主体

4

Extreme

全球化,领域全面,在国内的金融领域有大商所撮合系统、国际有印度证券风控系统

1

CacheDB

集中在电信、广电、监控领域。…

3

 

项目

金融领域和电信领域对数据库的要求特性比较

金融领域

数据的复杂度和量很高很大。传统应用对数据访问性能要求不高,近年来对性能要求在提高

电信领域

数据的复杂度较低,量很大,对数据访问性能要求一直都很高。

 

项目

市场及应用领域比较

排行

Timesten

市场老大,不见得会强力支持。

3

AltiBase

中国区的技术支持力量薄弱。

4

Extreme

感觉会提供更好的支持。

2

CacheDB

… …

1

 

二、数据库集成特性比较

项目

耦合特性比较

排行

Timesten

松耦合(独立的不同进程),可采用共享内存直连和CS两种模式进行访问。

3

AltiBase

松耦合(独立的不同进程),可采用共享内存直连和CS两种模式进行访问。

2

Extreme

紧耦合(作为一个库嵌入应用进程),可通过共享内存进行不同应用间的数据共享。

4

CacheDB

既支持紧耦合模式(小容量,作为一个库嵌入应用进程)、也支持松耦合模式(大容量,独立的不同进程,采用CS模式进行访问)

1

 

项目

接口特性比较

排行

Timesten

JDBC/ODBC/OCI,支持SQL交互

4

AltiBase

JDBC/ODBC/ACI,XDB支持API,支持SQL交互

3

Extreme

API,支持SQL交互

2

CacheDB

API,支持SQL交互

1

 

项目

系统复杂度

排行

Timesten

难管理

4

AltiBase

较易管理

2

Extreme

易管理

1

CacheDB

易管理

1

 

三、数据库通用特性比较

项目

表特性比较

排行

Timesten

行表;

2

AltiBase

行表

2

Extreme

行表、列表,还可并存

1

CacheDB

行表

3

 

项目

索引特性比较

排行

Timesten

T树、散列(静态,可通过语句动态调整),主/外键

2

AltiBase

B树、散列(静态,可通过语句动态调整),主/外键

2

Extreme

B树、散列(动态,但可能会影响应用的访问)、KD树、R树、前缀匹配树可以通过OID等实现

1

CacheDB

散列(静态,可修改配置重启生效,负载均衡模式下对业务不受影响),

T树(目前不支持范围查询,仅仅用在漫游号码分配应用中)

前缀匹配树(用作号码分析)

不支持主/外键

3

 

 

 

 

项目

视图

排行

Timesten

支持

1

AltiBase

只读

2

Extreme

不支持

3

CacheDB

只读,相比传统视图而言,功能更简单。

2

 

项目

事务特性比较(目前风控系统不需要事务)

排行

Timesten

支持事务模型,默认不立即提交。

1

AltiBase

支持事务模型,默认立即提交。

1

Extreme

支持事务模型,必须手工提交。(非事务系统操作麻烦一些)

2

CacheDB

不支持事务模型。

3

 

项目

序列特性比较(目前风控系统不需要序列)

排行

Timesten

支持

1

AltiBase

支持

1

Extreme

不清楚是否支持

2

CacheDB

不支持

2

 

项目

触发器特性比较。

如果紧耦合模式下,一般不需要,但从数据库复制数据到应用时应该支持。

松耦合模式下,应该要能支持(把部分计算的工作放在数据库后台,为的是减少通信量)

排行

Timesten

支持脚本性触发器或外挂C性驱动,但支持的特性不清楚

2

AltiBase

支持脚本性触发器,但支持的特性不清楚

2

Extreme

支持C性驱动,通过Event实现事件触发等。

2

CacheDB

支持C性驱动,紧耦合方式下,仅在数据库动态通知到应用时支持。松耦合模式下在应用修改时也支持(动态库架构)。

1

 

项目

数据类型比较

排行

Timesten

与Oracle一样

3

AltiBase

支持C数据类型和扩展类型

2

Extreme

支持所有的C数据类型,还支持时间,变长数据类型及大文件数据类型如,string,vector,blob。

1

CacheDB

仅支持C数据类型

1

 

项目

查询特性比较(无条件查询、条件查询<索引查询、非索引查询,定值查询、范围查询>、分段查询<游标>、分组查询、排序查询、模糊查询)

排行

Timesten

都支持

1

AltiBase

都支持

1

Extreme

都支持,可以通过API和SQL等模式进行排序查询,另外也还要落实大量的排序字段对系统性能的冲击(这个需要根据应用场景进行测试,因素包括事务大小,环境信息等)。

2

CacheDB

不支持分组查询、排序查询、模糊查询、范围查询

目前模糊查询的具体需求还不清楚,如果只是正则表达式模式,还是比较好加的。

增强范围查询的能力较难,范围查询支持后,分组排序查询就不是难点。

4

 

四、数据库持久特性比较

项目

纯内存表

排行

Timesten

支持

1

AltiBase

支持

1

Extreme

支持

1

CacheDB

支持

1

 

项目

部分字段持久化

排行

Timesten

不支持

4

AltiBase

不支持

4

Extreme

不支持

4

CacheDB

支持

1

 

项目

本地文件持久化

排行

Timesten

支持

1

AltiBase

支持

1

Extreme

支持

1

CacheDB

支持

1

 

项目

数据库持久化

排行

Timesten

支持Oracle,其它数据库的持久化,需要应用自行扩展

2-2

AltiBase

支持HDB持久化(性能较好),但HDB接受程度需要打问号。

其它数据库的持久化,需要应用自行扩展

3-1

Extreme

不支持,需要应用自行扩展

4-4

CacheDB

支持Oracle、MySql、SyBase无缝集成。尤其是Oracle和MySql

1-2

第一个排行是指支持的能力,第二个排行指支持的性能

 

项目

数据库部分列加载

排行

Timesten

支持

1

AltiBase

不支持

4

Extreme

X

4

CacheDB

支持

1

 

项目

数据库部分行加载

排行

Timesten

支持,还能进行动态换出

1

AltiBase

不支持

4

Extreme

X

4

CacheDB

支持,不能进行动态换出

2

 

项目

数据库故障对系统的影响

排行

Timesten

无影响,有本地CheckPoint文件和增量日志

1

AltiBase

无影响,压根不从数据库读。

XDB+HDB配合下,是很好的模式,但是任然需要应用干预。

2

Extreme

无影响,有本地数据库文件和redo,undo日志

4

CacheDB

无影响,有本地备份文件和增量日志

1

 

项目

数据库变更对应用的反向复制

排行

Timesten

需要另外的组件,其它特性不清楚

3

AltiBase

无需另外的组件,利用复制特性实现,其它特性不清楚

1

Extreme

可以根据项目提供

4

CacheDB

需要另外的组件,可触发应用,便于做处理

2

 

项目

数据入库特性

排行

Timesten

同步日志

2

AltiBase

同步日志,采用复制特性实现

1

Extreme

同步日志

4

CacheDB

同步日志,

2

 

项目

高频数据持久化策略(均没有入库的优化方案)

排行

Timesten

无特别方案

4

AltiBase

无特别方案

4

Extreme

无特别方案

3

CacheDB

目前高频数据采用本地保存的策略

1

 

五、数据库部署特性比较

项目

主备方案

排行

Timesten

支持,但需要应用层总裁

4

AltiBase

无,需要应用管理

1

Extreme

无,需要应用管理

1

CacheDB

无,需要应用管理

1

 

项目

均衡方案

排行

Timesten

支持,但不支持持久化

4

AltiBase

支持,复制模型较复杂,最多32个节点

2

Extreme

支持,无节点限制

1

CacheDB

支持,最多16个节点

1

 

项目

本地表支持情况

排行

Timesten

不清楚,从演示情况看,没有体现出来

4

AltiBase

支持,因为复制是基于表级别的

2

Extreme

支持,同时支持distributed特性,scatter和gather方式

1

CacheDB

支持,

1

 

项目

数据复制模型

排行

Timesten

仅仅TCP,数据库级别复制

4

AltiBase

仅仅TCP,表级别复制

3

Extreme

主播、单播TCP、管道、单播UDP,表级别复制

1

CacheDB

主播或单播TCP,数据库级别复制

1

 

项目

部分字段或部分记录的复制支持

排行

Timesten

全表复制

4

AltiBase

全表复制

4

Extreme

全表复制

4

CacheDB

支持部分复制

1

 

六、数据库一致性特性比较

项目

数据库一致性策略

排行

Timesten

支持事务,支持全同步方式(性能低),也支持异步模式

2

AltiBase

支持事务,支持全同步方式(性能低),也支持异步模式

3

Extreme

支持事务,支持全同步方式(性能低),也支持异步模式

1

CacheDB

不支持事务,采用异步方式,允许系统暂时的不一致

1

 

项目

数据库冲突补救

排行

Timesten

4

AltiBase

4

Extreme

可以通过mvcc的事务管理器进行冲突回滚,操作遵守ACID性

4

CacheDB

有单独的组件,进行不同节点数据的一致性检查(包括与持久性数据库系统之间),并提供策略让应用恢复数据,原则是“错,也要错成一致”

1

 

七、数据库性能特性比较

项目

数据库性能特性比较

排行

Timesten

有公司做过比较测试

4

AltiBase

2

Extreme

从公开的测试数据来看,性能比AltiBase还快,官方网站上有1TB+的数据测试报告,内包含,join,子查询。http://www.mcobject.com/index.cfm?fuseaction=download&pageid=657§ionid=154

1

CacheDB

没有做过纯内存表的测试,从均衡测试情况来看,性能应该与Extreme相当

2

八、综合比较(没加权重)

(1)没有加权的统计,并不一定能说明什么问题。

统计

1

2

3

4

Timesten

9

8

4

10

AltiBase

8

10

4

9

Extreme

12

6

2

11

CacheDB

19

7

4

1

(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。

 

你可能感兴趣的:(eXtremeDB内存数据库,数据库,内存数据库,数据同步,eXtremeDB)