数据库中的windows1.0(最新内存数据库VOLTDB的一些介绍)
最近看了一下voltdb内存数据库的介绍,也做了一些测试,感觉还不错。
VoltDB是Postgres和Ingres联合创始人Mike Stonebraker领导开发的下一代开源数据库管理系统。它能在现有的廉价服务器集群上实现每秒数百万次数据处理。VoltDB大幅降低了服务器资源 开销,单节点每秒数据处理远远高于其它数据库管理系统。不同于NoSQL的key-value储存,VoltDB能使用SQL存取,支持传统数据库的 ACID模型。VoltDB代码采用GPLv3授权。
以下是我一些理解:
1、voltdb是内存数据库,专注于在线事务处理系统(OLTP)的应用,如果你对数据库访问很高,并且每次处理数据都不大,那么它是非常适合的,但是如果你的系统没什么性能瓶颈,那不建议考虑voltdb,如果你是数据仓库应用,voltdb也是不适合的。
2、未来内存最会非常便宜,且可以很大,这个看起来靠谱,因为现在一台服务器配128G内存也不是难事,如果你的数据库只有几十G,那1-2台服务器将让你的系统快速如飞。如果有1T的数据库,搞个20-30台机器的集群,性能将是质的飞越。
3、现在主流关系型数据库是基于硬盘IO优化设计的,因此在IO管理方面非常复杂,为了提高响应时间及并发处理,在内存管理方面更加复杂,LOCK,BUFFER,CACHE,PAGE,QUEUE,LATCH,PIN的概念让人感觉头晕眼花,太多的事务并行处理及BUFFER管理控制导致内存管理效率低下。VOLTDB是纯内存数据库,它认为只要应用把事务控制好,每个事务很小,在内部是采用全部串行事务处理的机制,这样就没有了那边并发事务等相关的内存管理开销,性能会更优秀。关于这点,我认为是有一定道理,由于没有做过更多的测试,所以不好完全确认,但是我是完全同意传统数据库在并行控制方面过于复杂,对于内存数据库不太适合。其实关于事务并行与串行处理的比较,就好比2000年硬盘的并行接口(PATA)与串行接口(SATA)之争。
以下是VOLTDB官网里给出的关于传统数据库与VOLTDB在内存管理方面的开销数据(感觉有点夸大,仅供参考):
4、关于CAP理论,现在大家非常热捧,有人还翻译说成是公理,这个我是极不赞成的,CAP理论只是在一些假设技术基础上的推论,计算机技术发展日新月异,这些假设的技术基础是经不起时间考验的,所以得出的推论也不是完全适用的。另外关于CAP这几个特性是需要用单位来度量的,随着技术的发展,度量基准也不一样,所以CAP理论存在明显的局部性。
5、集中式数据非常高效,管理方便,但是在线性扩展、高可用性方面受理限制,而这两方面又是分布式数据库的强项,以至于现在NOSQL数据库在大型互联网应用方面讨论非常火热(注:讨论火热并不代表广泛应用)。voltdb天生就是分布式架构,在配置里可以很轻的增加节点数及每节点的服务数,这样可以快速线性扩展服务器和内存来管理更多数据,节点间数据也可以配置复本数量,因此在可用性方面也有基础架构支持。
6、voltdb提供一些常用标准SQL语法的支持,如果create,table,view,index,select,insert,update,delete,distinct,order by,group by,asc,desc,limit,where,and,avg,sum,max,min,count等等也可以2个表关联查询,这些特性相对于nosql数据库很受程序员欢迎,毕竟SQL是很高效的一种开发语言。当然,现在voltdb的SQL语法支持还比较有限,如不支持or语法就是一个硬伤,因为很多SQL逻辑都可能会用到or条件,所以现在voltdb还没达到可以完全推广应用的水平。
7、voltdb现在开发还很不方便,虽然提供了很多种语言的接口,但是服务端的SQL配置复杂,要开发与调试应用工作量很大,并且不支持动态SQL,也就是说每次修改SQL都要重新到服务端编译与发布程序。voltdb现在还没有管理工具,就连oracle的sqlplus这样的工具也没看到,一切工作都需要写代码来完成。如果你想插入一条记录,那需要写一个服务端程序与一个客户端程序,还需要修改配置文件,最后发布程序。voltdb不支持在线修改数据库表结构,每次修改表结构都需要重启服务器,这个问题对于在线应用来说太严重了,相信新的版本会改进,至少要支持增加字段,修改字段名与类型,增加表等等。
从以上几个方面可以看出,voltdb具备一些分布式内存数据库系统先进的思想,但是现在还只能说是一个小玩具,如果要用一个产品来形容它的未来,那就是windows1.0,基本上不可用,但是有思想,所以并不代表没有未来。
以下是一些参考资料:
官方网址:http://voltdb.com
roadmap:
Version 1.2 - target date early October 2010
High Availability: failed node rejoin without restart
Cluster management and monitoring tool
Enhanced JSON/HTTP interface
PHP Client Library
Additional SQL support
Cloud/Virtualization improvements
Version Next
Cluster management and monitoring tool enhancements
Export to Hadoop
Export Client integration with JDBC
Python Client Library
Additional SQL support
Enhanced Cloud/Virtualization support
以下是DBA@SKY-MOBI博客一些关于VOLTDB的翻译资料:
VoltDB Introduction
VoltDB FAQ
VoltDB Do’s and Don’ts