AnalyticDB-for-MySQLPB级云数仓核心技术和场景解析

26次阅读

共计 5165 个字符,预计需要花费 13 分钟才能阅读完成。

2019 阿里云峰会·上海开发者大会于 7 月 24 日盛大开幕,本次峰会与未来世界的开发者们分享开源大数据、IT 基础设施云化、数据库、云原生、物联网等领域的技术干货,共同探讨前沿科技趋势。本文整理自数据库专场中阿里云智能高级技术专家南仙的精彩演讲,本文为分享了阿里云 PB 级云数据仓库 AnalyticDB for MySQL 的核心技术以及其应用场景。

数据库专场 PPT 下载

本文内容整理自演讲视频以及 PPT。

From“BigData”to“FastData”

如今有一种说法“From BigData to FastData”,这是为什么呢?其实,BigData 已经发展了很多年了,已经或者即将成为所有行业、所有开发者都能够拥有的能力。但是对于 BigData 厂商而言,慢慢地发现自身的发展遇到了一些瓶颈,比如 Cloudera 和 HORTONWORKS 合并之后在股价方面存在一定的压力,而像 MAPR 这样资深的 Hadoop 玩家也在寻求买家。

出现以上这类问题的原因在于需求正在发生变化,对于数据本身的价值探索也在发生变化。最重要的一点就是原来只需要面对大量的数据,但是如今面对全量的数据,需要更加实时和更加智能地进行计算和分析。因此,阿里云 AnalyticDB 的定位就是能够实现实时计算,实现数据价值在线化的数据仓库产品。

AnalyticDB for MySQL 介绍:PB 级实时数据仓库

AnalyticDB for MySQL(简称 ADB)这样一个 PB 级实时数据仓库的核心理念是实现极致性价比和数据价值的在线化。AnalyticDB 的作用就是实现千亿、万亿级的多表复杂关联分析和毫秒级的检索,在全球官方组织 TPC 的 10TB 规模的 Benchmark 的测评环境中,AnalyticDB 性能做到了世界第一,并且比国内的其他厂商领先至少 5 倍以上,相比开源的 Spark,性能则高出 10 倍以上。与此同时,关于 AnalyticDB 核心技术的论文也发表在了数据库领域的世界顶级学术会议上。

AnalyticDB for MySQL 在阿里巴巴集团内部孵化多年,在阿里云上也积累了大量的用户。在如此强悍性能的背后,AnalyticDB 更是拥有诸多核心能力:

兼容 & 超越 MySQL:首先,AnalyticDB 兼容 MySQL 并且超越了 MySQL。因为 MySQL 更多地是能够在 TP 场景下解决很多业务问题,非常稳定并且非常流行,但是在分析场景下,仅仅兼容 MySQL 是远远不够的,还需要对于窗口函数、CTE 等功能以及 OLAP 标准的支持,而 AnalyticDB 完全支持这些功能和标准。

云原生,实时按需极致弹性 :AnalyticDB 是云原生数据库,并且可以做到实时按需极致弹性。AnalyticDB 的磁盘可以弹性扩展,单个用户集群的节点数则可以从最小的 3 台最大可以扩展到 2000 台的规模,并且可以实现混合负载。

非结构化和结构化融合分析 :AnalyticDB 可以实现非结构化和结构化融合分析,这里的非结构化数据不仅包括 JSON、MySQL 里面 BLOB 以及数组类型,还支持用于人脸识别等 AI 技术的检索向量,AnalyticDB 总共支持 5 种向量类型和 5 种向量检索算法。

完备的企业级特性 :AnalyticDB 具有完备的企业特性,比如备份恢复以及回收站等大数据工具都不具备的能力。与此同时,AnalyticDB 还提供跨 AZ 和跨 Region 的高可靠保证。

AnalyticDB 核心技术: 分层存储 + 存储计算分离架构 带来极致弹性和开放性

如下图所示,AnalyticDB 整体的技术模块最前面是接口层,其对于 MySQL 协议具有很强的兼容性,能够提供 JDBC、ODBC 以及 UDF、AI 的接口。下面一层是优化器,众所周知,在复杂分析场景下,优化器会面临很大的挑战。而 AnalyticDB 同时支持了基于规则的优化器 RBO 以及基于成本的优化器 CBO 和基于历史学习的优化器 HBO。再下面一层是超大规模的分布式计算引擎——羲和,它是基于开源代码在阿里内部经过研发团队多年的优化和改造之后打造的具有强劲性能的计算引擎。再往下一层是 AnalyticDB 行列混合的存储引擎,具有强大的存储和检索能力。目前,AnalyticDB 完全基于云上的基础设施构建,包括 ECS、GPU、FPGA、OSS 等云上的基础能力。

