Vertica的那些事

2022-02-16 00:00:00 查询 数据 数据库 节点 引擎

近期数字化转型在业界提的很火热,数字经济规划作为单独篇章出现在了新的十四五规划中,足以说明国家对数字经济的重视。那么对于我们数据人来说,这无疑是一个非常好的“风口”,可以让我们大展身手。
那么对于做数据工作,特别是处理海量数据,有一款趁手的数据计算引擎,无疑是非常重要的。那么对于海量数据处理,今天给大家聊一聊Vertica这款数据库。

1. Vertica是谁
Vertica是一款真正列存储的MPP架构的数据库,他支持PB级别的数据处理。

提到Vertica,我们必须得聊聊他的作者Michael Stonebraker,因对现代数据库系统底层的概念与实践所做出的基础性贡献而获得2014年图灵奖,VMware的创始人Diane Greene(戴安·格林)是他的学生!2004年Stonebraker基于C-Store创办了Vertica,也就是今天我们要说的这款数据库。



一款无 Master MPP数据库
Vertica数据库属于无Master的MPP架构,所有节点均可访问使用,当然其也提供了负载均衡,以保障节点的合理使用。
什么意思?
一句话解释: 就是说Vertica的所有节点都可以作为连接访问节点,同时也作为计算存储节点,这样就不会存在还要去考虑Master节点的高可用。比如,现在业内的GreenPlum属于有Master节点的数据库。

下图对比:






列式存储数据库
Vertica是一款列式存储数据库,列式存储的好处在哪呢?

比如我们查询一个表table1,table1有100列,写一个SQL语句查询出col1,col2,col3,col4四列数据:



而且列存储还有一个好处就是可以根据不同列数据类型不同,采取不同的压缩方式,减少存储的同时,提升IO性能,能不快吗?

2. Vertica能干什么?
从上面我们讲的Vertica数据库的特点可以看出,Vertica非常适合于OLAP场景,特别是对于我们常说的“大宽表”,查询性能异常强悍!


所以,可以将Vertica替换为你现在的Hive作为数据仓库的计算引擎,效率可以提升百倍以上。


Vertica 还可以作为你的资助分析引擎,替换现有的Spark即席查询,效率可以提升几十倍。
3. Vertica与其他OLAP引擎的差异
本文选取了与Vertica同宗的GreenPlum,还有目前市面上比较火的Clickhouse和Kylin作为对比,分析一下Vertica与它们的差异在哪?



产品特性

Greenplum数据库通过将数据分布到多个节点上来实现规模数据的存储
支持行存储和列存储格式
应用生态丰富,利用Greenplum外部表技术,映射Hadoop集群中的HDFS、HIVE、HBASE 等多种格式数据,使用标准SQL访问



产品特性

支持SQL查询,但是比起GreenPlum还不完备
列式存储与数据压缩
向量化执行引擎,这是Clickhouse单表查询快的原因,极力的去“压榨硬件资源”
多样化的表引擎,我理解的这一点与Vertica的建不同的projection有异曲同工之初
多主架构,就是前面介绍Vertica的一样,每个节点都可以是Master



产品特性

作为一个分析型数据仓库(也是 OLAP 引擎),Kylin 为 Hadoop 提供标准 SQL 支持大部分查询功能
用户能够在 Kylin 里为百亿以上数据集定义数据模型并构建多维立方体(MOLAP Cube)
Kylin 可以在数据产生时进行实时处理,用户可以在秒级延迟下进行实时数据的多维分析。

Kylin 可以说是与市面上流行的 OLAP 引擎走了一条完全不同的道路,Kylin 在如何快速求得预计算结果,以及优化查询解析使得更多的查询能用上预计算结果方面在优化,而像Greenplum,Clickhouse则着重于优化查询数据的过程环节。


现在使用Vertica,调用函数LINEAR_REG一样可以实现。

可以说从数据实时接入,到数据处理,到数据分析,算法挖掘以及可视化应用,一站式服务。

4. Vertica应用展望
笔者是从2015年次接触Vertica,当时是Vertica7.X,不得不说,这几年Vertica发展了大的变化,特别是以前Eon模式之前,Vertica的元数据管理做的不是很理想,元数据经常会很大;Eon以前,特别是集群节点不建议无线扩展。

Vertica目前在国内还是很小众,在网上搜资料你会发现都不多,不过目前还好,17年以前,那真是只有官方文档了,笔者也是当时开始写了一些列Vertica使用相关的博客。对Vertica的发展也提几点自己的心得。

灾备
笔者在17年的时候还碰到过一次很意外的异常,当时联系了原厂工程师还是无法解决,只能重新建了一个新库,还好历史数据在Hive中存的有。
后来考虑了备份机制,备份了元数据和表的物理文件,这是一种通用的备份机制,针对任何数据库都适合。建议Vertica可以出一些灾备的方案,能够将备份文件移到另外节点数不一致的集群中也能快速的恢复。

HTAP
目前流批一体化是数据处理的大趋势,各种技术方案都有,对于数据库来说,能够支持HTAP也许是解决这一问题的关键,希望可以考虑这方面的规划,毕竟市场上有大把的需求,老板都希望用更少的人员(资源)去管理更多的业务(赚钱)。

生态
其实“酒香也怕巷子深”,Vertica是个好东西,但是社区这块做的不太好,很少见到相关技术活动。一方面由于Vertica是不开源的,但是Oracle也是不开源的,现在资料随手一搜就能找到。只有生态建立起来了,用户才会考虑去用,毕竟每个架构师都不希望自己使用的技术栈完全处于“盲区”。
————————————————

原文链接:https://blog.csdn.net/WindyQCF/article/details/122328090

相关文章