构建实时数据仓库首选,云原生数据仓库AnalyticDB for MySQL技术解密
阿里云分析型数据库重磅推出基础版,极大降低了用户构建数据仓库门槛。高度兼容MySQL,极低的使用成本和极高的性能,使中小企业也可以轻松的搭建一套实时数据仓库,实现企业数据价值在线化。
AnalyticDB for MySQL的产品系列包括基础版(单机版)和集群版,基础版为单个节点提供服务,极简的架构大大的降低了基础版的成本。存储计算分离架构、行列混存技术、轻量的索引构建方式和分布式混合计算引擎又保证了基础版强大的分析性能。年成本不到一万就可以构建一套实时数据仓库,无需成立专门的大数据团队,为企业节省百万成本。
1.基础版技术架构
如下为基础版架构图,整体由Coordinator和Worker组成,各自的职责如下介绍。
1.1 Coordinator: 前端控制节点,职责包括
(1)MySQL协议层接入,SQL解析
(2)认证和鉴权,提供了更完善和细化的权限体系模型,白名单和集群级别RAM控制,并审计与合规记录所有SQL操作。
(3)集群管理:成员管理、元数据、数据一致性、路由同步、备份与恢复(数据与log管理)
(4)后台异步任务管理
(5)事务管理
(6)优化器,执行计划生成
(7)计算调度,负责执行任务调度
1.2 Worker: 存储和计算节点,包含
(1)计算模块
分布式MPP+DAG混合计算引擎和优化器达到了更高的复杂计算能力和混合负载管理能力。利用阿里云计算平台之上资源灵活调度上的优势,实现了计算资源的弹性调度。计算 Worker节点可以单独拉起,因应业务需求做到分钟级甚至秒级扩展,实现资源的最有效利用。
(2)存储模块
存储模块更加轻量化,具备了承载更大吞吐数据实时写入和读取能力,写入性能比之前版本同等规格高50%倍左右,毫秒级可见,满足客户实时分析需求。
存储节点提供全量和增量备份和恢复能力,云盘的定期快照和日志会实时同步到OSS中保存,对用户数据提供更高的安全保障,帮助用户在数据库发生问题时最大限度的找回。
(3)Worker Group
带存储模块的Worker节点被划分为一个个节点组(Worker Group),集群版提供三副本的存储,通过Raft分布式一致性协议像一个整体一样工作,允许其中一些Worker节点出现故障也能继续提供服务,基础版只有单副本提供服务。
2. 基础版优化器
优化器负责对Parser生成的语法树进行处理,通过优化算法生成代价最优的计划提供给计算引擎。计划代价直接影响查询性能,因此优化器是数据库中最核心的模块之一。基础版采用了与集群版一样强大的优化器,包含基于规则、基于代价、和基于模式的多种复合优化技术。
复杂分析型查询经常包含多表join,表的join顺序直接影响查询性能。AnalyticDB优化器采用了基于代价估算和实时采样信息的join order优化算法,能够感知底层存储的数据分布。优化器利用AnalyticDB全索引特征提高了过滤因子(filter factor)估算的准确性。针对复杂join,优化器基于数据分布信息动态调整join order,同时评估数据reshuffling的代价,来从全局代价的维度选择最优的执行计划。
AnalyticDB优化器在经典基于规则优化器(Rule-Based Optimizer)的基础上增加了代价估算和迭代优化,并且集成了Cascades CBO(Cost-Based Optimizer)优化框架。CBO搜索框架会调用 Property Enforcement模块生成分布式执行计划,然后调用代价估算模块,给每一种候选计划评估代价,选择最优的分布式执行计划。为了进一步提高join order的优化效果和效率,AnalyticDB优化器还采用了基于历史信息的优化技术(History-Based Optimizer)、基于常见SQL模式的动态优化技术(Pattern-Based Optimizer),以及数据驱动的智能技术,例如Auto Analyze模块自动搜集统计信息,为优化器搜索最佳计划提供准确的数据支持。
此外,AnalyticDB优化器还针对复杂查询中经常出现的组合过滤条件、聚合算子、关联子查询等进行了一系列优化处理以提升性能。比如下推优化技术将计划中的过滤条件和聚合算子尽量推到整个链路的底层模块去执行,不但提高底层算子的效率,也减少了上游算子要处理的数据量,提高整体查询性能。针对关联子查询语句,优化器通过关系代数转化,将关联子查询改写为语义等价的非关联计划,使得计算引擎可以高效流水线处理。
3.基础版计算引擎
AnalyticDB计算引擎采用大规模并行处理MPP+DAG体系结构和基于内存的pipeline执行模式,具有高并发、低延迟的特点。为了加快对复杂表达式的求值速度,优化执行性能,计算引擎通过Runtime Codegen在运行时生成JVM bytecode,动态加载生成对象的实例,减少了执行过程中虚函数调用,提高了CPU-Intensive任务的效率。计算引擎还采用向量化执行模型处理表达式求值,利用CPU SIMD指令集来加速求值计算。
4.基础版存储引擎
AnalyticDB存储引擎采用行列混合存储的设计。如图所示。对于一张表的每k行数据(Row Group),每列数据连续的存放在单独的Data Block中,每行组的列Block的在磁盘上连续存放。行组内列Block的数据可按指定列排序存放,可以在按该列查询时显著减少磁盘随机IO次数。这种设计的独特优势是兼具了行存(适合OLTP点查询)和列存(适合OLAP多维分析)的长处,很好的满足了不同类型workload的需求:
- 针对OLTP类型的点查询需要select出一整行的明细数据,行列混存设计下将列存的完全随机读转化为了顺序读
- 针对OLAP类型的多维分析:不仅解决了海量数据统计分析下行存的读放大问题,而且进行单列IO时将列存的顺序读转化为了顺序跳读,进行多列IO时则将随机读转化为了顺序读
- 写入大吞吐:列存时的随机写被转化为了顺序写
AnalyticDB存储引擎采用智能全索引,对每列数据建立一个值到行号的倒排索引。查询时,将SQL多个条件表达式的AND、OR 转换成Boolean Query同时走索引,通过搜索得到满足where条件的结果集行号,支持快速多路合并,能够在毫秒级别找出满足条件的结果集。
5.基础版优势
基础版大幅度降低了用户构建数据仓库门槛,与大数据(Hadoop,Spark和EMR)和OLTP建仓方式相比都有超高的性价比。
(1)降低使用门槛
基础版最低1.75元/小时,860元/月,与集群版相比,起步价降低了约三分之一。磁盘空间仅0.6元/GB,磁盘空间上限最大为4T,可以随时按需扩展,大大降低中小企业复杂分析和构建实时数仓的使用门槛。
(2) 性能高
同等配置下其数据查询性能约为MySQL的10倍,很好地帮助用户解决MySQL复杂分析慢的痛点。
(3)规格丰富
基础版支持四种规格:T8、T16、T32和T52,可以根据业务的不同要求选择规格和任意调整规格。
(4)生态透明
上下游生态完全兼容集群版,对用户透明。
6.适合客户
特别适合以下人群:
(1)Hadoop/Spark等太复杂,想快速实现数据化转型的中小型企业;
(2)报表数据库查询慢,有交互式BI分析诉求的中小型企业;
(3)需要快速构建测试环境的进行数仓选型的用户;
(4)学习类人群,可快速了解AnalyticDB for MySQL的用户;
了解更多
观看直播:
https://developer.aliyun.com/live/2528
产品详情:
https://promotion.aliyun.com/ntms/act/adbformysqljichuban.html
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
构建实时数据仓库首选,云原生数据仓库AnalyticDB for MySQL技术解密
下载Word文档到电脑,方便收藏和打印~
相关文章
- 在 Java 中,enum 能否继承其他类?(java中enum可以继承其他类吗 )
- 在 Java 中进行字符串截取时,有哪些需要特别注意的事项?(java中字符串截取时要注意哪些事项)
- Apache APISIX Java 的社区支持情况如何?(apisix Java的社区支持情况)
- 提升Ruby代码安全:有效管理策略与实践
- 如何在 Java 中实现文件上传和下载功能?(Java怎么实现文件上传和下载功能)
- Java 如何实现发送 TCP 报文的方法?(java发送tcp报文的方法是什么)
- 如何巧妙重写 Java 类的 toString() 方法?(如何重写Java类的toString()方法)
- Ruby加密技术:如何改变数据存储方式?
- 在 Java 中,arraycopy 方法的具体用法是什么?(java中arraycopy的用法是什么)
- 如何巧妙利用 Java Map 来实现缓存功能?(如何利用Java Map实现缓存功能)