免费体验AnalyticDB for MySQL无感集成(Zero-ETL)功能

本文介绍了如何免费体验AnalyticDB for MySQL的无感集成(Zero-ETL)功能。

背景

阿里云瑶池数据库提供了全新Zero-ETL服务,免费帮您快速构建业务系统(OLTP)和数据仓库(OLAP)之间的数据同步链路,将业务系统的数据自动提取加载到数据仓库。不用再担心同步链路费用高、配置复杂的问题,让您轻松体验免费、易用的数据同步功能,一站式完成数据同步和管理,实现事务处理和数据分析一体化。相比其他的方案,我们的方案具有以下优势:

  • 零成本:提供低成本的数据接入链路,您可免费实现在AnalyticDB for MySQL中对上游OLTP数据进行分析处理。

  • 易用性好:无需创建和维护执行ETL(提取、转换、加载操作)的复杂数据管道,仅需选择源端数据和目标端实例,自动创建实时数据同步链路,减少构建和管理数据管道所带来的挑战,专注上层应用开发。

  • 高效:采用弹性Serverless架构,同传统DTS链路性能相比,Zero-ETL能更好地应对源库流量高峰,使用Zero-ETL数据同步链路性能提升15%。

影响

本功能体验不涉及生产环境的部署,因此不会影响业务。

费用

本次体验中,由于体验涉及到的资源不归属于您,因此不会产生任何费用,您可以放心体验。

实验数据

本方案中的数据是基于标准的TPC-H测试工具生成的数据,数据集大小为千万级别,主要涉及partlineitemorders三张表,表结构如下:

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`)
);

操作步骤

  1. 进入瑶池解决方案体验馆

  2. 单击核心功能体验,然后单击无感数据集成(Zero-ETL)下的一站式数据分析免费体验按钮,进入如下页面:image

  3. 单击页面下方的创建免费体验任务按钮。

  4. 确认创建Zero-ETL任务对话框中,单击确定

  5. 稍等片刻后,可以看到您创建的体验任务。单击查看详情,进入实时查询体验页面。image

  6. 单击黑屏左上角的开始任务,开始本次体验。

    本次体验共分为三个场景:实时数据同步复杂分析查询加速多源汇集全局分析。您可以手动点击每一步的操作按钮,自动执行相关命令;也可在剩余时间结束后,由系统自动执行。image

  7. 实时数据同步。

    1. 单击查看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集群上无该表。

    2. 单击初始化数据表在PolarDB MySQL集群1上执行如下命令,创建zero_etl表。

      create table zero_etl ( 
         id int auto_increment primary key, 
         name  varchar(20) default 'zero-etl',
         ctime   datetime
         );
    3. 单击在TP实例插入数据,在PolarDB MySQL集群1上执行如下命令,在zero_etl表中插入一条数据。

      insert into  zero_etl (name,ctime) values('polardb m',now()),(' zero-etl',now());
    4. 单击在AP实例查询数据,在AnalyticDB MySQL实例上执行如下命令,查询上一步在PolarDB MySQL集群1上插入的数据。

      select * from zero_etl where name = 'polardb m';

      从返回结果可以看到,在AnalyticDB for MySQL集群上能查到这条数据。

    至此,实时数据同步场景操作已结束,可以看到经过Zero-ETL同步链路,源TP实例中新增的数据已实时同步至目标AP实例中。

  8. 复杂分析查询加速。

    1. 单击源TP实例复杂查询,在PolarDB MySQL集群1上执行如下多表复杂查询,涉及表orderslineitem

      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秒左右。

    2. 单击目标AP实例复杂查询,在AnalyticDB MySQL实例上执行与上一步同样的多表复杂查询。请观察结果返回时间,一般在0.1秒左右。

    至此,复杂分析查询加速场景操作已结束,可以看到源TP实例中的多表数据同步至目标AP实例后,在AP实例上进行复杂查询的加速效果非常明显。

  9. 多源汇集全局分析。

    1. 单击在源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>');
    2. 单击在源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>'); 
    3. 单击目标AP实例多源汇集查询,在AnalyticDB MySQL实例上执行如下命令,该命令聚合了表lineitempart的关于插入的两条数据的复杂查询。

      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%。