阅读时间: 7 分钟
在这篇博客中,我们将介绍一下如果你想使用Pentaho数据集成,你必须了解的基本理论概念。
首先,我们需要知道什么是ETL。
什么是ETL?
ETL是Extract, Transform and Load的缩写。它是指从不同的数据源收集数据,将其转换为所需的格式,然后将其加载到目标数据存储系统的过程。
ETL涉及的步骤分为三部分。
第一步是提取,包括连接各种数据源所需的所有处理,然后从中提取数据。不同数据源的几个例子是Excel文件、SQL数据库中的表、JSON和XML文件,甚至是存储在云存储服务中的数据。从所有这些来源获取数据听起来很简单,但这是ETL的主要挑战之一。
第二步是转换数据。它包括应用于提取的数据的任何功能。在我们可以应用于数据的功能中,有数据清洗和质量检查,修改数据和修改其结构,整合数据,以及在处理后的数据上计算或汇总值。
最后一组步骤是加载数据。这包括将数据加载到目标系统所需的所有处理。这一部分并不简单地涉及将数据批量上传到目标系统。它涉及几个过程,如代理键的管理、维度表和其他相关操作。
通常,最后一步涉及将数据加载到数据仓库或数据集市。我们的下一步是了解这些术语的背景,以及数据仓库与操作性数据库的区别。
数据仓库和操作性数据库
在一个组织中,数据通常被存储在两种类型的数据库中。一个是操作性数据库,另一个是数据库仓库。虽然这两个系统都存储数据,但它们的目标大不相同。
在操作性数据库中,与业务的特定方面有关的信息被实时存储。例如,当你在亚马逊上下订单时,该订单被放入一个操作数据库。在这个数据库中,只有来自他们网站的订单被存储。
另一方面,数据仓库从一个组织内的许多不同来源收集数据,其目的是用来进行分析和报告。从复杂的查询中产生的数据仓库报告然后被用作商业决策的基础。因此,数据仓库的最终目标是促进业务决策。
与业务数据库不同,数据仓库存储了大量的历史信息,因此历史数据也可以被分析。
一个重要的区别是,数据仓库并不像操作性数据库那样频繁更新。因此,在我们的亚马逊例子中,每次有新的订单下达时,操作数据库都会被更新。然而,数据仓库将每天更新一次,每周更新一次,以此类推。
操作性数据库和数据仓库之间的区别
在操作性数据库中,OLTP(在线交易处理)用于删除、插入、替换和更新成千上万的短交易。所以,需要更新的数据较少,但需要多次更新。这种处理方式能立即响应用户的请求,用于实时管理一个组织的日常运作。
如果我们将OLTP与数据仓库进行比较,我们会发现前者通常专注于一个单一的业务流程,而后者则收集了来自不同业务对象的所有数据。此外,你可以看到,OLTP中的每一个数据源都是一个单一的来源,而数据仓库则是整理来自几个来源的数据。
在OLTP中,插入和更新查询是主要的查询类型,这意味着我们经常插入和更新新的数据行,而在数据仓库中,读取查询是主要的查询类型,因为我们将从数据仓库中提取数据用于分析和报告。
另一个主要区别是数据量。OLTP存储的数据量不到100GB,而数据仓库存储的数据量是TB级的。
数据仓库主要是组织范围内的。另一方面,OLTP支持一个运营的业务流程。
做ETL的一个原因是将几个OLTP数据库的数据合并到一个单一的数据仓库中,以后可以用来制作分析报告,以便做出商业决策。
什么是数据集市?
数据集市类似于数据仓库,然而,它们是数据仓库的子集。数据集市也不是一个业务数据库。它们类似于数据仓库,但数据集市的目的是只管理一个组织的特定单位。例如,在一个数据集市中,数据被存储在销售、财务或营销等部门下,与数据仓库类似。这里的议程是,所有与销售有关的数据都可以提供给销售团队,但与财务有关的数据却不能。
因此,数据仓库协助建立组织范围内的战略,而数据集市协助特定部门建立部门战略。
英蒙与金博尔架构
有两种流行的数据仓库架构是由知名作者提出的。第一个是Inmon提出的,第二个是Kimball提出的。
让我们首先讨论英蒙模型。
英蒙模型
根据Inmon的观点,组织应该首先汇编来自几个来源的所有数据,然后创建一个数据仓库。数据仓库将为整个组织的所有数据提供一个中央储存库。
从这个数据仓库中,数据将被分离出来供不同部门使用,正是这种分离创造了数据集市。然后,每个部门在数据集市上创建一个分析层,从中提取信息和分析结果。最后,从数据集市的分析中生成报告。
整个过程涉及ETL的两个步骤,在这个过程中,几个数据源被收集并放入一个仓库,然后数据被从仓库中取出并放入数据集市。在第一步中,没有做太多的转换。数据通常被直接提取和加载,这样就可以在数据仓库中找到原始格式的数据。第二,主要在数据被放入数据集市时对数据进行处理和转换。这就是英蒙模型。
金博尔模型
在比较流行的金博尔模型中,来自数据源的数据首先被整理成一个数据集市。这意味着Kimball建议组织中的每个部门都维护自己的数据集市。来自这些数据集市的数据,由组织的不同职能部门维护,然后被整理并放入一个数据仓库。
例如,销售部门将收集和维护其数据,财务部门将收集和维护其数据,营销部门将收集和维护其数据,等等。所有这些数据库将由不同的职能部门来维护。然后,这些数据将被收集并放入主仓库。
组织更有可能使用这种类型的架构。清理和验证数据已经在ETL过程中发生了,数据从不同的来源提取,它通常被清理并放入数据集市。来自数据集市的数据只是经过处理,使数据更有意义,然后被导入到数据仓库。
作为数据集市的替代,分析和报告由数据仓库处理。
ETL与ELT
同样,如前所述,ETL是指提取、转换、加载,而ELT是指提取、加载、然后再转换。
ETL
一个典型的ETL过程开始于从几个来源中提取数据,然后将其放入一个暂存区,这只是从所有数据源中收集数据,并以原始格式存储。中转区包含了没有经过处理的原始数据。
在暂存区之后,我们根据要求对数据进行转换,然后将其加载到数据仓库中。然后,数据仓库中的数据被用来创建分析和基于分析的报告。这是典型的ETL流程,我们所有的软件工具如Pentaho、Talend和Informatica都可以用来遵循这个流程。
另一个选择是ELT,即按照提取、加载、然后转换的方式。
ELT
在这种情况下,我们首先从所有的数据源中提取数据,并直接将其放入数据仓库,而不需要进行任何转换,所以不需要那个暂存区。数据仓库本身包含原始格式的数据。然后在仓库内对数据进行转换,这些转换后的数据被用于分析目的。
主要的区别是,ETL的转换是在Pentaho等工具中完成的,而ELT的转换是在数据仓库中使用复杂的SQL查询完成的。
现在,哪种情况下使用?ELT通常用于我们有非常大的数据量,大到不可能在软件工具中进行转换,我们必须把这些数据放在数据仓库中,使用SQL查询来进行转换。在大多数情况下,数据没有这么大,这就是为什么ETL通常是首选,因为有全面的工具,如Pentaho、Talend、Informatica,它们可以非常容易和完整地处理整个ETL过程。因此,就大多数实际目的而言,ETL比ELT更受欢迎。
参考资料 -
要了解更多关于Pentaho数据集成的信息,你可以访问这个链接。
要阅读更多的技术博客,请随时访问Knoldus博客。