浅谈主内存数据库

刚来实验室的时候我看过一些主内存数据库的资料,觉得那是十几年之前的研究内容,而现在硬盘速度和调度算法都还不错,大型关系数据库系统的速度也不差,因此就以为主内存数据库没啥发展前途了。最近看到TimesTen和Altibase的发展,可让我大吃一惊,马上做了一下调研。

首先,主内存数据库将所有数据都加载到内存,对内存中的数据作特别的优化,比如普通关系型数据库的数据在磁盘上一般以B树的形式存放,而主内存中的数据都以T树的形式组织,接下来的查询都在内存中完成,因此速度要大大快速基于硬盘的数据库。

其次,目前流行的主内存数据比如Oracle TimesTen、韩国的Altibase等,同时还是一个关系型数据库,支持SQL操作。这是必须的,仅仅支持API肯定是不够的。我认为这里主要考虑的是兼容性的问题,用主内存数据库替换原有的关系型数据库,或者是作为原有数据库的前端,修改量不能太大,因此支持SQL是必然的。

再次,主内存数据库主要应用于电信、银行、股票和证券交易所、航运管制中心等数据量庞大并且实时要求高的场合。在这些地方,可以为服务器安装多大几T的内存,并且高级服务器上扩充内存都相对比较容易。因此,主内存数据库可以放心大胆的将所有数据都加在到内存中进行处理。相比而言,普通用户或中小型企业都难以满足硬件上的高要求,同时因为这些环境下实时性要求不高,因此不是很适合使用主内存数据库。

TimesTen与2005年6月被Oracle收购,一个明显的改进为,将TimesTen作为Oracle的前端,实时的数据存储在TimesTen中,而大量的数据还是存储在Oracle中,TimesTen和Oracle之间通过Cache Group来进行数据的交互。我觉得这个思路不错,新的主内存数据库的思路应该是这样,后台有(必须?)一个普通的基于硬盘的关系型数据库,这样的好处是:着重于内存中的数据处理;不必重新开发硬盘上的关系型数据管理程序,大大减少复杂性和工作量(我认为这样的工作无异于重新开发一个Oracle或SQL Server)。

顺便说说韩国的那个Altibase,竟然吹嘘自己是"当今数据库软件技术的领导者",哼哼,讨厌的高丽棒子。

你可能感兴趣的:(Database,数据库,oracle,sql,server,服务器,存储,工作)