对于 AnalyticDB 的技术架构而言,从上到下可以分为三种角色。最上层是 Frontnode,内部也称为 Coordinator 协调器,其支持多 Master 线性扩展,当写入和查询并发过来的时候可以实现线性扩展,最多可以支持扩展到几百个 Frontnode。Frontnode 会在写入流程下进行数据分发,将数据写入到底下不同的存储节点。中间层的 Worker 是计算节点,其可以进行弹性伸缩,也是计算存储分离的核心所在。当负载到来的时候,会对于上层解析器所做的物理执行计划进行计算。源头节点读取的就是底层存储。存储部分有一个很重要的概念就是 Group,这里解释一下,比如 MySQL 的主备或者三副本就是一个 Group。对于 AnalyticDB 而言,因为是分布式的,因此有多个 Group。可以认为数据水平分区到每个 Group 上面,Group 之间通过 Raft 协议保证数据的强一致和实时性。在超大规模集群下,成本也是一个非常重要的考虑因素,因此 AnalyticDB 在底层实现了分层存储,也就是当数据需要进行冷热分离的时候,可以将热数据放在 SSD 上,而将冷数据实时地通过分层存储系统换入或者换出到 OSS 上面去。

AnalyticDB 核心技术 - 智能的“行列混存 + 全索引”带来极致性能

极致性能的提供除了依靠前面所提到的分布式优化器和超大规模高性能的执行引擎之外,还需要依靠存储引擎本身能为计算做多少压缩。对于数据库系统而言,之所以 AnalyticDB 能够做到性能全球第一,最重要的就是对于存储层的优化。

这里为大家介绍 AnalyticDB 在存储层优化方面的两个技术点,全索引和行列混存。AnalyticDB 实现了一整套的索引框架来兼容各种不同的场景,AnalyticDB 的索引框架具有多路渐进流式归并的能力,它能够将很多索引条件以及单表位置条件进行多路归并,并生成一个行号。当拿到这个行号之后就能够将大量的数据在存储层过滤掉,数据过滤完成之后就只需要交给计算引擎来进行聚合等计算任务了。AnalyticDB 支持很多不同类型的索引,对于字符串类型数据,支持倒排索引、哈希索引;对于数字类型,支持多维 KD 树索引;此外,还支持 JSON 索引、bitmap 索引以及非结构化的向量索引。

AnalyticDB 具有高性能的另外一个原因是其采用了行列混合存储。大家都知道,MySQL 等数据库所采用的行存储比较适合更新,但是缺点是不适合进行分析计算,因为分析计算通常是对于一个拥有百余列的大表的部分列进行统计分析或者聚合运算,行存储需要对于每行的百余列数据全部读取出来,对于列的放大非常明显。而列存储的优点在于,除了对于相同 Schema 的列压缩率较高之外,在计算方面其天生就适合筛选。

AnalyticDB 所设计的行列混合存储如上图所示。头文件中包含了一些元数据,比如 Sum、Count 和 Max、Min 等,这些统计值用于对于索引、条件和 Block 的过滤。在每个文件内部有很多不同的 Block,每个 Block 可以看做 Row Group,其内部按照 Column 进行存储。因此,当需要扫描的时候,一旦定位到在哪个 Row Group 里面就可以很快将数据取出来。之所以设计成 Row Group 而非整列文件的原因在于很多时候需要取明细数据,如果按列存储,需要拼出所有行的数据,这样做开销会非常大,而可以通过动态调节不同的 Row Group 的大小来动态地兼容这两种场景。

AnalyticDB 核心技术: 一个系统一套存储兼顾多种场景

AnalyticDB 之所以具有强大的性能,除了架构弹性之外,还具有一套能够兼顾多种场景的存储系统,可以兼容多维分析、明细查询、实时写入等场景。其背后有三个关键技术,包括上述提到的行列混存,还有混合负载。AnalyticDB 支持高并发、低延迟的混合负载的管理,此外,还支持超大规模的融合计算引擎。

AnalyticDB for MySQL: 典型场景和客户价值

