当前位置: 首页 > 科技观察

只需一步!MySQL遇到数据分析场景“怂”了吗?解决方法已经帮你找到了

时间:2023-03-15 18:49:03 科技观察

MYSQL作为最流行的开源数据库,正在成为越来越多企业的选择。MySQL数据库广泛应用于各种业务系统中。除了读写在线业务逻辑外,还有一些额外的数据分析需求,比如BI报表、可视化大屏、大数据应用等。但受限于MySQL架构等问题,在面对数据分析场景时往往力不从心。针对这种情况,业界有很多解决方案。这里推荐一种新的方法——数据湖分析,对于低成本场景来说是一个不错的选择。在展开正式内容之前,先简单介绍一下数据湖这个比较陌生的概念。数据湖是一种无服务器交互式联合查询服务。使用标准SQL分析和整合来自对象存储(OSS)、数据库(PostgreSQL/MySQL等)、NoSQL(TableStore等)数据源的数据。01.方案背景需求场景1MySQL数据库广泛应用于各种业务系统中。除了线上的业务逻辑读写,还会有一些额外的数据分析需求,比如BI报表、可视化大屏、大数据应用等。随着业务的发展,单机的MySQL数据库达到一定数据量后,直接使用MySQL进行数据分析性能比较差,会影响线上业务的读写性能。在这种情况下,就需要寻求新的数据分析方案。需求场景2MySQL中的数据需要和日志数据联合分析。在这种场景下,一些公司会使用开源的大数据系统(如Hive、Hadoop、Spark等)来构建数据仓库。这种方式虽然可以解决问题,但是所需的人力成本和服务器等资源成本是最高的。如何低成本联合分析MySQL和其他系统的数据?需求场景3当MySQL的数据量超过单台服务器的性能时,DBA为了保证线上业务性能,通常会采用分库分表技术,将一个数据库中单表的数据拆分成多个数据库中的多张表数据库。由于一个逻辑表被拆分成多个表,这时候数据分析就会变得非常复杂。需要新的分析解决方案来解决这些问题。02.案例评价因素在MySQL分析场景中,如果要解决以上三个场景问题,主要考虑哪些因素?如果有多种解决方案,我应该如何选择?您可以参考以下关键因素。1、成本因素这里所说的成本是一个综合概念,不仅仅是经济成本,还包括时间、人力、风险成本等,用户在选择解决方案时,应该综合考虑“成本效益”。2.能力因素能力维度包括功能和绩效两个方面。功能上,解决方案是否提供完备的分析能力和扩展能力。性能方面,是否满足用户对时效性和并行性的要求,特别是在海量的情况下。3、可维护性好的产品应该提供良好的可维护性。用户可以非常简洁地使用它。出现问题时,也可以轻松排查和解决。4.易用性产品本身应具有良好的易用性。用户只需要极低的门槛就可以使用数据分析服务。03.方案选择针对MySQL数据的分析场景,有多种方案,包括直接在MySQL只读实例上进行分析、自建开源数仓和数据湖建设方案。让我们仔细看看每个选项的优缺点。基于对MySQL只读实例的分析,通过购买额外的服务器构建MySQL只读备库实例,然后基于只读实例进行数据分析。该方案的优缺点:缺点:功能无法满足场景2和3的需求,即使是场景1的需求,当数据量增大时(参考下文TPC-H10GSQL耗时),基于只读实例的分析性能会很差。成本高:额外购买只读实例成本较高。优点:方案简单,不影响线上业务;使用方便,兼容性好。自建开源数据仓库使用开源大数据系统(如Hive、Hadoop、Spark等)搭建数据仓库,然后将MySQL数据同步到数据仓库,再基于Spark或Hive进行数据分析.缺点:易用性差:开源大数据系统使用门槛比较高,需要专门的大数据工程师运维;另外,Sqoop同步不支持表结构变化,增加或删除列会导致同步失败。成本最高:另外需要购买额外的服务器来构建系统,增加了硬件成本。该解决方案的总成本最高。优点:可以解决需求场景1和2的问题,分析性能更好。分析型数据库使用开源或商业分析型数据库,通过数据同步工具完成数据同步,然后基于SQL进行数据分析。缺点:可维护性差,需要专门的运维人员。成本高,需要购买额外的资源。优势:满足海量数据分析数据湖建设方案基于阿里云数据湖分析建设方案,完美解决MySQL数据低成本分析需求。优点:方便易用:使用一键建仓,即可轻松将整个数据库同步到数据湖。强大的分析能力:DataLakeAnalytics与MySQL的体验如出一辙,数据量的增加对分析性能几乎没有影响。极低的成本:无需购买服务器,按查询量计费,不查询不收费;没有维护费用。对源库的影响:数据分析对线上业务无影响。04.数据湖建设方案的评估数据和技术原理接下来,让我们详细了解一下数据湖建设方案的评估数据和技术原理。低成本、高性能和低成本下面是成本的对比。新增高性能RDS(MySQL数据库)包月费2344元;以TPC-H10G为例,如果每天执行一次TPC-H的22条SQL语句,使用DLA的月成本仅为26.64元,平均每天不到1元。只需1%的成本即可获得高性能分析;另外,DLA的列式存储消耗只需要3G,而原生Mysql的存储可能消耗20G左右。构建高性能数据湖从源库同步数据后,采用列式+压缩方式存储。以TPC-H10G数据为例,存储在MySQL中会消耗20G左右的存储空间,而使用columnar+compression存储只消耗3G左右的存储空间。使用阿里云数据湖分析(DLA)分析,可以以极低的成本获得高效的分析。再次以TPC-H10G数据为例,TPC-H的22条SQL语句在DLA中的平均执行时间为5.5s。MySQL中平均耗时345.5s,跑不出来的SQL有4条。下图对比了TPC-H10G22SQL在MySQL和DLA中的耗时。易用性支持丰富的数据源阿里云数据湖分析构建解决方案支持丰富的数据源,包括自建MySQL、SQLServer、PostgreSQL、Oracle、ApsaraDBforRDS、PolarDB、ADB等。与传统数据仓库相比,其设计目标是“简单”,让用户通过简单的配置就可以将数据同步到DLA,真正实现“一键式”建库。自动同步保持数据一致数据湖建设支持更新数据的自动同步,自动同步包括创建表、删除表、添加列、修改列、删除列等元数据操作。在分库分表的场景下,数据湖建设可以将分布在多个数据库中的一张逻辑表合并为一张表,实现基于一张表的数据分析。此外,数据湖建设支持不限制可同步表数。增量建设数据湖分析(DLA)团队正在开发增量数据湖建设,支持源库数据的增量模式同步,可以彻底消除对源库的影响;并能大大提高数据分析的时效性。增量构建将在近期发布,敬请期待。对源库的影响基于数据湖分析查询,对源库无影响;数据湖从源库同步数据时,也保证对源库的影响在10%以内。下图是数据湖建设不同规格的源库CPU消耗情况:随着机器规模的增大,连接数会自动增加,最终源库平均CPU消耗在10%以内。为了尽量减少同步对源数据库的影响,数据湖的建设做了很多优化。包括:数据湖建设会根据源库的机器规格自动动态调整连接数,可以保证源库的压力在10%以内。并发同步一张表时,优先使用索引列进行拆分,利用索引可以快速定位到一个范围内的数据,减少同步对源库的影响。数据湖建设默认选择业务不景气的时候进行数据同步,避免在线业务受到影响。最终实现对源库的压力几乎可以忽略不计。如果用户想加快同步速度,也可以手动增加连接数来加快同步速度。05.阿里云数据湖实践如果你想尝试数据湖分析构建MySQL低成本分析,只需要以下步骤即可激活试用。1.登录数据湖分析管理控制台。在页面左上角,选择DLA所在区域。(https://datalakeanalytics.console.aliyun.com)2.点击左侧导航栏的解决方案。在解决方案页面,在一键打开位置点击进入向导。3.根据页面提示,配置参数。4、完成以上参数配置后,点击创建即可开始使用数据湖进行愉快的分析。