再来说下数据集成开发过程,批处理数据集成和ETL
数据集成生命周期
1 确定项目的范围
2 概要分析
生命周期的第二个部分常常会被忽略,即概要分析。因为数据集成被视作一门技术活,而组织通常会对授权
访问生产数据比较敏感,因此,为了开发数据接口而对当前存储于可能的源和目标系统的数据进行分析可能是件
比较困难的事情。所以,对实际数据进行概要分析往往成为决定成败的关键。几乎每个数据集成项目都会发现存
在于源和目标系统中的实际数据的一些问题,而这些问题往往很大程度上影响了方案的设计。例如:数据是不是
包含了没有预料到的内容、缺少某些内容或者很差的数据质量甚至在需要某些数据的时候这些数据根本不存在。
和数据拥有者以及安全团队之间的谈判将会持续到达成一个可以接受的方案,可以据此对涉及的源和目标数据进
行概要分析。
3 包含业务知识和专家经验
在数据管理领域,数据集成通常被视为一个技术型非常强的工作,从头到尾都充斥着技术专家,而与之相反
的另外一个极端——数据治理和数据质量,几乎完全是面向业务处理过程的。但是,高效的数据集成也需要从业
务上去理解系统之间传输的数据。
很多依赖数据集成的应用和项目(数据转换、数据仓库、主数据管理)在实施阶段都遭遇了延期,这不是因
为缺少技术方案,而是因为缺少业务知识以及业务人员的参与。
作为数据集成开发中的一个核心过程,定义数据转换必须经过对数据有深刻业务理解的人员的评审和验证。
很多工具可以用来尝试和推导不同系统的数据之间的关系,要么通过字段之间的相似性,要么对实际的数据内容
进行分析。但终,这些推导只是一些猜测,必须经过实际使用这些数据的业务人员的验证。
真正的挑战在于,在如图4-1所示的数据集成生命周期中,某些步骤不容易被分离出来,并分别指派给一个技
术人员或者一个业务人员。需求分析以及定义映射和转换规则这些步骤必须由某个精通技术与业务的人员或者由
来自多个团队的人员协作完成。例如,要定义映射和转换规则,数据的物理实现的知识以及业务上如何实际使用
该数据的知识都是必需的。
源数据和目标数据的技术与业务知识,对于数据集成项目的成功至关重要。因此,在方案开发周期的每一步
都需要来自不同功能领域的资源的紧密协作,而这恰恰是数据集成项目开发中具挑战性的一个方面
批处理数据集成
绝大多数系统间的接口通常以这种方式存在,即周期性(每天、每周或者每月)地将大数据文件从一个系统
传输到另外一个系统。文件的内容是结构一致的数据记录,发送系统和接收系统必须理解文件的格式并达成一
致。这个处理过程就是所谓的批处理模式,因为数据被组织成“批”并周期性地发送,而不是以个体的方式实时
发送。图5-1描述了这个标准的批处理数据集成过程。在两个系统之间传送数据,即发送系统将数据传输到目标接
收系统,这也称为“点对点”方式。
批处理生命周期
对于成功构建数据接口来说,强烈推荐的佳实践之一就是对源和目标系统数据结构中的实际数据进行概要
分析。对生产数据的概要分析,有助于理解目标数据应该被设计成什么样,以及应当从哪些源中寻找合适的属
性。基本的概要分析包括了解所设计的数据结构的不同方面,而不仅仅是那些文档记录下来或者凭空想象的东
西,例如唯一性、密度(空和空白)、格式,以及有效的数据。
ETL
数据集成的核心功能就是从当前存储数据的地方获取数据之后,将其转换为目标系统所兼容的格式,后将
其导入到目标系统中。以上这三个步骤就是所谓的抽取、转换和加载(Extract、transform and Load,ETL)。
1 概要分析
借助概要分析工具,可以获得关于实际源数据的格式和内容的一些报告:无效或者空数据的百分比、不同值
的数量、高频率出现的实例,以及内容的格式。有些概要分析工具可以根据字段名或者实际的字段内容进行关系
推断,从而可以发现位于不同的数据存储的数据之间的关系。
在数据概要分析过程中,经常会发现在实施ETL之前需要对源数据进行更正和清洗。在某些情况下,可以自动
进行更正,但更常见的是,由熟悉数据的业务人员手动对数据进行更正。在源数据结构中进行更正,还是将发现
的问题带入目标数据存储中,这必须由业务人员做出决策。
2抽取
为了实施ETL中的抽取部分,必须访问当前数据所在的系统或者数据存储。需要基本了解这些数据的格式和内
容,以便选择复制哪些数据。
对数据进行抽取有两种基本的方法:从当前系统或者源系统复制一份数据;或者由另外一个系统,即特定的
抽取系统,参与进行并抓取数据。由源系统负责数据抽取的好处是,存储数据的当前系统(以及系统支持人员)
理解数据的含义,以及包含在数据中的技术方案。但是,由源系统执行数据抽取会导致多个潜在源的问题。通常
情况下,我们需要抽取数据的源系统是生产系统,因此,我们并不期望因为增加一些抽取数据的额外操作而对它
们的生产性能造成任何负面的影响。而且,源系统的支持人员可能由于太繁忙而没有事件创建抽取任务,或者没
有经过数据抽取技术和工具的培训,抑或没有把数据抽取看做他们的工作优先级。
通过使用某个特定的抽取程序,从当前存储数据的系统中抓取数据,这一方式对源系统的影响是小的。虽
然对现有的诸如数据库管理系统或者文件管理系统等数据存储引擎的使用,依然会导致一些资源竞争问题。开发
数据抽取应用的人员也会受过对数据抽取技术和工具的培训
3暂存
数据抽取过程的结果通常是一个“文件”,这个文件包含将要被复制并传输到另一个地方的数据,通常是另
一个服务器或者平台。将抽取出的文件保存在源服务器平台,并将抽取的数据复制到目标服务器平台或者任何中
间点,都可以称为“数据暂存”。一般情况下,在源服务器平台和目标服务器上都会有数据暂存点。暂存数据可
以允许对发送和接收的数据进行追踪与审计,还可以对数据进行定时处理,让源和目标系统之间松耦合或者异步
处理,即两个系统之间不需要在同一时间进行相互协作以处理数据,当然,它们可以这么做,只要这样做对于每
个系统的独立处理来说是合适的,因为总是首先从源系统中开始抽取数据。
但是,相比于内存数据处理,从磁盘中读和写,也称为I/O(输入/输出),总是非常慢的。在设计ETL方案的
时候,绕过数据暂存点,可以让整个过程的处理速度快10倍以上,这是在速度至上的场合下大的不同之处,但
这么做也丢掉了数据的追踪审计以及系统之间的松耦合等益处。
4访问层次
为了设计一个抽取方案,通常需要了解用于保护待抽取数据所采取的不同的安全访问层次,虽然某些或者全
部的访问层次有可能是逻辑上不可见或者虚拟的,而对访问的管理可能是自动进行的。所涉及访问层次至少包括
组织网络和防火墙层、服务器层(或者物理层)、操作系统层、应用层,以及数据结构层。
当集成需要跨越组织时,为了进入某个组织的关注域之内,就必须跨越一个安全访问层。大多数情况下,在
逻辑上这是用防火墙实现的,用以保护组织的网络。
5转换
将数据进行转换并与目标数据结构相兼容的过程可以非常简单,也可以非常困难以致需要收集额外信息。数
据转换过程需要很详细的业务需求,这些业务需求通常是数据的业务所有者所开发或者认可的。而抽取和装载过
程则几乎全部都是面向技术的,因此,除了确保抽取正确的数据之外,几乎很少涉及业务评审。
5.1简单映射
5.2查找表
5.3聚合和规范化
5.4计算
5.5加载
ETL过程的后一步就是加载,负责将数据终加载到目标数据结构中。经常会看到关于抽取、转换、再加载
以及抽取、加载、再转换,这两种不同顺序的处理方式哪种效率更高的一些讨论。两者之间的差别在于转换步骤
是在源服务器上执行,还是在目标服务器(或者一个单独的服务器)上执行。这个话题和大数据量处理过程以及
哪种方式的引擎处理速度快相关。而且,在数据抽取过程中一个或者多个点上有没有数据暂存也会极大地影响处
理速度。总之,ETL的后一步都是将数据装入目标数据结构,无论是物理的还是虚拟的。
将数据加载到目标数据存储中有两种主要的方法,即通过代码直接将数据插入,或者利用现有的应用程序代
码将数据插入目标数据存储。但是,只要有可能,好使用现有的应用代码,因为这些代码融入了关于数据是如
何存储在目标数据结构中的知识。虽然当前的应用代码可能不是为了大数据量加载而开发,因此不能使用在加载
窗口中,但是,相对于编写独立的代码来说,优化加载过程并使用现有的代码依然是比较好的选择