AnalyticDB 支持将大数据、应用队列、MySQL、Oracle 中的数据通过 DTS 等数据同步工具同步到 AnalyticDB 做数据分析。而在上层可以接入不同的可视化报表以及用户 APP。举一个内部案例,阿里妈妈内部有一个定向营销平台叫做达摩盘。达摩盘有一万多张表,总数据量超过 100TB,平均每条查询大小为 10 个表的 Join。借助 AnalyticDB,达摩盘可以支持上千个列维度的筛选,可以做到峰值每秒 120 万的写入速度,10 个以上表进行 Join 的 QPS 能够达到 50。

Data Lake Analytics: 全域数据、开放分析

阿里云的 Data Lake Analytics 是 Serverless 的开放分析产品,没有数据存储,因此成本也非常低。如果用户的数据在 OSS 或者某个存储引擎里面,无需搬动数据就可以直接计算。因为采用了 Serverless 的设计理念,因此本身具有很强的弹性,同时成本也非常低。

Data Lake Analytics 和 AnalyticDB 是互补的关系,AnalyticDB 属于数据仓库,而 Data Lake Analytics 则可以进行融合分析。Data Lake Analytics 除了继承了 AnalyticDB 的羲和计算引擎之外,还集成了 Spark,并且其底层基于 K8S 实现了 Serverless。

接下来为大家分享两个具体案例

客户案例 1: 移动运营 APP 解决方案

这里以无他相机为例为大家分享移动运营 APP 解决方案。无他相机的上百亿数据都存储在 MySQL 里面,之前使用 MongoDB 这样的 NoSQL 数据库进行数据存储,但是发现分析性能根本无法接受,当时每个报表需要至少 40 分钟才能完成。使用 AnalyticDB 改造系统架构之后,从用户统计、活动效果以及行为分析等方面能够发现明显提升,实现的报表构造从 40 分钟到秒级的跨越。

客户案例 2: 物流行业实时数仓

第二个案例以跨境物流的公司递四方为例分享物流行业实时数仓方案。对于递四方的数据架构而言,通过 MySQL 实现业务处理,并将数据通过 DTS 同步到 AnalyticDB。对于日志数据而言,通过 Agent 实现打点,通过消息队列 Kafka 收集数据,并通过内部程序将所收集的数据注入到 AnalyticDB 里面去,前端连接了阿里云的 QuickBI 和 DataV 实现数据大屏和报表。仅仅用了一个半月的时间,递四方就完成整个数据实时数仓的构建。

AnalyticDB for MySQL: 客户遍布各行各业

AnalyticDB for MySQL 的客户遍布各行各业,比如互联网、新零售、数字政府、金融以及公安、税务、电网、政法等,这些行业都在广泛地使用阿里云的 AnalyticDB。

AnalyticDB for MySQL 3.0 版本: 下一代云原生 OLAP 产品

阿里云数据库团队匠心打造的全新的 AnalyticDB for MySQL 3.0 版本已经研发完成了,目前正处于公测中。

相比之前的版本,AnalyticDB for MySQL 3.0 版本主要在以下四个方面进行了改进

更易用 :相比于 2.0 版本,用户能够感受到更多数据库的特性。
AnalyticDB 3.0 版本融合了大数据超大规模的计算能力、分析能力以及数据库的使用体验。用户能够感受到 AnalyticDB 3.0 是一个拥有超强计算能力、特别快的计算速度的 MySQL。其支持最多 256 个 DB,并且大幅度提升了兼容性,在阿里巴巴内部测试中,兼容性高达 99.99%,并且能够做到写入数据的立即可见。

更高性能 :AnalyticDB 3.0 版本的实时写入性能提升了 1.5 倍,查询性能在原本全球第一的基础之上又提升了 40%,并且预计未来还会继续刷新榜单。AnalyticDB 支持从 MaxCompute、Hadoop、OSS 以及 MySQL 数据库批量向 AnalyticDB 导入数据,并且能够实现每小时 TB 级别的数据导入速度。

更弹性 :AnalyticDB 3.0 版本拥有更高的弹性,磁盘存储空间可以弹性伸缩,比如一个节点可以从 100G 扩展到 1TB 甚至更大,同时可以伸缩磁盘空间,实现纵向升降级,节点数目也可以实现任意节点的扩缩。

更可靠 :AnalyticDB 3.0 版本具备与 MySQL 完全对齐的权限体系,其支持库级权限、表级权限以及列级权限。并且数据存储采用了三副本,达到了工业级别的安全等级,还拥有完备的数据备份恢复能力。


本文作者:游客 be77vkb76molw

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

正文完
 0