本章的内容是数据整合工作的起点,本章将详细解释3种主要的数据整合方式不同点和相似点。这3种数据的整合方式分别是etl,elt和eii。为了能够全面理解数据仓库和数据整合,我们先来看看事务数据库系统和分析型系统不同不处。
1.1 OLTP和数据仓库对比
人们通常的第一个问题是事务系统和商业智能系统的区别,商业智能系统通常也被称为决策支持系统dss,一个独立的事务系统通常也被称为在线事务处理系统
事务系统需要能哆快速地定位到一条记录。当一次需要获取多条记录,多条记录通常使用唯一的健值加以识别。例如订单系统中的一个订单信息。人力资源系统中一个人信息。更重要的是这些信息需要经常被更新,通常一次只更新一条记录。
OLTP和BI数据库 (DAta warehosue )最大区别在一个单一事务要分析的数据的数量。OLTP系统中,很多并发的用户请求通常只处理一条数据或有限的一组数据。而数据仓库系统必须有处理几百条数据的能力,来响应用户一个简单请求。显示了OLTP系统和数据仓库系统主要区别。
表1-1 OLTP和数据仓库对比
指标 | OLTP | 数据仓库 |
系统覆盖范围 | 单一业务处理系统 | 多个业务主题 |
数据源 | 一个 | 多个 |
数据模型 | 静态 | 动态 |
主要查询类型 | 插入/更新 | 只读 |
单事物数据量 | 小 | 大 |
数据量 | 小/中 | 大 |
数据时间精确度 | 当前时间 | 从秒到天不等 |
批量加载/插入/更新 | 否 | 是 |
响应时间 | <1秒 | <10秒 |
系统可达性 | 7*24小时 | 5*8小时 |
典型用户 | 前端业务用户 | 分析人员,决策人员 |
用户数量 | 大 | 小/中 |
当然表中所列出的指标并不是绝对的,而区分两类系统的传统经典方式。在实际中,BI系统也越来越多地被作为业务系统的一部分。例如在呼叫中心系统中,客户人员面前的屏幕上不但能显示客户的姓名、地址等基本属性,也能显示客户的历史交易记录。这些交易记录一般是从业务数据存储系统()或数据仓库系统里获得的。很多客户关系管理(简称crm)系统也能即时地获得客户信息或等级,这些信息或等级数据也是从数据仓库中经过预处理获得的,提供给前端的业务操作人员。这说明数据仓库***到业务系统的程度越高,对数据仓库的要求也越接近于对业务系统的要求,尤其是系统可达性和数据时间精确度方面的要求。
对数据仓库最多的讨论可能就是响应时间,在十年前花一两分钟的时间抽取并展现数据可能不算大问题。今天用户希望的响应时间是他们已经习惯的搜索引擎的响应时间,超过10秒钟用户就没有了耐心,开始单击刷新按钮,而不再使用数据仓库。而另一方面,如果数据仓库用户数据挖掘目的,只要最终的挖掘结果是有价值的,即使用响应有几个小时也是可接受。
1.2etl是什么
你肯定知道etl是抽取、转换、加载的缩写。但etl的确切含义是什么?
但etl的确切含义是什么?这里有一个etl的简单定义:将数据从oltp系统中转换到数据仓库中的一系统操作的集合。从etl的根源来看,可惟接受这个定义,但从etl实践的角度来看,这个定义过于简单。在实际情况中,数据不仅来源于oltp系统,还来源于网站、平面文件,电子邮件系统,电子表单,还有像access这样的个人数据库。而Etl不仅仅用来将数据加载到数据仓库,还可以有其他用途,如加载数据集市,生成电子表格,使用数据挖掘模型为客户分级,甚至将预测数据回写到oltp系统,尽管etl应用范围广泛,但一般来说还是可以分为以下3个部分。
抽取:一般抽取过程需要连接不同的数据源,以便为随后的步骤提供数据。这一部分看上去简单而琐碎,实际上它是Etl解决方案成功实施的一个主要障碍。
转换:在抽取和加载之间,任何对数据的处理过程都是转换。这些处理过程通常包括(但不限于)下面的一些操作。
移动数据
根据规则验证数据
数据内容和数据结构的修改。
集成多个数据源的数据。
根据处理后的数据计算派生值和聚集值。
3、加载:将数据加载到目标系统的所有操作。在第5章会说明加载并不仅仅是将数据批量装载到目标表。加载过程还包括对代理健管理和对维度表的管理等。
本章的剩余部分说明了etl解决方案的演化过程以及主要的etl的构建模块。
1.2.1 etl解决方案的演化过程
自从数据从电子化形式保存以来,就有了数据整合的需求。在数据整合早期,etl出现之前,人们使用手工编写程序的方式来完成不同数据源的数据整合工作,如早期的cobol\rpg和后来的perl或pl/sql 。尽管理这是第一代数据整合方案,但直至今天仍有45%的etl工作使用这种手工编程/脚本的方式来完成。相对价格昂贵的etl工具而言,手工编程还有一定的意义,但是现在已经有越来越多的开源或低价的etl工具,再使用手工编程方式完成Etl工作就已经没有太多的意义了,手工编程的主要缺点在于:
容易出错
开发周期长
不易维护
缺少元数据
缺少一致性的日志和错误处理。
第二代etl工具(这里我们还是称为工具,而不是广义的解决方案)试着克服这一问题,方法是依据设计好的etl工作流来自动生成所需代码。在20世纪90年代初,出现了prism,carlton,以及etl这些产品,但是大多数产品后来被其他etl供应商收购了,etl大概仍然具有代码生成技术,这丝毫无疑问是这个领域最负盛名的产品,同样的,流行的开源工具talend也是代码生成解决方案的另一个例子。
代码生成也有利有弊,最大的弊端是大多数代码生成仅能用于有限的特定数据库。不久之后,就在代码生成技术广泛应用之时,第三代etl工具出现了,第三代etl工具采用基于引擎的架构,可以执行所有的数据处理进程,还可以将所有的数据库连接和转换规则作为元数据存储起来。因为引擎有标准的工作方式,所有的转换在逻辑上独立的,无论是相对于数据源还是数据目标。基于引擎的etl工具通常比代码生成的方式更具有通用性。kettle就是一个基于引擎etl工具的典型例子,在这个领域,还有一些其他熟悉的名字。
无论是代码生成器还是基于引擎的工具。都能帮助我们发现数据源的底层架构,以及这些架构之间的关系,当然在这些工具里有一些工具比工具在这方面做得更好。但它们都需要开发目标目标数据模型,或者先行开发,或者在设计数据转换步骤开发。设计阶段开发过后,还必须进行目标数据模型与源数据模型的映射。而整个过程是相当耗时,所以到了最后,新一代模型驱动数据仓库工具随之出现了,mda工具试图自动化实现数据仓库和数据集市的设计过程,读取源数据模型,生成目标数据模型与需求数据之间的映射,以便向目标填充数据。
数据仓库与数据集市:
在本书中,数据仓库和数据集市似乎是两个通用的词,然而事实并非如此,在这个词的使用范围,模型和适用性方面有着巨大的差异。数据仓库是单一的,大量数据的存储仓库,可以用来支撑企业决策略。因此,它所涉及的数据涵盖了各种主题和各种业务领域,例如金融、物流、市场营销和客户支持。通常,一个数据仓库不能被终端用户工具直接访问,相反一个数据集市可以由终端用户直接访问,并且是以特定的数据分析为目的的,例如零售或客户来电。
1.2.2 ETL基本构成
ETL解决方案就像一个业务流程,业务流程具有输入、输出,以及一个或多个工作环节,处理步骤。同样的,这些步骤也具有输入和输出,并可以执行一个输入转化为输出的操作。想一想,例如,在一家保险公司理赔部,门上有一个大牌子,上面写着理赔部,这就意味它描述了部门的主要职责和业务:处理理赔。而在部门里,你会发现每张办公桌上或分部门可能有其自身的特点:健康保险理赔、汽车保险理赔,旅游保险理赔,等等。当接纳一个理赔案件时,首先确定这个理赔被哪个部门处理。
必须有某种机制来近制整个处理流程,以及实际转换的细节工作。前面部分称为作业,后面部分称为转换,作业是etl解决方案的代理,而转换是基础的构建部份,独立的转换能够被链接在一起形成一个具有逻辑顺序的队列,形成一个能被调度和执行的作业,就像一个业务流程。同样,转换也是由几个步骤组成。步骤是kettle解决方案的第三种基本构成块。而步骤之间的连接由跳来决定。在本书其他部分,你将会更多地了解作业,转换,步骤以及跳的概念,这4个基础组成的部使你的能够开发任务etl解决方案。
1.3 ETL、ELT和EII
数据整合是一个比etl更加广泛的概念,ETL是指从一个或多个数据源抽取数据,经过一个或多个转换步骤后,物理地存储到目标环境中,目标环境通常是数据仓库,为了能把etl和其他数据整合就说过区分开,我们需要一种分类和抽述方法。
一个数据仓库的典型的例子。在图中有多个业力系统,一个数据中转区,一个保存了所有历史数据和多个可以由终端用户访问的数据集市,这些组成部分之间是由数据整合来完成。
ELT同etl在数据整合的方法上略微不同。在etl的情况下,数据据首先从源数据进行抽取,加载到目标数据库中,再转换为所需要的格式。所有大量的处理全部放在目标数据库中进行。这种做法的好处在于,一般情况下,数据库系统更适合处理负荷在百万级以上的数据集成,数据库系统也通常会对i/o进行优化,用来提高数据处理速度。
EII虚拟数据整合
ETL和ELT都是以物理方式将数据从oltp移动或复制到数据仓库,在前面的oltp和数据仓库对比,部分中已经说明了为什么要使用独立的数据仓库中,但是越来越多的没有必要移动和复制数据。实际上,大多数用户并不关心etl过程和数据仓库。除了物理数据集成方式,还有虚拟数据集成也可以满足用户访问的要求,这种虚拟数据集成方式就是企业信息集成,也就是eii.还有其他一些名称,如数据联邦和数据虚拟化,也都是描述同样的事情。这种方法的主要优点就是数据永远是最新的,另一个优点就是不需要额外的存储层,没有冗余层。在数据仓库环境下,同一数据可能要保存三到四份,一份在数据中转区,一份在业务系统。
数据整合面临的挑战
数据整合往往面临一系列挑战。这些挑战可能带有政治的,组织性的,功能性的或者技术性的特征。
首先,往往也是最重要的,你需要明确解决业务问题和发布企业都需要哪些数据。