-
答案 1:
你把vertica写成virtica了,我先帮你纠正过来。vertica是传统的关系型数据库,特点是按列存储,而且集成了MapReduce支持。Cassandra则是属于NoSQL阵营,特点是综合Dynamo的弱一致性模型和Bigtable的数据模型。它们的比较其实就相当于这两个阵营的对比了,这方面文章不要太多。那么很显然,vertica最大的优势就是它提供了SQL的支持,可以很好的兼容以往的工具和数据,习惯SQL的程序员用起来也爽。传统的SQL语义在高可伸缩性要求下很难实现,如join等操作。你可以设想一下,如果要join的表都非常大,超出单台机器的处理能力,要高效地完成这个操作该有多困难。事实上这方面已经有很多学术研究在进行。传统的数据库除了SQL语义外,还要保证transaction的ACID,而要同时满足高一致性和事务操作的要求是很难实现高可伸缩性的。因而才会有NoSQL的出现,它们牺牲了部分SQL和事务的语义、降低一致性要求,以实现高可伸缩性的系统。Vertica的底层存储实现和HBase的不一样。虽然都是叫按列存储,HBase是先将表格按行划分成块,在数据块内部才是按列存储;Vertica的存储比较灵活,它号称可以配置哪些列要放在一起存储,每列都分开就是最基本的按列存储,所有列都和在一起就是按行存储了,不过同一列的数据还是会放在一起。所以按列或者按行存储只是不同的系统设计选择,不是决定性因素。关键还是在于对上层提供的语义。你如果关心的是执行效率,推荐你一篇论文http://www.cse.nd.edu/~dthain/courses/cse40771/spring2010/benchmarks-sigmod09.pdfHBase,Cassandra本身只有存储能力,如果要做查询需要借助Hadoop这样的框架进行,Hive就是把查询都编译成Hadoop任务实现的。Hadoop的查询效率要比关系型数据库要低,主要是因为1)Hadoop为了保证容错,中间数据都要走一遍磁盘,IO开销大;2)Hadoop缺少查询优化引擎还有索引等优化机制(有人把Hadoop任务转换成sql语句,然后再利用传统数据库的优化算法优化portal.acm.org/citation...)。Hadoop社区主要关注的是高可伸缩性,性能不行,就加机器呗。 -
答案 2:
你那个文档 我看过,比较的是Hadoop与Vertica,我觉得没有可比性,应该比HBase与Vertica。除非HBase没有优化它的存储和查询,直接使用Map Reduce做查询。MapReduce是对大文件,无序数据处理。HBase应该是有排序的,还没仔细读源代码。
Vertica 数据库与 Cassandra 相比有什么优势?
2012-01-19 20:09:59 来源: 点击:
相关热词搜索:
上一篇:为什么 Android 在同样的硬件条件(甚至是更好的硬件)下没法做到 iOS 下那样的流畅?
下一篇:苹果如果收购 Hulu 是一个好的选择吗?为什么?