VoltDB是StoneBraker最新研究成果,是一个优化吞吐率的高性能集群开源SQL RDBMS,支持ACID。从硬件上看,VoltDB基于PC+以太网+本地存储;从体系结构上看,其内部是一个ShareNothing的内存数据库,通过并行单线程来保证事务一致性和高性能,所有事务被实现为Java存储过程,所有存储过程(事务)均全局有序,由于避免了锁的使用,因此可以保证每个事务在所有分区上并行执行完成后才继续执行下一个事务,事务不会乱序执行。存储过程内部支持分组、多路Join、聚合、函数等等,如果希望提高吞吐率,使用单事务多SQL可以有效提高吞吐率。VoltDB的可靠性通过冗余和自动恢复来保证。
VoltDB值得关注的一个特性是自动数据分区,数据表会被自动分配到集群节点。可以看成是传统Sharding的升级、整合版本。另外一个特性是自动快照,这样在一个事务内部无需进行IO操作,可以在微秒级别完成事务,据说性能提高50倍。第三个特性是异步事务提交。从某种意义上看,VoltDB是一个共享内存的集群,有些像此前有人提到的“Ram Cloud“。VoltDB的系统性能据说在几个节点就可以达到百万TPS
VoltDB支持多节点并行事务处理,理论上不存在节点上限,不过VoltDB开发人员最大测试集群是20个节点。目前VoltDB还存在不少限制,主要包括:(1)不支持动态修改Schema(2)增加节点需要停服(3)不支持xDBC(4)Adhoc查询性能不优化。
适用于如下应用:
-
Orders of magnitude better performance than conventional DBMS
-
Linear scalability
-
SQL as the DBMS interface
-
ACID transactions to ensure data consistency and integrity
-
High availability 24x7x365
VoltDB文档没有明确说明系统容量和内存的关系,以及单分区和多分区的关系,有空要试一试。
更多信息:
1. http://www.voltdb.com/product
2. http://svnmirror.voltdb.com/eng