免費體驗AnalyticDB for MySQL無感集成(Zero-ETL)功能
本文介紹了如何免費體驗AnalyticDB for MySQL的無感集成(Zero-ETL)功能。
背景
阿里云瑤池數(shù)據(jù)庫提供了全新Zero-ETL服務,免費幫您快速構(gòu)建業(yè)務系統(tǒng)(OLTP)和數(shù)據(jù)倉庫(OLAP)之間的數(shù)據(jù)同步鏈路,將業(yè)務系統(tǒng)的數(shù)據(jù)自動提取加載到數(shù)據(jù)倉庫。不用再擔心同步鏈路費用高、配置復雜的問題,讓您輕松體驗免費、易用的數(shù)據(jù)同步功能,一站式完成數(shù)據(jù)同步和管理,實現(xiàn)事務處理和數(shù)據(jù)分析一體化。相比其他的方案,我們的方案具有以下優(yōu)勢:
零成本:提供低成本的數(shù)據(jù)接入鏈路,您可免費實現(xiàn)在AnalyticDB for MySQL中對上游OLTP數(shù)據(jù)進行分析處理。
易用性好:無需創(chuàng)建和維護執(zhí)行ETL(提取、轉(zhuǎn)換、加載操作)的復雜數(shù)據(jù)管道,僅需選擇源端數(shù)據(jù)和目標端實例,自動創(chuàng)建實時數(shù)據(jù)同步鏈路,減少構(gòu)建和管理數(shù)據(jù)管道所帶來的挑戰(zhàn),專注上層應用開發(fā)。
高效:采用彈性Serverless架構(gòu),同傳統(tǒng)DTS鏈路性能相比,Zero-ETL能更好地應對源庫流量高峰,使用Zero-ETL數(shù)據(jù)同步鏈路性能提升15%。
影響
本功能體驗不涉及生產(chǎn)環(huán)境的部署,因此不會影響業(yè)務。
費用
本次體驗中,由于體驗涉及到的資源不歸屬于您,因此不會產(chǎn)生任何費用,您可以放心體驗。
實驗數(shù)據(jù)
本方案中的數(shù)據(jù)是基于標準的TPC-H測試工具生成的數(shù)據(jù),數(shù)據(jù)集大小為千萬級別,主要涉及part、lineitem、orders三張表,表結(jié)構(gòu)如下:
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`)
);
操作步驟
進入瑤池解決方案體驗館。
單擊核心功能體驗,然后單擊無感數(shù)據(jù)集成(Zero-ETL)下的一站式數(shù)據(jù)分析的免費體驗按鈕,進入如下頁面:
單擊頁面下方的創(chuàng)建免費體驗任務按鈕。
在確認創(chuàng)建Zero-ETL任務對話框中,單擊確定。
稍等片刻后,可以看到您創(chuàng)建的體驗任務。單擊查看詳情,進入實時查詢體驗頁面。
單擊黑屏左上角的開始任務,開始本次體驗。
本次體驗共分為三個場景:實時數(shù)據(jù)同步、復雜分析查詢加速和多源匯集全局分析。您可以手動點擊每一步的操作按鈕,自動執(zhí)行相關命令;也可在剩余時間結(jié)束后,由系統(tǒng)自動執(zhí)行。
實時數(shù)據(jù)同步。
單擊查看AP實例初始數(shù)據(jù),在目標AnalyticDB MySQL實例上執(zhí)行如下命令,查詢目標數(shù)據(jù)。
SELECT TABLE_NAME AS 'Table Name', TABLE_ROWS AS 'Row Count' FROM information_schema.TABLES WHERE TABLE_NAME = 'zero_etl';
從返回結(jié)果可以看到,目標AnalyticDB for MySQL集群上無該表。
單擊初始化數(shù)據(jù)表,在PolarDB MySQL集群1上執(zhí)行如下命令,創(chuàng)建
zero_etl
表。create table zero_etl ( id int auto_increment primary key, name varchar(20) default 'zero-etl', ctime datetime );
單擊在TP實例插入數(shù)據(jù),在PolarDB MySQL集群1上執(zhí)行如下命令,在
zero_etl
表中插入一條數(shù)據(jù)。insert into zero_etl (name,ctime) values('polardb m',now()),(' zero-etl',now());
單擊在AP實例查詢數(shù)據(jù),在AnalyticDB MySQL實例上執(zhí)行如下命令,查詢上一步在PolarDB MySQL集群1上插入的數(shù)據(jù)。
select * from zero_etl where name = 'polardb m';
從返回結(jié)果可以看到,在AnalyticDB for MySQL集群上能查到這條數(shù)據(jù)。
至此,實時數(shù)據(jù)同步場景操作已結(jié)束,可以看到經(jīng)過Zero-ETL同步鏈路,源TP實例中新增的數(shù)據(jù)已實時同步至目標AP實例中。
復雜分析查詢加速。
單擊源TP實例復雜查詢,在PolarDB MySQL集群1上執(zhí)行如下多表復雜查詢,涉及表
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;
請觀察結(jié)果返回時間,一般在8秒左右。
單擊目標AP實例復雜查詢,在AnalyticDB MySQL實例上執(zhí)行與上一步同樣的多表復雜查詢。請觀察結(jié)果返回時間,一般在0.1秒左右。
至此,復雜分析查詢加速場景操作已結(jié)束,可以看到源TP實例中的多表數(shù)據(jù)同步至目標AP實例后,在AP實例上進行復雜查詢的加速效果非常明顯。
多源匯集全局分析。
單擊在源TP實例1插入數(shù)據(jù),在PolarDB MySQL集群1上執(zhí)行如下命令,在表
lineitem
中插入一條數(shù)據(jù)。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插入數(shù)據(jù),在PolarDB MySQL集群2上執(zhí)行如下命令,在表
part
中插入一條數(shù)據(jù)。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實例上執(zhí)行如下命令,該命令聚合了表
lineitem
、part
的關于插入的兩條數(shù)據(jù)的復雜查詢。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 );
至此,多源匯集全局分析場景操作已結(jié)束,可以看到在目標AP實例上進行的聚合了多個源TP實例數(shù)據(jù)的復雜查詢,可以快速返回查詢結(jié)果。
體驗總結(jié)
通過本次體驗,您可以得到以下結(jié)論:
Zero-ETL可以實現(xiàn)數(shù)據(jù)源端實例和目標端實例之間的秒級實時同步。
在復雜分析場景下,Zero-ETL將數(shù)據(jù)同步到分析型數(shù)據(jù)庫,幫助SQL性能提升20倍以上。
Zero-ETL可以實現(xiàn)通過多條鏈路將多個源TP實例中的數(shù)據(jù)實時同步至一個目標AP集群中,構(gòu)建全局分析視角。
Zero-ETL的數(shù)據(jù)同步鏈路免費,構(gòu)建數(shù)倉成本可以降低約20%。