mrdrivingduck / paper-outline

🔍 To record the papers I have read.
24 stars 0 forks source link

MySQL HeatWave: One MySQL Database for OLTP, OLAP, and Machine Learning #19

Open mrdrivingduck opened 1 year ago

mrdrivingduck commented 1 year ago

MySQL HeatWave 白皮书。提供了 HeatWave 的特性总览。

https://dev.mysql.com/doc/heatwave/en/heatwave-introduction.html

mysql_wp_hw.pdf

mrdrivingduck commented 1 year ago

数据分析解决方案面临的挑战

MySQL 是为 OLTP 业务设计的,而不是 OLAP。如果要进行数据分析,势必需要把 MySQL 中的数据移动到其它数据库中去。这个过程中带来的复杂问题有:

mrdrivingduck commented 1 year ago

部署场景

HeatWave 是一个云上全托管的数据库服务,提供了一个内存分析引擎,使用户可以对存放在 MySQL 中的数据进行直接分析,不需要做额外的 ETL (Extract, Tranform, Load)。可以使数据分析更快、更便宜。用户只需要启用 HeatWave 服务,就可以无缝进行 OLAP 和机器学习的任务。

一个 MySQL HeatWave 实例是一个集群,包含:

当启用 HeatWave 服务时,HeatWave 服务就会在 MySQL 实例上安装,主要用于:

HeatWave 完全兼容 MySQL 的语法、工具、应用。需要被分析的数据以 Oracle HCC (Hybrid Columnar Compressed) 格式存放在 HeatWave 节点的内存中,需要的节点数量与需要被分析的数据量有关。MySQL 数据库中的数据量无任何限制,用户可以选择将某些表的某些列从 MySQL 数据库中导入到 HeatWave 节点的内存中去。

当 MySQL InnoDB 引擎中的数据发生变化时(TP 业务),将会透明地将更改传播到 HeatWave 节点上,以保持数据一致。使用户可以在做 OLTP 业务时实现实时的 OLAP 分析。

混合部署模式:如果用户有自建 MySQL,则可以通过 MySQL 的复制功能,将更新实时同步到云上的 HeatWave 节点上。

mrdrivingduck commented 1 year ago

HeatWave 架构

HeatWave 架构的五个核心要素:

  1. 内存 HCC 分析引擎,并实现了最先进的算法
  2. 为 Oracle Cloud Infrastructure(OCI)做了优化
  3. 数据可暂存在 OCI 的对象存储上,使系统重启或错误恢复时间加快,并且可以方便地实现节点规模的水平扩展
  4. MySQL Autopilot 通过机器学习来管理运维 HeatWave
  5. HeatWave ML 提供了类 MySQL 接口来使用机器学习的功能

HeatWave 使用向量化引擎和内存中的 HCC 格式,使得查询性能非常好。数据在内存中被预先编码和压缩,在执行时有着更少的 memory footprint。数据可以切片分布在不同的 HeatWave 节点上,以便做到跨 CPU 核心、跨节点的并行执行。HeatWave 节点间使用高速优化后的网络进行异步批量 I/O。调度算法可以使数据计算与数据传输的时间重叠,从而提升性能。

image

MySQL Native 的分析查询

HeatWave 被设计为一个可插拔的 MySQL 存储引擎,对用户隐藏所有的低层细节。用户或应用程序通过 MySQL 节点与 HeatWave 进行交互。当用户提交一条 SQL 时,只有同时满足以下两点,MySQL 的查询优化器才会将查询下发到 HeatWave 节点上:

  1. 查询中所有的运算符和函数均在 HeatWave 上支持
  2. HeatWave 引擎的查询估算时间低于 MySQL

在 HeatWave 返回结果后,用户通过 MySQL 得到结果:

image

MySQL InnoDB 中的更改会被自动实时传播到 HeatWave 节点上。

可横向扩展的数据管理

当 HeatWave 从 MySQL 上装载数据时,涉及行存到 HCC 列存的格式转换。所以节点的错误恢复、重启都会非常耗时。为了优化服务可用时间,HeatWave 使用 OCI 对象存储作为存储层,把 HeatWave 格式的数据持久化到对象存储服务上。这样每个 HeatWave 节点都可以并行独立地导入数据,使得数据装载的时间与数据规模无关。

实时弹性

用户可以随时调整 HeatWave 集群的规模。当集群规模变更时,不影响 MySQL 节点的客户端连接读写。

上述过程中,数据的负载均衡自动完成,无需用户干预。

MySQL Autopilot

对数据进行采样、收集数据和查询的统计信息,训练机器学习模型。模型使得 HeatWave 的查询优化器变得更加智能。Autopilot 主要在服务生命周期的四个方面进行工作: