对于从事数据分析的小伙伴们来说,最头疼的莫过于数据处理的阶段。在我们将数据源的原始数据导入数据仓储进行分析之前,我们通常需要进行ETL流程对数据格式进行统一转换,这个流程需要分配专业数据工程师基于业务情况完成,整个过程十分耗时耗力,而且往往不能获取实时的最新数据。
在本系列的上篇文章中,我们已经介绍可在亚马逊云科技上通过 Aurora zero-ETL 与 Amazon Redshift 的无缝集成的解决方案,将数据库内的交易数据与数据仓储中的的分析功能自动结合在一起,从而简化数据库和数据仓储之间定制化 ETL 管道的搭建与管理工作。架构图如下:
在下篇中我们将介绍利用MySQL客户端对RDS数据中的修改,并在RedShift数据仓库中查看从RDS数据库中经过ETL导入到数据仓库的数据,并对ETL任务进行监控。
方案所需基础知识
什么是 zero-ETL ?
服务之间直接集成,不需要使用额外组件完成数据 ETL 的工作。把各种各样的数据都连接到执行分析所需要的地方,实现数据平滑"无感"的流动。它可以帮助用户最大限度地减少甚至消除构建 ETL 数据管道的复杂性。zero-ETL 的主要优势包括:
- 提高敏捷性。简化了数据架构并减少了数据工程的工作量。它允许增加新的数据源,而无需重新处理大量数据。这种灵活性增强了敏捷性,支持数据驱动的决策和快速创新。
- 成本效益。利用云原生且可扩展的数据集成技术,使企业能够根据实际使用情况和数据处理需求来优化成本。组织可以减少基础设施成本、开发工作和维护费用。
- 实时洞察。传统的 ETL 流程通常涉及定期批量更新,导致数据可用性延迟。另一方面,Zero-ETL 提供实时或近实时的数据访问,确保为分析、AI/ML 和报告提供更新鲜的数据。您可以获得更准确、更及时的用例洞察,例如实时仪表板、优化的游戏体验、数据质量监控和客户行为分析。组织可以更有信心地进行数据驱动的预测,改善客户体验,并在整个企业中推广数据驱动的见解。
什么是 Amazon Redshift Serverless?
Amazon Redshift Serverless 让您可以更轻松地运行和扩展分析,而无需管理数据仓库基础设施。 借助 Amazon Redshift Serverless,数据分析师、开发人员和数据科学家现在可以使用 Amazon Redshift Serverless 在几秒钟内从数据中获取见解,方法是将数据加载到数据仓库中并从中查询记录。Amazon Redshift Serverless 会自动豫园和扩展数据仓库容量,以提供快速的性能,满足苛刻且不可预测的工作负载。你只需为使用的容量付费。你可以从这种简单性中受益,而无需更改现有的分析和商业智能应用程序。Amazon Redshift Serverless 主要优势包括:
- 在几秒内开始分析。通过快速入门并对所有数据进行实时或预测性分析,专注于获得见解,而不必担心管理数据仓库基础设施。
- 体验始终如一的高性能。支持在查询复杂性、频率、ETL (提取、转换、加载) 或控制面板使用模式等维度上智能、主动并自动扩缩动态工作负载,以提供量身定制的性能优化。
- 节省成本并控制预算。只需按每秒的使用量付费,当数据仓库处于空闲状态时不支付任何费用。调整工作负载所需的性价比目标,以保持稳定的性能并控制预算。
什么是 Amazon Aurora Serverless?
Amazon Aurora Serverless 是 Amazon Aurora 的一种按需自动扩展配置版本。Amazon Aurora Serverless 会根据应用程序的需求自动启动、关闭以及扩展或缩减容量。可在云中运行数据库,而无需管理任何数据库实例。还可以在现有或新的数据库集群中将 Aurora Serverless v2 实例与预置实例搭配使用。Amazon Aurora Serverless 其主要优势包括:
- 高度可扩展。只需不到一秒的时间,即可瞬间扩展到数十万个事务。
- 高度可用。提供所有的 Aurora 功能,包括克隆、全球数据库、多可用区部署以及只读副本等,满足业务关键型应用程序的需求。
- 经济高效。以极为精细的横向增量,确保恰好提供所需的数据库资源量,并且仅为使用的容量付费。
- 简单。不再需要进行复杂的数据库容量预置和管理。数据库将会扩展,以匹配应用程序的需求。
- 透明。立即扩展数据库容量,而不中断传入的应用程序请求。
- 持久。使用分布式、容错、自我修复的 Aurora 存储,防止数据丢失,使您的数据在一个区域的三个可用区(AZ)中持久可用。
本实践包括的内容
1. 通过MySQL客户端连接MySQL服务器,并执行数据/表更新DDL、DML操作
2. 在RedShift数据仓库中,查看从MySQL经过ETL导入的数据信息,验证一致性
3. 通过云端控制台监控ETL任务指标、运行状态
项目实操步骤
项目前期准备
- 我们需要提前在亚马逊云科技控制台中,进入RDS服务主页创建Amazon Aurora Serverless v2数据库
- 然后进入RedShift服务主页,创建Amazon Redshift Serverless输出仓储
通过 Amazon EC2 控制台创建 EC2 并安装 MySQL 客户端
- 通过亚马逊云科技控制台,进入EC2服务主页
4.点击左侧菜单栏的实例选项,点击右侧启动新实例
- 我们进入实例创建页面,我们根据图中所示选择OS类型、CPU架构类型
- 选择实例大小类型"t2.micro", 选择SSH登录秘钥,以及配置网络环境
- 在网络配置选项中,我们选择VPC、子网、为EC2开启公网IP,选择安全组,并为服务器配置磁盘
- 实例创建成功后,我们点击连接,通过SSH进入服务器的Shell,命令行
-
在服务器Shell中,我们通过以下命令安装MySQL客户端
sudo yum upgrade
sudo yum install -y mariadb105.x86_64 -
我们首先获取RDS数据库的读写URL节点
- 再通过MySQL客户端连接MySQL数据库,需要把"[mysql endpoint here!]"替换成RDS读写URL节点
bash
mysql -h [mysql endpoint here!] -P 3306 -u awsuser -p
在MySQL中更新表/数据并检查下游数据
- 我们利用MySQL客户端执行如下DDL和DML操作,分别创建数据库"zeroetl",创建新表"timeseries"和插入一条数据"abcd"
sql
create database zeroetl;
use zeroetl;
CREATE TABLE timeseries (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
random_chars CHAR(5)
);
INSERT INTO timeseries (random_chars) VALUES ('abcd');
- 接下来我们进入RedShift的查询控制台,执行SQL查询语句
- 我们运行以下SQL命令查询从MySQL中通过ETL同步到RedShift的数据
sql
set search_path to zeroetl;
select *, (CURRENT_TIMESTAMP - timestamp) as latency_secs from timeseries order by timestamp desc;
- 我们再通过其他的DML/DDL操作在MySQL中对数据进行修改
sql
use zeroetl;
create table schema_evolution(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
i integer,
c char(5)
);
insert into schema_evolution(i, c) values(1, 'abcde');
insert into schema_evolution(i, c) values(2, 'abcde');
- 通过以下命令验证ETL数据同步的一致性,可以看到数据/表已经变成我们刚刚修改的内容了
sql
set search_path to zeroetl;
select * from schema_evolution;
- 数据从MySQL到RedShift的同步会有一些延迟,可通过下述 SQL 查看系统表集成同步过程,确定同步是否完成
sql
select * from SVV_INTEGRATION_TABLE_STATE where table_name = 'schema_evolution';
通过控制台监控查看ETL任务健康指标和运行状态
- 在RedShift主页的控制台中,我们在左侧进入" 零ETL集成"功能界面,点击我们在本系列上篇中创建的Zero-ETL任务
- 进入到任务页面中,我们就可以看到零ETL任务的各项具体参数信息,以及下方的监控指标、运行状态了
以上就是为亚马逊云科技上的RDS数据库创建与数据仓库RedShift Zero-ETL无缝集成方案的下篇内容。欢迎大家关注小李哥和我的亚马逊云科技服务深入调研系列,不要错过未来更多国际前沿的AWS云开发/云架构方案。