本文介绍了如何免费体验AnalyticDB for MySQL的无感集成(Zero-ETL)功能。
背景
阿里云瑶池数据库提供了全新Zero-ETL服务,免费帮您快速构建业务系统(OLTP)和数据仓库(OLAP)之间的数据同步链路,将业务系统的数据自动提取加载到数据仓库。不用再担心同步链路费用高、配置复杂的问题,让您轻松体验免费、易用的数据同步功能,一站式完成数据同步和管理,实现事务处理和数据分析一体化。相比其他的方案,我们的方案具有以下优势:
零成本:提供低成本的数据接入链路,您可免费实现在AnalyticDB for MySQL中对上游OLTP数据进行分析处理。
易用性好:无需创建和维护执行ETL(提取、转换、加载操作)的复杂数据管道,仅需选择源端数据和目标端实例,自动创建实时数据同步链路,减少构建和管理数据管道所带来的挑战,专注上层应用开发。
高效:采用弹性Serverless架构,同传统DTS链路性能相比,Zero-ETL能更好地应对源库流量高峰,使用Zero-ETL数据同步链路性能提升15%。
影响
本功能体验不涉及生产环境的部署,因此不会影响业务。
费用
本次体验中,由于体验涉及到的资源不归属于您,因此不会产生任何费用,您可以放心体验。
实验数据
本方案中的数据是基于标准的TPC-H测试工具生成的数据,数据集大小为千万级别,主要涉及part、lineitem、orders三张表,表结构如下:
part表
CREATE TABLE part (
p_partkey INT NOT NULL,
p_name VARCHAR(55) NOT NULL,
p_mfgr CHAR(25) NOT NULL,
p_brand CHAR(10) NOT NULL,
p_type VARCHAR(25) NOT NULL,
p_size INT NOT NULL,
p_container CHAR(10) NOT NULL,
p_retailprice DECIMAL(15, 2) NOT NULL,
p_comment VARCHAR(23) NOT NULL,
PRIMARY KEY (p_partkey)
);
lineitem表
CREATE TABLE lineitem (
l_orderkey INT NOT NULL,
l_partkey INT NOT NULL,
l_suppkey INT NOT NULL,
l_linenumber INT NOT NULL,
l_quantity DECIMAL(15, 2) NOT NULL,
l_extendedprice DECIMAL(15, 2) NOT NULL,
l_discount DECIMAL(15, 2) NOT NULL,
l_tax DECIMAL(15, 2) NOT NULL,
l_returnflag CHAR(1) NOT NULL,
l_linestatus CHAR(1) NOT NULL,
l_shipdate DATE NOT NULL,
l_commitdate DATE NOT NULL,
l_receiptdate DATE NOT NULL,
l_shipinstruct CHAR(25) NOT NULL,
l_shipmode CHAR(10) NOT NULL,
l_comment VARCHAR(44) NOT NULL
);
orders表
CREATE TABLE `orders` (
`o_orderkey` int(11) NOT NULL,
`o_custkey` int(11) NOT NULL,
`o_orderstatus` char(1) NOT NULL,
`o_totalprice` decimal(15,2) NOT NULL,
`o_orderdate` date NOT NULL,
`o_orderpriority` char(15) NOT NULL,
`o_clerk` char(15) NOT NULL,
`o_shippriority` int(11) NOT NULL,
`o_comment` varchar(79) NOT NULL,
PRIMARY KEY (`o_orderkey`)
);
操作步骤
进入瑶池解决方案体验馆。
单击核心功能体验,然后单击无感数据集成(Zero-ETL)下的一站式数据分析的免费体验按钮,进入如下页面:
单击页面下方的创建免费体验任务按钮。
在确认创建Zero-ETL任务对话框中,单击确定。
稍等片刻后,可以看到您创建的体验任务。单击查看详情,进入实时查询体验页面。
单击黑屏左上角的开始任务,开始本次体验。
本次体验共分为三个场景:实时数据同步、复杂分析查询加速和多源汇集全局分析。您可以手动点击每一步的操作按钮,自动执行相关命令;也可在剩余时间结束后,由系统自动执行。
实时数据同步。
单击查看AP实例初始数据,在目标AnalyticDB MySQL实例上执行如下命令,查询目标数据。
SELECT TABLE_NAME AS 'Table Name', TABLE_ROWS AS 'Row Count' FROM information_schema.TABLES WHERE TABLE_NAME = 'zero_etl';
从返回结果可以看到,目标AnalyticDB for MySQL集群上无该表。
单击初始化数据表,在PolarDB MySQL集群1上执行如下命令,创建
zero_etl
表。create table zero_etl ( id int auto_increment primary key, name varchar(20) default 'zero-etl', ctime datetime );
单击在TP实例插入数据,在PolarDB MySQL集群1上执行如下命令,在
zero_etl
表中插入一条数据。insert into zero_etl (name,ctime) values('polardb m',now()),(' zero-etl',now());
单击在AP实例查询数据,在AnalyticDB MySQL实例上执行如下命令,查询上一步在PolarDB MySQL集群1上插入的数据。
select * from zero_etl where name = 'polardb m';
从返回结果可以看到,在AnalyticDB for MySQL集群上能查到这条数据。
至此,实时数据同步场景操作已结束,可以看到经过Zero-ETL同步链路,源TP实例中新增的数据已实时同步至目标AP实例中。
复杂分析查询加速。
单击源TP实例复杂查询,在PolarDB MySQL集群1上执行如下多表复杂查询,涉及表
orders
和lineitem
。select SQL_NO_CACHE l_shipmode, sum(case when o_orderpriority = '1-URGENT' or o_orderpriority = '2-HIGH' then 1 else 0 end) as high_line_count, sum(case when o_orderpriority <> '1-URGENT' and o_orderpriority <> '2-HIGH' then 1 else 0 end) as low_line_count from orders, lineitem where o_orderkey = l_orderkey and l_shipmode in ('MAIL', 'SHIP') and l_commitdate < l_receiptdate and l_shipdate < l_commitdate and l_receiptdate >= date '1994-01-01' and l_receiptdate < date '1994-01-01' + interval '1' year group by l_shipmode order by l_shipmode;
请观察结果返回时间,一般在8秒左右。
单击目标AP实例复杂查询,在AnalyticDB MySQL实例上执行与上一步同样的多表复杂查询。请观察结果返回时间,一般在0.1秒左右。
至此,复杂分析查询加速场景操作已结束,可以看到源TP实例中的多表数据同步至目标AP实例后,在AP实例上进行复杂查询的加速效果非常明显。
多源汇集全局分析。
单击在源TP实例1插入数据,在PolarDB MySQL集群1上执行如下命令,在表
lineitem
中插入一条数据。INSERT INTO lineitem (l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus,l_shipdate,l_commitdate,l_receiptdate,l_shipinstruct,l_shipmode,l_comment) VALUES (<task_id>,<task_id>,2001,1,10.00,150.00,0.05,0.07,'N','O',curdate(),curdate(),curdate(),'DELIVER IN PERSON','AIR','First time order <task_id>');
单击在源TP实例2插入数据,在PolarDB MySQL集群2上执行如下命令,在表
part
中插入一条数据。INSERT INTO part (p_partkey,p_name,p_mfgr,p_brand,p_type,p_size,p_container,p_retailprice,p_comment) VALUES (<task_id>,'Widget A','Manufacturer X','Brand23','Type Z',10,'MED BOX',29.99,'Comment here <task_id>');
单击目标AP实例多源汇集查询,在AnalyticDB MySQL实例上执行如下命令,该命令聚合了表
lineitem
、part
的关于插入的两条数据的复杂查询。SELECT Sum(l_extendedprice) / 7.0 AS avg_yearly FROM lineitem, part WHERE p_partkey = l_partkey AND p_brand = 'Brand23' AND p_container = 'MED BOX' AND l_quantity < ( SELECT 0.2 * Avg(l_quantity) FROM lineitem WHERE l_partkey = p_partkey );
至此,多源汇集全局分析场景操作已结束,可以看到在目标AP实例上进行的聚合了多个源TP实例数据的复杂查询,可以快速返回查询结果。
体验总结
通过本次体验,您可以得到以下结论:
Zero-ETL可以实现数据源端实例和目标端实例之间的秒级实时同步。
在复杂分析场景下,Zero-ETL将数据同步到分析型数据库,帮助SQL性能提升20倍以上。
Zero-ETL可以实现通过多条链路将多个源TP实例中的数据实时同步至一个目标AP集群中,构建全局分析视角。
Zero-ETL的数据同步链路免费,构建数仓成本可以降低约20%。