【技术干货】聚焦“有效数据集成”中的“zero-ETL 集成”

数据库
SQL
Amazon Simple Storage Service (S3)
Amazon Aurora
Amazon Redshift
0
0
# 01 背景 ![72af90914d6783cd501a524e7ac9e308.png](https://dev-media.amazoncloud.cn/0f50c8a214ac40d28893c803fb250e78_72af90914d6783cd501a524e7ac9e308.png "72af90914d6783cd501a524e7ac9e308.png") 近年来,随着大数据云计算服务以及软件服务的快速发展,数据量的增长十分迅速。要想更好的处理这些数据,就需要借助数据仓库。数据仓库的建设受到企业的重视,各大互联网公司开始了数据仓库的构建,数据仓库得到了越来越广泛的使用。与此同时,不断深入的企业信息化和快速增长的企业数据,使得企业对数据仓库的实时性有了更高的要求。ETL 是应用到数据仓库的一种工具,能实时的将业务数据元或设备中产生的数据,通过抽取、转换、加载到数据仓库。 # 02 什么是 ETL ETL 是英文 Extract-Transform-Load 的缩写,用于描述将数据从不同的源端进行抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL 从分布式以及异构的数据源进行的源数据(例如关系数据)的抽取。在抽取工作完成后,再按照设计好的规则进行清洗操作。那些不完整的、重复的或者错误的数据,经过清洗操作的去重、纠错等,使得数据变得规范和完整,从而便于后续的数据分析和挖掘。这些数据将被存储到数据仓库当中。 由于 ETL 具备的异构数据清洗能力,这就使得 ELT 常被用于实现异构数据源的数据集成。在进行集成前,各种数据源的原始数据会被保持不变地抽取到 ETL 中。集成后,数据会被放置于数据库的数据表或数据仓库的维度表中,以方便进一步的转换和处理。因此,通常最终的处理结果会被存储到数据库或数据仓库中,成为数据分析和挖掘的基础。 # 03 什么是 ETL 的体系结构 ![2d69dad5a72a432d7d755b5d18a2c2a2.png](https://dev-media.amazoncloud.cn/69d643e4c3c545d6a1ee45b9fae7aaf4_2d69dad5a72a432d7d755b5d18a2c2a2.png "2d69dad5a72a432d7d755b5d18a2c2a2.png") 在上图中,来自不同数据源的数据经过抽取和转换,进入到数据库,再加载到数据仓库中。其中,数据抽取是从数据源进行具有实际意义的数据的抽取,这些数据可以是结构化数据,也可以是非结构化数据。所抽取的数据经过转换后,加载到数据库当中。数据转换则是抽取后的数据的处理操作,通常包括了清洗、合并、拆分、加工等,通常使用 Hadoop 生态等工具进行数据方面的处理。数据加载是将经过抽取和转换处理的数据加载到目标数据仓库中。 对于系统后台而言,数据抽取、转换和加载等操作的最终目的是为后续的使用提供组织好的数据。因此可以将数据组织成对称的、简单的框架模型,从而减少查询时间和简化开发过程。 如上图所示,3个数据源可以分为两类,一类是数据库管理系统作为数据源,而另一类则是外部文件。假设数据源1和数据源2为数据库管理系统,而数据源3为外部文件。由于数据库管理系统具有较强的数据管理能力,因此对于数据源1和数据源2来说,就可以使用 SQL 语句完成部分数据的清洗工作。但是数据源3为外部文件,因此就无法使用 SQL 语句来完成数据的清洗清洗工作。因此对于数据源3来说,只能先进行数据的抽取并再数据转换过程中对数据进行清洗。由此可见,在数据转换过程中对数据进行清洗,再将数据保存到数据和加载到数据仓库中,完成数据的准备工作,供后续的数据分析和挖掘使用。 # 04 ETL 的必要性 ![ae71b34e5a7f359ac536221ca44bb996.png](https://dev-media.amazoncloud.cn/f3447f3641654ab4af082abe8618f4f5_ae71b34e5a7f359ac536221ca44bb996.png "ae71b34e5a7f359ac536221ca44bb996.png") 在每个企业的经营活动中都会产生大量的数据,这些数据有的是有用的,有的是没有用的,经过 ETL 的自动抽取后,会把没有用的数据过滤掉一部分。同时 ETL 技术还会把企业内部比较零散的数据统一到一起,用比较统一的方法来进行分析,起到帮助企业做出正确决策的目的。这是目前比较全面的一种企业数据处理技术。 不管是什么行业,在实际的操作过程中都是会出现很多的数据。这些数据并不全是有效的,如果是光靠人工去分拣的话会需要很长的时间。ETL 数据技术就是提供从数据提取、筛选、转换和加载的工作,这样不仅是能够省时省力,同时也能够更加直观有效的把所有企业内部数据看清楚,对于做出正确的决策有着非常重要的作用。 # 05 传统 ETL 的弊端 ![7a977eefbdb6910950334898aa5f1761.png](https://dev-media.amazoncloud.cn/3e3f28681da144cb866d7118df454c30_7a977eefbdb6910950334898aa5f1761.png "7a977eefbdb6910950334898aa5f1761.png") 数据仓库如此的重要,所以使用好 ETL 工具来利用好数据仓库是一件企业都追求的事情。ETL 是实现商务智能(Business Intelligence,BI)的核心。一般情况下,ETL 会花费整个 BI 项目三分之一的时间,这是非常耗时而且效率低的。因此 ETL 设计得好坏直接影响 BI 项目的成败。 公司的 ETL 工具也面临众多问题,比如工具繁多。各种各样的工具覆盖了商业化领域和开源领域,价格从几十万到免费,起码有几十种选择。并且基础方案混杂,各公司方案不同,甚至一个公司 ETL 环节也采用不同工具及架构,这导致了人才无法公用,维护成本高。数据项目失败案例远多于成功案例,项目选型越复杂成功概率越低。 有时候 ETL 简直就是痛苦的代名词,重复操作多、操作过程复杂、耗费时间巨多,比如一些 ETL 工具使用定时调度功能时,如果任务过多,就只能通过系统自带的定时任务调度去进行管理、写日志,这样就无法统一管理任务。假如一定要做统一的管理,需要安装一套插件,但配置和后续的运维成本可能较高,并且内存占用较高,无法最大效率地利用服务器资源。 # 06 Zero-ETL ![52e893f3edf87d2972d519b446068aff.png](https://dev-media.amazoncloud.cn/e773b6b2f3b74a17bf1a3b82bc144d9b_52e893f3edf87d2972d519b446068aff.png "52e893f3edf87d2972d519b446068aff.png") 数据是所有应用程序、流程和业务决策的核心,也几乎是每个企业数字化转型的基石。但是,现实世界的数据系统通常既庞大又复杂,各种数据分散在多个云服务和本地系统中。许多企业坐拥大量数据,希望最大限度地从数据中获得价值。 亚马逊云科技提供了一系列专门构建的工具,例如 [Amazon Aurora](https://aws.amazon.com/cn/rds/aurora/?trk=cndc-detail) 用于将交易数据存储在与 MySQL 和 PostgreSQL 兼容的关系数据库中,[Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 用于在 PB 级数据上运行高性能数据仓库和分析工作负载。但要真正实现数据价值最大化,客户需要这些工具无缝协作。因此,亚马逊云科技投入开发了基于 Zero-ETL 理念的功能让客户可以在业务中受益于亚马逊的功能,而无需在不同服务间迁移数据。此外,这些功能可以确保从流式服务向广泛的数据存储服务中(如 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 和 [Amazon OpenSearch Service](https://aws.amazon.com/cn/opensearch-service/?trk=cndc-detail))无缝注入数据,从而助力客户及时分析数据。 # 07 Aurora zero-ETL to Redshift ![699c54b15c9b9a1b6665fbc4bb784924.png](https://dev-media.amazoncloud.cn/91a250f22d74482fb8296408f5f160f7_699c54b15c9b9a1b6665fbc4bb784924.png "699c54b15c9b9a1b6665fbc4bb784924.png") 对于交易型关系形数据库也可以将数据实时的注入到数据仓库中。“[Amazon Aurora](https://aws.amazon.com/cn/rds/aurora/?trk=cndc-detail) zero-ETL to [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail)”通过自研的关系型数据库 Aurora 实时的直接把数据注入到数据仓库 Redshift 里面去。一旦这条交易记录已经落到 Aurora 之上,就会在几秒钟只内同步到 Redshift 里面去,这方便构建基于实时交易数据分析的负载和应用。 一旦数据在 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 中可用,客户立即可以开始分析数据,并且像应用数据共享和 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) ML 等高级功能也能获得全面的预测性洞察。企业也可以在 PB 级事务数据上使用 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 实现近乎实时的分析和[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail),而不必构建和维护复杂的数据管道来执行提取、转换和加载(ETL)操作。这将使得企业可以节省大量的不必要的冗余投入,专注于数据分析本身。 # 08 Redshift auto-copy from S3 ![17a9a05f541abce03ff841fb4d4d673f.png](https://dev-media.amazoncloud.cn/62d2db261ee64be2aa088f6a3b72a928_17a9a05f541abce03ff841fb4d4d673f.png "17a9a05f541abce03ff841fb4d4d673f.png") 在之前将数据从数据湖 S3 拷贝到数据仓库 redshift 里面的时候往往需要 copy 的命令。对于 copy 命令通常需要自己编写,要编写触发的逻辑并且要自己去维护:数据在入仓的时候有没有重复数据、处理的过程等。 在 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) auto-copy from S3 服务中用户可以从 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 平台上自动复制数据,将文件注入到 [Amazon Redshift](https://aws.amazon.com/cn/redshift/?trk=cndc-detail) 当中,并且自动把新的文档根据客户的解决方案还有其他的第三方的资源一起整合起来使用。这个服务会一直持续的监控 S3 存入的文件的变化:如果检测到新文件的时会触发 Redshift copyjob,自动的去把有变化的文件 copy 到某一个 redshift 表里面去。整个过程不需要有任何的代码的改动的,而且他会自动的维护数据仓库里面拷贝数据的重复,包括拷贝数据的过程是否合理等。 另外,如果有现存的 copy 语句的话,还可以非常简单的转换为自动化的模式来接受。这项新服务的主要的特点是避免重复获取和手动跟踪已加载的文件,并且基于用户定义的配置,自动从 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 获取新数据。 # 09 总结 客户管理的数据既庞大又复杂,这意味着他们不能只用单一技术或几个工具来分析和探索这些数据。许多客户都通过亚马逊云科技的众多数据库和分析服务从数据中提取价值。确保他们能够使用正确的工具完成工作,对于他们的企业成功非常重要。 这项新功能帮助客户在亚马逊云科技上迈向一个减少在不同服务间手动迁移或转换数据的工作。无论企业和数据的规模有多大,复杂度有多高,通过消除 ETL 和其它数据迁移任务,客户都可以专注于分析数据,面向业务并获取新的洞察。 作者: 李昊迪,胡威,殷紫麒 ![88d296f1d5a49c1441b34dd662d70b28.jpg](https://dev-media.amazoncloud.cn/fb39f1f9fd7340ef9b3b7dcababa270c_88d296f1d5a49c1441b34dd662d70b28.jpg "88d296f1d5a49c1441b34dd662d70b28.jpg")
0
目录
关闭