众所周知,MySQL是世界上最流行的OLTP数据库之一,截至年它在整个数据库行业的市场占有率达到了4.04%(数据来源:Slintel网站)。许多企业将各种业务系统应用于MySQL上。然而,随着企业数据量的不断增加,除了在线业务逻辑的读写,数据库还要面对日益复杂的分析性业务需求,比如BI报表、可视化、大数据应用等。而MySQL原生的架构(基于流式迭代器模型VolcanoIterator的执行引擎,没有利用现代多核CPU并行处理能力,按行存储的存储引擎)在AP场景中存在天然的缺陷。针对这种情况,为了补足MySQL的AP能力缺陷,业内围绕MySQL做了很多解决方案。主要是围绕MySQL搭建的异构HTAP数据库系统。
什么是HTAP?在年,Gartner给出了HTAP的严格定义:其目的是为了打破,事务型负载和分析型负载之间的“壁垒”,使系统能够支持更多的“数据”在两个系统之间流动,以及以这些数据为基础的“实时业务”的决策。
传统架构形式下,为了解决同时处理TP负载和AP负载的问题,通常采用一套TP系统加上一套AP系统的方式,TP和AP之间通过ETL的方式进行数据同步的来满足业务对实时性的需求,这也是当前业界搭建HTAP的主流方案。01业内围绕MySQL搭建HTAP主流方案
我们先来看看业界主流的基于MySQL的HTAP解决方案。1.MySQL+Hadoop借助Hadoop体系,将MySQL的业务数据,通过ETL工具同步至开源大数据系统(如Hive,Hadoop,Spark等)搭建的数据仓库,再基于该数仓做数据分析。2.MySQL+数据湖借助数据湖平台,通过ETL工具将MySQL数据同步至数据湖,再基于数据湖进行数据、报表、BI等分析。.MySQL+ClickHouse/Greenplum通过ETL等数据迁移工具将MySQL数据迁移到ClickHouse/Greenplum做分析。ClickHouse官方在20年下半年发布了社区版MaterializeMySQL引擎,可以将ClickHouse作为MySQL的一个从库同步主节点数据,除了ETL工具,业内也有直接将ClickHouse作为一个MySQL从库直接挂载的方案。4.基于多副本的DivergentDesign比如兼容MySQL协议的TiDB,在一个RaftGroup其中一个副本上,通过自研列式存储(TiFlash)来响应复杂AP查询,并通过TiDB的智能路由功能来自动选取数据源,实现一套分布式HTAP数据库系统,在分布式领域这块做的是比较好的。图片来自TiDB