vertica是传统的关系型数据库,特点是按列存储,而且集成了MapReduce支持。Cassandra则是属于NoSQL阵营,特点是综合Dynamo的弱一致性模型和Bigtable的数据模型。vertica最大的优势就是它提供了SQL的支持,可以很好的兼容以往的工具和数据。
一、Vertica数据库与Cassandra相比有什么优势
vertica是传统的关系型数据库,特点是按列存储,而且集成了MapReduce支持。
Cassandra则是属于NoSQL阵营,特点是综合Dynamo的弱一致性模型和Bigtable的数据模型。vertica最大的优势就是它提供了SQL的支持,可以很好的兼容以往的工具和数据。
传统的SQL语义在高可伸缩性要求下很难实现,如join等操作。你可以设想一下,如果要join的表都非常大,超出单台机器的处理能力,要高效地完成这个操作该有多困难。事实上这方面已经有很多学术研究在进行。
传统的数据库除了SQL语义外,还要保证transaction的ACID,而要同时满足高一致性和事务操作的要求是很难实现高可伸缩性的。因而才会有NoSQL的出现,它们牺牲了部分SQL和事务的语义、降低一致性要求,以实现高可伸缩性的系统。
Vertica的底层存储实现和HBase的不一样。虽然都是叫按列存储,HBase是先将表格按行划分成块,在数据块内部才是按列存储;Vertica的存储比较灵活,它号称可以配置哪些列要放在一起存储,每列都分开就是最基本的按列存储,所有列都和在一起就是按行存储了,不过同一列的数据还是会放在一起。
所以按列或者按行存储只是不同的系统设计选择,不是决定性因素。关键还是在于对上层提供的语义。
HBase,Cassandra本身只有存储能力,如果要做查询需要借助Hadoop这样的框架进行,Hive就是把查询都编译成Hadoop任务实现的。Hadoop的查询效率要比关系型数据库要低,主要是因为1)Hadoop为了保证容错,中间数据都要走一遍磁盘,IO开销大;2)Hadoop缺少查询优化引擎还有索引等优化机制(有人把Hadoop任务转换成sql语句,然后再利用传统数据库的优化算法优化。
延伸阅读:
二、Vertica是什么
Vertica是一款基于列存储的MPP(massively parallel processing)架构的数据库。
它可以支持存放多至PB(Petabyte)级别的结构化数据。Vertica是由关系数据库大师Michael Stonebraker(2014 年图灵奖获得者)所创建,于2011年被惠普收购并成为其核心大数据平台软件。Vertica 采用无共享的MPP 架构,基于工业标准的x86 服务器,拥有高可扩展性。Vertica 集群中的所有节点100%对等,集群中没有主节点或其他共享资源。通过增加节点,就可以线性地扩展集群的计算能力和数据处理容量。Vertica 是真正的纯列式数据库,优化器和执行引擎可以忽略表中与查询无关的列。Vertica 不仅仅按列式存储数据,还主动地根据列数据的特点和查询的要求选用优异的算法对数据进行排序和编码压缩,这就极大地降低磁盘I/O 消耗。同时,Vertica 的执行引擎和优化器也是基于列式数据库设计的,编码压缩过的列数据在Vertica 的执行引擎中进行过滤、关联、分组等操作时不需要解反编码,从而大大降低了CPU 和内存消耗。