技术开发 频道

四款主流列式数据库横评

  五、比较结论

  由于用户的实际需求千差万别,因此很难简单地划分那类查询属于数据仓库方面而哪些查询不是。比如,tpc-h查询中2个大表的exists和not exists条件查询,Infobright在这类查询的表现难以接受。Ssb scala=10的查询,除Infobright外的各种数据库都是几秒钟完成一个查询,不足以将彼此的差距拉大,如果不是要执行成千上万次,那么随便选那种数据库都差不多是不错的选择。好的数据库管理系统应该能够最大限度地适应用户不同类型的查询语句,并针对不同查询都尽量给出较好的执行计划,当然要做到这点很难,Oracle的cbo优化器10多年来一直在改进,才有目前的水准,对于新兴的列存储数据库,这方面要走的路还很长。

  Infobright以它的性能表现,目前还不足以担当生产环境的苛刻要求,但正因为如此,编写适用于它执行的SQL语句也成了程序开发人员的富有挑战性的任务。而传统大厂的产品更有广泛的适应性,优化器能帮助程序员解决大量问题,可以让他们集中注意力在业务逻辑上,而不必拘泥于特定产品SQL写法的特殊要求。从Infobright 3.52版本的进步来看,它也在奋起直追,下一个版本应该会更好。

  InfiniDB在某些方面的确具有了与大厂产品一较高下的实力,可以作为它们的替代品,如果它的价格同样具有竞争力,将成为列式存储数据库厂商中非常抢眼的新星。缺点在上一篇文章中也提到过,支持的SQL写法限制太多,同样需要程序员的额外学习和试验,但这种努力往往也能带来乐趣。

  Infobright的短板主要落在tpc-h查询的4\17\20\21等几个,这类查询的特点是表间关联条件比较复杂,人工优化的效果更加明显。

  Sybase作为老牌数据库厂商,在列式数据库起步较早,IQ产品相对成熟,在标准支持方面比较好,缺点是一些工具和配置不够直观,对初学者有一定的难度。

  再说数据加载工具,几种数据库都还不错,各有长处和短处,Infobright的性能稍差一些,InfiniDB和Sybase 都能较好地利用多个CPU,Linux下很多实用的文字处理命令工具,比如tr,awk可以弥补某些ETL功能的不足,比如Sybase的最后一个列的分隔符问题和cpimport不支持Windows格式的回车换行符等。但最好能在数据库本身的功能中增加这些选项,以便更多的平台都可以使用。Sybase IQ默认的文件数据合法性检查更严格(也可以通过选项忽略约束检查),而其他数据库有的采取了将非法数据截断的简单处理方式,不利于保证数据质量。

  从数据库的稳定性方面,Infobright有了长足进步,不再出现lic文件读取错误的问题,InfiniDB和Sybase IQ在执行它所不支持的SQL语法的查询时,有时数据库意外宕机,有待各个厂商提高他们的系统稳定性和容错性。

  下面将各种列式数据库的功能和性能排名罗列如下,按照在各自测试项目中的表现,分别打1-3分,3分为最优,1分最差。最后加总所有项目的分数,分数越小越好,读者可以依据自己对不同项目的重视程度赋予不同的权数再加总,以求得自己心目中的优胜者。

8

  这里没有考虑价格因素,仅仅是从一个最终用户使用的角度做出的评价。

  由于本人接触列式数据库的时间不长,一些性能优化的方法还未掌握,文章中的不足和错误之处,欢迎读者们讨论和指正。

2
相关文章