欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

内存数据库的比较

程序员文章站 2022-05-24 16:49:25
...

这里比较四个内存数据库系统情况,分别是Timesten、AltiBase、ExtremeDB、CacheDB(自研),需要说明的是,这是这段时间的粗略感性认识(并没有经过一段时间的使用,是换不来理性的客观认识) 一、市场与技术支持比较 项目 市场及应用领域比较 排行 Timesten

这里比较四个内存数据库系统情况,分别是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&divid=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。