solidDB 和速度的奥秘:IBM 内存中数据库重新定义高性能
2010-09-16 00:00:00 来源:WEB开发网作为一种内存中关系数据库,IBM solidDB 受到全球的追捧,因为它能够提供超快的速度和超高的可用性。顾名思义,内存中数据库完全驻留在主存中,而不是磁盘上,这使得数据访问比传统的基于磁盘的数据块要快一个数量级。这种飞跃一定程度上是由于 RAM 能够比硬盘驱动器提供更快的数据访问。
但是,solidDB 还有专为存储、搜索和处理主存中数据而设计的数据结构和访问方法。因此,即使普通的基于磁盘的数据库将数据完全缓存在内存中,solidDB 仍可以胜出一筹。有些数据库可以提供较短的延时,但是不能处理大量的事务或并发会话。IBM solidDB 可以提供每秒数万至数十万事务的吞吐率,并且始终可以获得微秒级的响应时间(或延时)。本文探索内存中数据库与基于磁盘的数据库在结构上的差别,以及 solidDB 如何提供超快的速度。
RDBMS 的历史
当 20 世纪 60 年代数据管理系统刚刚出现时,磁盘驱动器是唯一可以在合理时间内存储和访问大量数据的地方 。RDBMS 设计者的精力主要集中于优化 I/O 和设法用驱动器的块结构来安排数据访问模式。设计策略常常围绕着共享缓冲池,数据块存放在共享缓冲池中以便重用。随着访问方法的发展,出现了像著名的 B+ 树(一种块优化索引)之类的解决方案。
与此同时,查询优化策略注重尽可能减少页面读取。在对性能的激烈争夺中,磁盘 I/O 常常是最致命的敌人,为了避免磁盘访问,往往需要牺牲处理效率。例如,对于典型的 8 KB 或 16 KB 的页面,页内处理天性是连续的,CPU 效率低于随机数据访问。然而,它仍是减少磁盘访问的流行方法。
当内存富足时代到来时,很多 DBA 不断增加缓冲池,直到缓冲池大到足以容纳整个数据库,这便产生了全缓存数据库(fully cached database)的概念。但是,在 RAM 缓冲池中, DBMS 仍受累于效率低下的、结构化的、面向块的 I/O 策略,这种策略原本是为处理硬盘驱动器而创建的。
更多精彩
赞助商链接