在关系型轻量级关系型数据库领域中MySQL一直占据着主导之位,但随着数据量增加,业务多态化下, OLAP结合的场景越来越多,MySQL的短板问题越来越凸出。为了解决类似问题,通常会采用MySQL的binlog同步机制 或 ETL方式抽取到对应的分析平台,再使用Spark,Impala等计算引擎做计算,提供AP的业务支持。MySQL为了在大数据时代继续延伸,为此提供高性能实时分析计算架构HeatWave分析引擎并且已集群模式提供分析服务。
1.HeatWave引擎
HeatWave是一个分布式的、可扩展、无共享、内存话、列式存储的查询处理引擎,其设计目的是为了实现极高的分析性能。
HeatWave集群包括一个MySQL数据库系统节点和两个或更多的HeatWave节点。MySQL数据库系统节点中,通过HeatWave插件负责集群管理,将数据加载到HeatWave集群,查询调度,并将查询结果返回到MySQL数据库系统。其中HeatWave节点将数据存储在内存中,并处理分析查询。每个HeatWave节点都包含一个HeatWave查询处理引擎(RAPID)的实例。并且HeatWave集群最多支持64个节点。
2.整体架构和实现:
可以理解在原生的MySQL基础上额外装载,插件式的HeatWave引擎。
查询
是从连接到MySQL数据库系统节点的MySQL客户端或应用程序发出的。客户端和应用程序不直接连接到HeatWave。支持的查询自动从MySQL数据库系统卸载到HeatWave,以加速处理。结果返回到MySQL DB System节点和发出查询的MySQL客户端或应用程序.
数据加载
将数据加载到HeatWave中需要在MySQL数据库系统上准备表并执行加载命令。准备表包括排除列、定义字符串列编码、添加数据放置键以及将表标记为辅助引擎候选表等任务。
Auto Parallel Load实用程序通过自动化所需的步骤和优化并行加载线程的数量,促进了准备和加载表的过程。
同步
当HeatWave加载一个表时,数据被共享并分布在HeatWave节点之间。加载表后,表上的DML操作将自动传播到HeatWave节点。同步数据不需要用户操作
持久化
加载到HeatWave中的数据(包括传播的更改)由HeatWave存储层自动持久化到OCI对象存储,以便在HeatWave节点或集群故障的情况下快速恢复。
优化
其中在对数据运行查询之后,可以使用HeatWave Advisor来优化工作负载。Advisor分析数据和查询历史,以提供字符串列编码和数据放置建议.
特点
-
内存Hybrid-Columnar格式 数据加载内存和固定宽度的列式数据方式。 -
基于推送的Vectorized 查询处理 vector blocks:块级别的计算方式 -
大规模并行体系结构 HeatWave的大规模并行架构是通过节点间和节点内的数据分区实现的。HeatWave集群中的每个节点和节点中的每个CPU核心并行处理分区数据。HeatWave能够扩展到数千个核心。这种大规模并行架构与高扇形输出、工作负载敏感的分区相结合,可以加速查询处理。MPP处理能力的体现 -
扩展数据管理 存储层自动将数据保存到OCI对象存储中,当恢复故障节点或集群时,数据存储层自动恢复。这个自动的、自我管理的存储层可以伸缩到集群所需的大小,并在后台独立运行。重新加载数据所需的时间与数据大小或HeatWave集群大小无关。 -
插件式MySQL集成 HeatWave被设计为一个可插拔的MySQL存储引擎。MySQL数据库系统上的数据更改会自动实时传播到HeatWave节点,这意味着查询总是能够访问最新的数据。更改传播由轻量级算法自动执行。 MySQL查询优化器就会根据查询卸载的先决条件是否满足,透明地决定是否将该查询卸载给HeatWave以加速执行 -
语法
#不支持数据类型的列排除
CREATE TABLE orders (id INT, description BLOB NOT SECONDARY);
#关键字定义
CREATE TABLE orders (date DATE COMMENT 'RAPID_COLUMN=DATA_PLACEMENT_KEY=1');
#HeatWave查询处理引擎(RAPID)定义为辅助引擎
CREATE TABLE orders (id INT) SECONDARY_ENGINE = RAPID;
#其他
- 使用READ COMMITTED隔离级别读取数据。
- 每张表最多支持470列。
- 如果没有主键,则不允许加载表。
3.Benchmarks性能测试
官网提供了Amazon的RDS,Aurora,Redshift,Snowflake对比:千倍,从性能测试上看确实比较牛
?
4.总结
从设计思路和实现上的如下结论: 1.HeatWave与MySQL结合封装得好 2.无需做数据同步操作,内部自动完成InnoDB到OCI的持久化 3.AI功能:可以智能地自动配置集群大小,而不需要人为配置 4.使用者无感知的,仍然是通过原有的方式(JDBC/ODBC)连接和使用, 5.SQL语法兼容性基本没变。易用性高 6.这里存在MySQL轻量级的本质问题没有解决,就是MySQL Innodb端的数据量问题。还有MySQL Server层的负载问题。
HeatWave也是MySQL Analytic Engine服务中的分析执行引擎,目前遗憾的是这一服务仅限于Orcale Cloud Infratstructure使用。
不管未来MySQL形态是怎样,作为DBA,我们应该学习HeatWave的设计思路,逐步完善自我心中的数据库为目标。
|