《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(5)

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(5)

《云原生一站式数据库技术与实践》——二、云原生数据仓库AnalyticDB MySQL高性能存储引擎(4) https://developer.aliyun.com/article/1231656?groupCode=aliyundb



数据版本管理与build 紧密联系,基本基于build 来实现。


实时数仓的一个典型使用场景为从TP 库同步数据到AP 库,用户希望TP 库的所有数据更新都能实时的在AP 库上得到体现。现在假设一个场景:用户在TP 库上执行了一条DDL,该DDL在TP 可能耗时数十分钟。其后立即更新了大量数据并期望AP侧能够立即对这些数据进行查询。在该场景下要求DDL能够在AP 侧做到准实时或毫秒级执行。



基于以上需求,我们首先进行了毫秒级的逻辑适配。逻辑适配完成之后,存储引擎可以接收新模式下的写入和查询请求,此时数据并没有得到物理上的修改。之后再通过build 过程,对数据文件依据DDL进行真实的物理变更。执行时,若将全量数据进行重建会消耗大量时间以及资源,因此仅对有修改的分区进行重建。同时,为了满足客户不同的业务场景,也支持用户通过force partition 指定重建区分区。分区管理主要包括生命周期管理以及冷热分区转化。



见上图右侧在shard1 的定义里,lifecycle=3表示有三个分区,hot window=2 表示有两个热分区。v100 里有7-31、7-30、7-29 三天的数据,其中7-29 的为冷数据。8-1 的实时数据写入后,执行build,将7-29 的数据淘汰,产生8-1 的新的历史数据。同时,要进行冷热转换,将7-30 的数据从热数据转换为冷数据。


转换完成之后,为了进一步保证主从副本的一致性,leader做完裁决之后会将裁决信息作为layout file 传到之上,从副本进行apply,在复用了build 的结果的同时也复用了整体分区管理的决策。


image.png



冷热的转化本质是分区的存储介质变化。本地存储介质一般为ESSD,上传后一般为OSS。数据从本地到DFS 并不是仅进行简单的上传即可进行高效的查询。针对远程数据文件的管理,我们也做了一系列的优化。



如上图左侧所示,上层为存储引擎,下层为DFS。从存储引擎到DFS,首先会经过SSD Buffer。DFS 对小文件的读写并不友好,比如常见的索引构建有很多类似于外排的操作涉及大量的随机读写。若此类操作直接打穿到DFS 上,则导致IOPS 非常高,对DFS 非常不友好。因此,我们实现了SSD Buffer,先在本地聚合,将需要预处理的数据在本地完构建。之后,将随机的小文件读写转换成流式的、批量的、高吞吐的顺序写上传到DFS。



写的过程中,会经过Tar FileSystem 进行打包并增加一个cache,该cache 为tar文件内子文件路径到该文件在tar 内的位置的映射。Index 置于文件尾部,一旦打开文件则会将Index 加载到cache中。cache的优势在于,在打开某个子文件时,可以少读一次元信息,同时,使得Meta 类的操作不需要再读远程,而是可以直接在本地处理,对文件的meta 类操作性能有显著提升。



下面的ADB FileSystem Interface 是统一的文件接口层,能够屏蔽下层存储的远程实现。存储引擎只感知通用文件接口,ADB FileSystem Interface会进行具体转换自适应的操作远程文件存储或对象存储。



读取时,经过Tar FileSystem 和ADB FileSystem Interface,会有SSD Cache,做了本地文件块到远程文件的映射,能够深度感知IO 模型,IO 模型可以分为三类:


第一类,Meta 类操作,比如获取block位置信息等导致的随机读。


第二类,Query,分为index search(随机读)和data cursor(高吞吐的数据扫描)。


第三类,build,高吞吐的顺序读。


SSD Cache针对以上三种类型分别分配了独立的cache,主要包括独立的磁盘空间管理、独立的淘汰队列、独立的block size,彼此互不干扰。引擎侧向下发query 时,会携带hint 信息,用于判断应该使用哪种cache。



如果发生了cache miss,会先经过Perfetch Service,它与IO 模型紧密相连,能够感知query 的plan,可以并发地进行预取,进一步加快对远程文件的读取性能。



内存控制主要防止query 过于复杂,导致查询负载较高,最终导致整体存储节点的

负载过高。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
15天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
16天前
|
人工智能 小程序 关系型数据库
【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略
本文以热门游戏《黑神话:悟空》为契机,深入浅出地解析了数据库事务的四种隔离级别:读未提交、读已提交、可重复读和串行化。通过具体示例,展示了不同隔离级别下的事务行为差异及可能遇到的问题,如脏读、不可重复读和幻读等。此外,还介绍了在MySQL中设置隔离级别的方法,包括全局和会话级别的调整,并通过实操演示了各隔离级别下的具体效果。本文旨在帮助开发者更好地理解和运用事务隔离级别,以提升数据库应用的一致性和性能。
94 2
【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略
|
19天前
|
SQL 关系型数据库 MySQL
【MySQL 慢查询秘籍】慢SQL无处遁形!实战指南:一步步教你揪出数据库性能杀手!
【8月更文挑战第24天】本文以教程形式深入探讨了MySQL慢SQL查询的分析与优化方法。首先介绍了如何配置MySQL以记录执行时间过长的SQL语句。接着,利用内置工具`mysqlslowlog`及第三方工具`pt-query-digest`对慢查询日志进行了详细分析。通过一个具体示例展示了可能导致性能瓶颈的查询,并提出了相应的优化策略,包括添加索引、缩小查询范围、使用`EXPLAIN`分析执行计划等。掌握这些技巧对于提升MySQL数据库性能具有重要意义。
50 1
|
11天前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
27 0
|
11天前
|
存储 关系型数据库 MySQL
MySQL 中的事务存储引擎深入解析
【8月更文挑战第31天】
11 0
|
11天前
|
SQL 数据采集 关系型数据库
|
11天前
|
数据库 关系型数据库 MySQL
惊!Hibernate与MySQL的绝密优化技巧大揭秘,让你的数据库飞起来!
【8月更文挑战第31天】在企业应用开发中,结合使用持久层框架Hibernate与数据库管理系统MySQL可显著提升数据库交互效率。本文探讨了多项优化策略,包括配置二级缓存、采用单向关联减少JOIN操作、优化HQL查询语句以及合理使用MySQL索引。通过具体示例,文章详细讲解了如何实施这些优化措施,以期为企业应用提供更高效稳定的数据支持。
21 0
|
11天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
70 0
|
2月前
|
存储 数据挖掘 BI
数据仓库深度解析与实时数仓应用案例探析
随着数据量的不断增长和数据应用的广泛深入,数据治理和隐私保护将成为数据仓库建设的重要议题。企业需要建立完善的数据治理体系,确保数据的准确性、一致性和完整性;同时加强隐私保护机制建设,确保敏感数据的安全性和合规性。
223 55
|
29天前
|
消息中间件 存储 大数据
大数据-数据仓库-实时数仓架构分析
大数据-数据仓库-实时数仓架构分析
80 1

热门文章

最新文章

相关产品

  • 云原生数据仓库AnalyticDB MySQL版