最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

全新Vertica 9.0 核心架构揭秘

[复制链接]
跳转到指定楼层
楼主
发表于 2018-11-9 09:40:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
上回书(云原生数据库系列谈(壹):节点越多,性能越高?)我们说到,提升MPP数据库性能的关键在于Micro Focus Vertica全新的9.1版本中的Eon模式。从宏观上来说,它是未来大数据&云计算时代中,数据库未来的发展方向;从微观上来说,它让我们基本上远离了曾经让我们苦不堪言的“宕掉”二字。
我相信小伙伴一定跟我一样对这个神奇的Vertica充满了好奇,它到底是何方神圣,能让桀骜不驯的数据们变得瞬间乖巧呢?这,就要先从它的物理设计谈起了。
1ONE天才之作——用投影实现有序、分布式存储
Vertica是一个基于无共享分布式开放平台构建的列式存储和计算的关系SQL分析数据库。它支持多种机制,通过良好的物理设计来提高查询性能。
关键词:分布式
Vertica将表数据物理组织成投影(Projection),这些投影将表的部分属性子集有序、分布式存储。
如图所示,每个投影都有一个特定的排序顺序,数据完全按此排序。具有适当排序顺序的投影起到了传统索引的作用。有序的数据通常会取得更好的压缩效果,从而提高 I/O 性能,并有效减少CPU周期开销,提高了系统的处理能力。
表和投影之间的关系: 销售表有2个投影:(1)按date排序、按HASH(sale_id)分段的全列投影,
和(2)仅包含(customer, price)属性、按customer排序、按HASH(customer)分段。
关键词:聚合投影
除了普通投影之外,Vertica还支持可选的实时聚合投影(Live Aggregate Projections),如图所示。它可以维护预先计算的部分聚合表达式,但会对基表的更新方式施加限制。
实时聚合可用于显著加快各种聚合,top-K和去重(Distinct)操作的查询性能。实时聚合投影甚至可以通过用户自己提供的基于SDK自定义转换函数(UDTF)来构建。
关键词:扁平表
另外,Vertica支持如图所示的“扁平表”(Flattened Table,宽表)的机制,可在加载时对增量数据使用连接执行任意逆范式化操作。扁平表还提供刷新机制,用于在连接的维度表更改时更新逆范式表中的列。

2TWO不“宕”之秘——集群数据分布
Vertica采用分布式存储系统,以便与节点内分区(Partition)区别开来。每个投影会指定分段方式,分段方式确定了元组值与节点的映射关系,从而为实现许多重要的优化提供了基础。例如,Vertica使用分段信息来执行完全本地执行的分布式关联和高效的分布式聚合,这对计算高基数去重聚合尤其有效。
  • 投影可以在集群节点之间复制或分段
  • 分段型投影(Segmented Projection)将每个元组精确地存储在某个特定的节点上
  • 存储元组的节点由投影定义中的分段子句确定
  • 具有高基数和值相对均匀分布的一个或多个列组合就可以用来分段
  • Vertica会自动创建采用相同分段表达式的第二个“伙伴”投影(”Buddy” projection)以支持容错。当某个节点宕掉时,优化器会从互为副本的适当节点上的伙伴投影中获取缺少的数据

3THREE读写双优——集群数据分布
Vertica有读优化存储(Read Optimized Store, ROS)和写入优化存储(Write Optimized Store, WOS)。
“读”优:ROS
ROS中的数据实际存储在标准文件系统中的多个ROS容器中。因为其存储在物理上是分开的,Vertica可以独立检索列数据:所以说Vertica是真正的列式存储。
Vertica写出的实际列数据后面会跟随包含位置索引的页脚,如下图所示:
ROS具有以下特性:
  • 位置索引将容器中的元组偏移映射到文件中的块,和块元数据(如最小值和最大值)一起来加速执行引擎
  • 如果列数据很少,Vertica会将多个列文件合并在一起存储以减少文件总数,减轻文件系统的负担
  • 从ROS容器内的每个列文件中获取具有相同位置的值,就可以得到完整的元组
  • ROS文件一旦写入就不会被修改
“写”优:WOS
WOS的主要目的是在内存中缓冲小量数据的插入、删除和更新,以便有足够行数的数据成批写入磁盘,分摊写入成本。
WOS具有以下特性:
  • 数据在WOS中不进行编码或压缩,但会根据投影的分段表达式进行分段
  • 提交的数据可以驻留在WOS中
  • Vertica使用伙伴投影的复制机制来解决单个节点故障问题
  • 在面对所有节点的灾难性故障时,会使用更复杂的事务回滚机制将数据库恢复到一致的快照上

4FOUR独家秘诀——独树一帜的编录与存储
Vertica编录(Catalog)存储并提供对数据库元数据的访问。其他数据库通常使用他们自己的表结构和B-树来进行元数据维护。
由于Vertica的表结构用来对十亿行以上的数据进行优化的,因此Vertica采用定制的机制来管理元数据。编录在内存中采用多版本并发控制(MVCC)机制,为数据库读取操作提供一致的快照,并为写入操作提供写时复制(Copy-On-Write)语义。
一套完整的编录流程是这样的:
提交至日志:事务提交会导致事务日志附加到重做日志中。事务日志只包含元数据,因为数据在提交之前已经完成写入操作。
日志分流检测:事务日志被分成多个文件,但整体上按照增量版本计数器排序。
检查点计数标记:当总事务日志大小超过阈值时,编录将写出一个检查点,该检查点反映写出检查点时所有对象的当前状态
注1:检查点用版本计数器来标记,确保检查点按照事务日志相应的顺序来排序。
注2:Vertica会保留两个检查点,之前的所有检查点和事务日志都可以删除。
更新状态:在Vertica启动时,编录将读取最新的有效检查点,然后应用所有后续事务日志以达到最新的编录状态。
▼▼▼
Eon 模式在上述核心分布式列式存储架构的基础上,引入了元数据管理的分片机制。下篇我们就来深入了解一下这个分片机制
本系列文章摘编自刘定强所著《从无共享MPP列式数据库到弹性的云原生分析平台》

刘定强
Micro Focus 中国资深大数据架构师
讲师小传:Vertica全球顶级技术专家 擅长Vertica、Oracle等平台技术,熟悉hadoop等开源社区 专注大数据和MPP数据库架构设计, 多个PB级大型MPP数据库项目实施经验

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-19 19:02

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表