分布式大规模数据库系统 HadoopDB
HadoopDB是Abadi领导的开发团队利用不同的组件,包括开源数据库、PostgreSQL、Apache Hadoop数据分类技术和Hive(Facebook公司开发的内部Hadoop项目)开发出的新型数据库。
HadoopDB的查询是利用MapReduce或常规的SQL语言完成的。MapReduce是Google公司发明的Hadoop的祖先,这一软件架构用于大规模数据集(大于1TB)的并行计算。Hadoop是Apache软件基金会所研发的开源并行运算编程工具和分布式文件系统,与MapReduce和Google档案系统的概念类似。
另一方面,HadoopDB的数据处理部分是利用Hadoop完成的。Abadi表示,其中部分是利用了分布在无分享计算机群集中的许多节点上的不同的PostgreSQL实例完成的。“实质上,HadoopDB是MapReduce和并行数据库管理系统技术的混血儿。但是与Aster Data、Greenplum或Hive等已经开发出的项目和厂商不同,HadoopDB不是简单地在语言/接口层面上的混合,它是更深的系统实现层面上的集成。”Abadi说。
因为集两种技术的精华于一身,HadoopDB可以取得MapReduce等大规模并行数据基础设施的容错性。在这些基础设施中,服务器故障对整个网络的影响非常小。Abadi表示,HadoopDB可以执行复杂的分析,速度几乎与已有的商用并行数据库一样快。
HadoopDB的源代码现已公布。虽然其目前的解决方案还是试验性的,但对Web 2.0企业和方兴未艾的“NoSQL”运动的其他成员却非常具有吸引力。有专家认为,它最终可能吸引那些寻找代替甲骨文数据库、IBM DB2或微软SQL Server的更便宜、更具伸缩性数据库的企业。
Abadi在2009年4月曾参与撰写了一篇论文,该论文指出对于大多数的用户和应用而言,关系型数据库仍然超过MapReduce和Hadoop。Abadi日前表示,目前的研究并没有否认以前的看法,但是随着数据库技术的演进,HadoopDB这样的新兴数据库系统将具有比并行数据库更好的可伸缩性。
另外,HadoopDB虽然基于PostgreSQL构建,但同样可以使用其他数据库作为引擎。Abadi表示,其团队已经成功地使用了MySQL,并计划尝试使用像Infobright、MonetDB等柱状数据库来改进处理分析性工作负载时的性能。