AnalyticDB,是阿里云推出的一款数据库产品,主打海量实时数据分析领域。说其是另类“MySQL”,是因为其兼容MySQL生态,可以像MySQL一样去使用,非常简洁方便。不久前,其还推出单机版规格,颇为惊艳,可以说把大数据的门槛大大降低了。正如上图所表现的,"大数据"这头大象也可以敏捷奔跑起来。假期无事,特针对AnalyticDB新推出的单机版与MySQL,在规模数据下的查询表现做了个对比分析。
《敏捷大数据》的时代到来
曾几何时,大数据的概念非常火热。但我们这里要看到,这里的大数据通常代表两层含义,一是所谓符合4V标准的数据;二是随之诞生的一些适合处理前者问题的技术。随着近些年来,数据在企业中扮演者越来越重要的地位,之前常见的一些“中小”数据,也逐步变成了大数据。此外,随着数字化浪潮的发展,数据在企业经营决策中扮演着愈发重要的地位,随之而来对数据计算的需求也越来越强烈。而之前谈到的大数据技术,并没有很好地跟上现实需求,其较高的技术门槛、离散的技术生态、非传统的使用方式都阻碍了快速普及。AnalyticDB的推出,正是看中了这一问题,以近似传统的使用方式,来处理现在面临的海量、实时类数据问题。进而,也提出了“敏捷大数据”的理念,摒弃传统大数据技术的繁复冗赘,而倡导以一种更加简洁的方式来使用数据。
1. 背景介绍:数据库新兵“ADB”
分析型数据库MySQL版(AnalyticDB for MySQL)是云端托管的PB级高并发实时数据仓库,是专注于服务OLAP领域的数据仓库。在数据存储模型上,采用关系模型进行数据存储,可以使用SQL进行自由灵活的计算分析,无需预先建模。利用云端的无缝伸缩能力,分析型数据库MySQL版在处理百亿条甚至更多量级的数据时真正实现毫秒级计算。其特点包括:
单机版介绍
AnalyticDB for MySQL单机版,于2019年12月底推出。其目的是大幅降低企业用户使用大数据的成本,可方便用户快速享受到数据实时分析所带来的技术红利。其推出的多种规格,可满足中小规模用户的数据分析需求。其核心特点如下:
2. 测试概述:ADB vs MySQL
1). 环境说明
2). 样本说明
测试样本采用常见的人力资源模型,数据采用了人工构造方式。
3). 测试集说明
根据SQL特点,将其归纳为十个大类。每类抽象出有代表性的若干语句,作为测试语句。
4). 测试方法
3. 测试结果:ADB vs MySQL
1). 结果概览
对比数据为MySQL/ADB,数字小于1,表示前者优于后者;数字大于1,表示后者优于前者。数据越大,差距越明显。图中灰色部分表示MySQL优于ADB的部分。
2). 分项说明
对于此类查询,基本不需要优化器更多优化,就是比拼数据提取的能力。ADB采用分片机制,类似于MySQL的“分库分表”,并行提取数据。
此部分,优化前后差异较大。上图为MySQL未优化的情况,理所当然使用了”Using filesort”,性能很差。在优化后,通过加入索引这一有序结构,可以大幅降低排序成本,性能良好。ADB是分布式架构,需要汇总后排序;而单机版受限架构,无法利用多物理节点的能力,表现一般。
这一情况类似“简单查询”。在提取数据后,多一步CPU计算过滤过程,这一点单机版的ADB也没有太多优势。这里面比较特殊的是binary比较,引入后使用全表扫描,即使增加索引也效果有限。但ADB则表现优异,猜想是与其列式存储等因素有关。
这一类查询,ADB有压倒性的优势。因与其列式存储等因素有关。
这一组,也是ADB大优。原理就在于分布式架构与单体架构,及行式与列式存储的差异。
ADB胜出,原理同上组。
关联部分,ADB使用分布式架构,需要有分片间的数据交换等步骤,并最终使用Hash Join完成。而MySQL依托于索引有序结构,可使用Block Nested Loop快速获得数据。8.0的Hash Join也许对大表间的关联更有优势。
这一组也是ADB胜出,原因还是出于其分布式架构所致。
对于分页类的操作,在有索引的有序结构下,MySQL表现不错。ADB中规中矩。
4. 测试总结:ADB vs MySQL
一轮测试下来,对ADB有了更多的了解认识。作为新兴的数据库,对于实时分析类场景,这一产品颇有其特点。此外,其兼容MySQL生态,也很有吸引力,客户的大量软件资产,可以平滑迁移。在架构上,甚至可作为MySQL的从库存在,将复杂类的查询需求迁移上去,减轻主备库压力。可做到一套代码,适用多种场景。这远比之前那种消费到大数据平台,然后异步查询来的优雅。最后,总结下AnalyticDB的适用场景,及与MySQL、大数据平台的对比。(星号部分为计划发展中)