四、结束语
测试进行到这里,相信读者对InfiniDB已经有了初步的印象,查询性能某些方面已经超越了传统的行存储数据库(22个查询中的7个)。但它对SQL写法也是最挑剔的,需要开发人员非常熟悉InfiniDB的语法。MonetDB在scala为1的时候表现优异,除了第21个查询异常慢外,22个查询中的18个都超越了Oracle。而且它对SQL语法的支持上佳,不加修改全部通过,支持with语句查询,支持索引,另外还支持主键和外键约束,这在列存储数据库中是难能可贵的。
本系列文章选择了一种国产列存储数据库和三种国外列存储数据库。我们看到,列存储数据库在它声称所擅长的数据仓库应用中还不能取代传统行存储数据库。只有两者结合,各发挥所长才能提供给用户较好的效果。原因有下面几点:
1.由于先天的列存储限制,缺乏对索引的支持(MonetDB除外),降低了进一步优化的可能。而行存储数据库如果加上合适的索引,上述耗时较长的查询还可以大大降低。
2.支持的查询语法限制。所有的4种数据库都不支持分析函数,查询类型大打折扣。
3.不支持DML操作或者虽然支持,但效率很低。不能存储查询的结果就很难用了。
4.多数数据库不支持大量用户连接,不能满足多用户分析需要。
5.大多数不包含图形界面管理工具,用户需要另外购置第三方工具。
6.如果已有系统是基于传统数据库,如果要往列存储数据库迁移,SQL语法不兼容和不同写法的效率大相径庭使迁移难度很大。
另一种商业列存储数据库Sybase IQ也在其文档中明确说明,其需要和传统的Sybase ASE配合使用,方能发挥出更大的作用。这也从另一侧面反映了列存储数据库在当今的处境,还没有达到大规模真正成熟应用的程度。