CN102819589B - 一种基于etl的数据优化方法及设备 - Google Patents
一种基于etl的数据优化方法及设备 Download PDFInfo
- Publication number
- CN102819589B CN102819589B CN201210277097.1A CN201210277097A CN102819589B CN 102819589 B CN102819589 B CN 102819589B CN 201210277097 A CN201210277097 A CN 201210277097A CN 102819589 B CN102819589 B CN 102819589B
- Authority
- CN
- China
- Prior art keywords
- data processing
- data
- processing unit
- flow chart
- etl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明实施例提供了提供一种基于ETL的数据优化方法及设备,所述的方法包括:根据数据抽取、转换、装载的过程ETL预先设置多个数据处理单元;对所述的数据处理单元预先设置通信机制;采集用户输入的包括来源数据的指令信息;根据所述的来源数据构建与所述的指令信息对应的数据处理流程;根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化。通过预先设置数据处理单元以及通信机制,实现了对数据的简化优化、分支并行优化以及记录间并行优化,提高了数据优化的处理效率,节约硬件资源。
Description
技术领域
本发明关于数据处理技术,特别是关于数据迁移转换过程中的处理技术,具体的讲是一种基于ETL的数据优化方法及设备。
背景技术
在企业信息化建设过程中,经常涉及到对大量、分散、异构的数据进行处理,数据抽取、转换、装载的过程(Extract-Transform-Load,ETL)是该过程中必不可少的一部分。现有技术中主要有如下几种方式来实现ETL过程:
1、硬编码
硬编码是通过高级语言(如C、C++)或脚本等编译出的一个独立运行的程序或嵌入ETL框架运行的动态链接库。这种方式的优点是灵活,只要是采用的编程语言能支持的数据类型和处理逻辑,在ETL过程中,都能得以实现。相对其“灵活”的优点来说,“硬编码”方式的缺点也十分显著:由于该方式将所有ETL过程的实现逻辑,都封装到了一个硬编码程序中,ETL过程中的处理逻辑是不可见的,一旦要维护该ETL过程中的某个逻辑,则需要开发人员来进行。其可重用性、可移植性、可维护性差,难以文档化,而且工作量较大,开发周期一般较长。不适用与环境复杂多样、变化频繁的数据处理场景。
2、存储过程
数据库存储过程,是一组为了完成特定功能的SQL语句集,与程序中的函数类似,存储过程是在数据库中创建的。当要对数据库做一个较为复杂的操作时,可以通过存储过程将操作封装起来,并可以与事务处理等结合使用。存储过程实现ETL过程,将所有数据处理单元都存储在数据库中,随着需求的变动与添加,存储过程的数量会越来越大,导致该ETL过程的维护越来越困难。存储过程是脚本形式,不利于理解与工作交接,维护与调试难度大。同时,存储过程依赖与数据库系统,基本不具可移植性,比如:Oracle中的存储过程无法迁移到SQL Server中存储运行。
3、批量序列处理
根据ETL过程的需求,将数据以“数据包”的形式,按顺序在各数据处理单元之间传递,数据包内的所有数据,在一个数据处理单元内处理完成,形成新的数据包后,才传递给下一个数据单元处理。这种做法层次分明、结构简单、易理解,是ETL过程中最常用的实现方式。需要将所有数据以数据包形式,全部加载到内存,内存资源消耗情况依赖于所处理的数据包的大小,当数据包较大的时候,其处理效率呈加速下降的趋势。
综上所述,上述三种处理方式主要存在如下缺陷:
1、无可复用性、可移植性
这些实现方式,通常是针对特定的外部数据和加载目标,有特定的数据处理逻辑,这些逻辑固化在了一个ETL程序中;所以这样的实现方式只能用于特定的ETL场景,在其他场景中,无法将之前的成果一直到新的场景、或重复利用起来,只能再针对新的特定场景完成一个新的实现;
2、维护性、易用性差
有些技术方案是通过“脚本”或“代码”的方式,描述从外部数据到加载目标的ETL过程。维护这样的ETL过程,涉及到对大量的“脚本”或“代码”的管理,非常混乱,而且这对实施人员的技术水平提出了相当高的要求,否则难以实现。
3、无元数据管理
有些技术方案比如“硬编码”和“存储过程”,缺乏了对元数据进行存储和管理的过程,导致对ETL过程的运行、跟踪和分析,以及后期的维护调整,都非常难以进行。
4、效率低下
这类技术方案通常采用分布串行处理方式,这种方式能够满足小量数据简单的ETL过程需求。随着发展,各行业系统中的数据量越来越大,ETL过程通常要面对海量数据进行处理,对实时性要求越来越高,因此对ETL过程的效率就提出了越来越高的要求,传统的处理方式已经不能满足要求。
5、资源占用大
这类技术方案通过将要处理的各种异构数据,抽取到内存块中;甚至在转换过程中,需要实时连接外部数据如关系数据库。这就导致了大量的内存、CPU、带宽资源被占用。
发明内容
本发明实施例提供了一种基于ETL的数据优化方法及设备,通过预先设置数据处理单元以及通信机制,实现了对数据的简化优化、分支并行优化以及记录间并行优化,提高了数据优化的处理效率,节约硬件资源。
本发明的目的之一是,提供一种基于ETL的数据优化方法,所述的方法包括:根据数据抽取、转换、装载的过程ETL预先设置多个数据处理单元;对所述的数据处理单元预先设置通信机制;采集用户输入的包括来源数据的指令信息;根据所述的来源数据构建与所述的指令信息对应的数据处理流程;根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化。
本发明的目的之一是,提供一种基于ETL的数据优化设备,所述的设备包括:数据单元设置装置,用于根据数据抽取、转换、装载的过程ETL预先设置多个数据处理单元;通信机制设置装置,用于对所述的数据处理单元预先设置通信机制;指令信息采集装置,用于采集用户输入的包括来源数据的指令信息;数据流程构建装置,用于根据所述的来源数据构建与所述的指令信息对应的数据处理流程;数据优化装置,用于根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化。
本发明的有益效果在于,通过预先设置数据处理单元以及通信机制,实现了对数据的简化优化、分支并行优化以及记录间并行优化,提高了数据优化的处理效率,节约硬件资源、网络资源,提高了系统的稳定性,以及优化设备的易用性、可复用性和可移植性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于ETL的数据优化方法的流程图;
图2为本发明实施例提供的一种基于ETL的数据优化方法的实施方式二的流程图;
图3为本发明实施例提供的一种基于ETL的数据优化方法的实施方式三的流程图;
图4为本发明实施例提供的一种基于ETL的数据优化方法的实施方式四的流程图;
图5为图1中的步骤S105的具体流程图;
图6为本发明实施例提供的一种基于ETL的数据优化设备的结构框图;
图7为本发明实施例提供的一种基于ETL的数据优化设备的实施方式二的结构框图;
图8为本发明实施例提供的一种基于ETL的数据优化设备的实施方式三的结构框图;
图9为本发明实施例提供的一种基于ETL的数据优化设备的实施方式四的结构框图;
图10为本发明实施例提供的一种基于ETL的数据优化设备的实施方式五的结构框图;
图11为本发明实施例提供的一种数据处理单元的组合示意图;
图12为步骤S3065中将多个数据处理单元转化为单步数据进行处理的示意图;
图13是本发明实施例中根据某学校的指令信息生成的数据处理流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在企业信息化建设过程中,特别是面向分析与挖掘的商业智能业务过程,经常涉及到对大量、分散、异构的数据进行处理,ETL是这个过程中必不可少的一部分。下面首先介绍与本发明相关的缩略语与关键术语。
ETL:Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程。其负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
SQL:结构化查询语言(Structured Query Language),是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。
外部数据:ETL处理数据的来源,一般包括:各个厂商的数据库及版本、平面数据文件、Excel、及其他数据文件;
数据处理单元:ETL中定义的一条对数据进行处理的,可划分的最小逻辑单元;如:查询、过滤、排序等。
数据处理单元序列:ETL对数据的处理过程,可以被认为是由若干个数据处理单元组成的,一条带有分支的,有序的流程;数据处理单元序列,就是从此流程中任意截取的一段有序流程;例如:A->B->C->D是ETL过程,那么A->B、B->C、B->D都是数据处理单元序列。
可优化的数据处理单元:有些数据处理单元在某些情况下可以被优化,或者其参与的数据处理单元序列,在某些情况下可以被优化。则这种数据处理单元被称为可优化的数据处理单元;如本方案中,可优化的数据处理单元有:查询、过滤、分组统计、排序、表关联、表合并、字段计算。
可优化序列:可优化的数据处理单元序列,以数据处理单元序列的方式参与优化,可以将该序列的多个数据处理步骤统一优化为单步数据处理,这种序列被称为可优化序列。例如:可优化为一条SQL语句的数据处理单元序列。
元数据管理:元数据是关于数据的数据,其对于ETL来说尤其重要。ETL中大量的数据源定义、映射规则、转换规则、装载策略等都属于元数据范畴,这些信息不仅关系到ETL过程能否顺利完成,而且影响到后期的使用和维护。
硬编码:硬编码是指使用高级语言或脚本将整个数据处理流程固化与特定的ETL场景中。这样的好处是考虑的场景和逻辑少,便于开发,但是牺牲了代码的可重用性和可移植性。
标准化:为在一定的范围内获得最佳秩序,对实际的或潜在的问题制定共同的和重复使用的规则的活动,称为标准化。ETL中的很多数据处理逻辑,是常用并可重复使用的,可以抽象出来作为一个标准数据处理单元。
关系数据库:关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、MicrosoftAccess、My SQL等。
异构数据库:不同体系结构的数据库系统,如Oracle与SQL Server。
数据集:数据的集合,通常以表格形式出现,每行表示数据集的一个成员,每列表示了成员的一个属性,一个数据集通常有多个成员构成。
数据记录:数据集的一个成员或一行数据,被称为一条数据记录。
图1为本发明实施例提供的一种基于ETL的数据优化方法的流程图,由图1可知,所述的方法包括:
S101:根据数据抽取、转换、装载的过程ETL预先设置多个数据处理单元,数据处理单元包括抽取类、加载类以及转换类三种类型。表1即为本发明预先设置的多个标准化的数据处理单元。
抽取 | 加载 | 转换 |
文本输入 | 文本输出 | 字段计算 |
SQL输入 | 数据库输出 | 表关联 |
Excel输入 | Excel输出 | 查找 |
其他系统输入 | 其他系统输出 | 过滤 |
分组统计 | ||
表合并 | ||
合并行\拆分行 | ||
排序 | ||
冗余分拣 | ||
行转置 |
表1
S102:对所述的数据处理单元预先设置通信机制;
S103:采集用户输入的包括来源数据的指令信息。用户的指令信息中一般包括来源数据以及用户的要求,诸如:来源数据为某学校的信息库,用户的要求为从信息库中统计出所有教师的年龄以及家庭住址信息。
S104:根据所述的来源数据构建与所述的指令信息对应的数据处理流程。ETL过程是一个由大量标准化的数据处理单元构成的有机组合。以实现ETL数据处理过程为目标,其数据处理单元排列组合的方式非常灵活,但总结起来,有两种:串行组合、分支并行组合,其他组合可以由这两种情况进一步组合而成。如图11所示,即为一种串并结合的组合方式。执行该数据处理流程即可得到与用户指令对应的目标数据,以上述学校为例,目标数据即为用户要求的所有教师的年龄以及家庭住址信息。
S105:根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化。
图2为本发明实施例提供的一种基于ETL的数据优化方法的实施方式二的流程图。根据ETL数据处理流程,需要将数据按顺序在各个标准化的数据处理单元之间传递、解析并处理,这就要求各个数据处理单元之间必须约定共同的数据格式,以及交互接口,也就是说数据处理单元之间需要预设标准化通信机制的内容。
标准化数据格式:数据记录
标准化交互接口:每个标准化的数据处理单元,提供一个输入接口;当数据处理单元完成自身的数据处理后,通过其下一个数据处理单元的输入接口,写入到下一个数据处理单元;再按照下一个数据处理单元的逻辑进行处理与传递,如此循环,直到完成最后一个数据处理单元。
由图2可知,步骤S102具体包括:
S202:当所述的数据处理单元为抽取类时,在所述的数据处理单元上加载输出接口。由表1可知,抽取类的数据处理单元本身带有输入接口,因此仅需加载输出接口。
S203:当所述的数据处理单元为加载类时,在所述的数据处理单元上加载输入接口。由表1可知,加载类的数据处理单元本身带有输出接口,因此仅需加载输入接口。
S204:当所述的数据处理单元为转换类时,在所述的数据处理单元上加载输入接口、输出接口。由表1可知,转换类的数据处理单元本身不带有任何接口,因此需加载输入、输出接口。
优化方式一:分支并行处理
图3为本发明实施例提供的一种基于ETL的数据优化方法的实施方式三的流程图,由图3可知,所述的步骤S105具体包括:
S405:判断所述的数据处理流程中第一个数据处理单元处理的数据是否为数据库数据源,当判断为否时,执行步骤S406;
S406:筛选所述的数据处理流程中的多条分支。标准化数据处理单元中,有一些涉及多条分支,如:关联、合并,每个分支由一个或多个数据处理单元组合而成。分支之间没有相互影响、相互依赖的关系。所以为避免不必要的排队等待时间,分支在合并之前,可以并行起来。如图11中的查询数据、过滤数据与抽取文本、排序数据即为并行的两条分支。
S407:采用多线程方式对所述的多条分支进行并行处理。现有技术中的硬编码、存储过程以及批量序列处理在实现并行ETL逻辑时,均按照串行方式来实现的。本发明提供的由步骤S406、S407组成的分支并行处理则完全按照并行的方式来实现并行ETL逻辑。
优化方式二:记录并行处理
图4为本发明实施例提供的一种基于ETL的数据优化方法的实施方式四的流程图,由图4可知,所述的步骤S105的另一种实施方式具体包括:
S505:判断所述的数据处理流程中第一个数据处理单元处理的数据是否为数据库数据源,当判断为否时,执行步骤S406;
S506:筛选所述的数据处理流程中的串行数据处理单元。对于串行的标准化数据处理单元,为了使处理并行起来,同时避免将抽取的所有数据加载到内存,导致内存占用情况严重,采用并行的记录传递的方式。如图11中的关联数据、字段计算以及加载数据即为串联数据处理单元。
S507:将输入至所述的串行数据处理单元的数据分解为多条数据记录。在图13中,诸如将输入关联数据单元的数据分解为10条数据记录。
S508:对每条数据记录分配单线程以处理所述的数据记录。即10条数据记录同时执行关联数据的逻辑,完成了该单元的数据记录即可执行字段计算的逻辑,无需等待所有10条数据记录均完成关联数据的逻辑之后再去执行字段计算的逻辑,实现了多条数据记录的并行处理。
优化方式三:简化处理
为优化ETL数据处理过程效率,简化ETL过程是一个有效途径。ETL过程作为一个复杂的数据处理流程,通常由若干有序的数据处理单元组成,每个数据处理单元被认为是一个步骤。在某些场景下,可以将多个步骤可以转化为一个步骤,通过简化数据处理步骤,起到提高效率的目的。
要执行此优化,首先要确定哪些步骤可以简化为一个步骤,这就需要通过对ETL数据处理流程进行分析,并统计出可优化的数据处理单元序列,分析的目的是简化掉尽可能多的步骤。
图5为图1中的步骤S105的另一种实施方式的具体流程图,由图5可知,所述的步骤S105具体包括:
S1051:判断所述的数据处理流程中第一个数据处理单元处理的数据为数据库数据源时,当判断为是时,执行步骤S1052;
S1052:将所述的数据处理单元添加至可优化序列;
S1053:依次判断所述的数据处理流程中的下一个数据处理单元是否属于“查询、过滤、分组、统计、排序、计算”集合中的一个,当判断为是时,返回执行步骤S1052,否则执行步骤S1054。此处判断的数据处理单元是数据处理流程中的下一个数据处理单元。
S1054:判断所述的数据处理流程中的数据处理单元是否带分支,当判断为是时,执行步骤S1055。表1所示的数据处理单元中,SQL输入、表关联、过滤、分组统计、表合并以及排序均是不带分支的。
S1055:继续判断所述的数据处理单元相关联的分支上的数据处理单元处理的数据是否为数据库数据源,当判断为是时,执行步骤S1056:
S1056:将所述的数据处理单元以及相关联的分支上的数据处理单元添加至可优化序列。执行完一个数据处理单元后,仍需按照步骤S1051至S1056顺次执行数据处理流程中的所有数据处理单元。
S1057:将所述的可优化序列中的数据处理单元转化为单步数据进行处理。如图12所示,可优化序列中有查询数据、过滤数据、字段计算以及加载数据,将这四个数据处理单元转化为单步数据进行处理。
图6为本发明实施例提供的一种基于ETL的数据优化设备的结构框图,由图6可知,所述的设备包括:
数据单元设置装置100,用于根据数据抽取、转换、装载的过程ETL预先设置多个数据处理单元,数据处理单元包括抽取类、加载类以及转换类三种类型。表1即为本发明预先设置的多个标准化的数据处理单元。
通信机制设置装置200,用于对所述的数据处理单元预先设置通信机制;
指令信息采集装置300,用于采集用户输入的包括来源数据的指令信息,用户的指令信息中一般包括来源数据以及用户的要求,诸如:来源数据为某学校的信息库,用户的要求为从信息库中统计出所有教师的年龄以及家庭住址信息。
数据流程构建装置400,用于根据所述的来源数据构建与所述的指令信息对应的数据处理流程。ETL过程是一个由大量标准化的数据处理单元构成的有机组合。以实现ETL数据处理过程为目标,其数据处理单元排列组合的方式非常灵活,但总结起来,有两种:串行组合、分支并行组合,其他组合可以由这两种情况进一步组合而成。如图11所示,即为一种串并结合的组合方式。执行该数据处理流程即可得到与用户指令对应的目标数据,以上述学校为例,目标数据即为用户要求的所有教师的年龄以及家庭住址信息。
数据优化装置500,用于根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化。
图7为本发明实施例提供的一种基于ETL的数据优化设备的实施方式二的结构框图。根据ETL数据处理流程,需要将数据按顺序在各个标准化的数据处理单元之间传递、解析并处理,这就要求各个数据处理单元之间必须约定共同的数据格式,以及交互接口,也就是说数据处理单元之间需要预设标准化通信机制的内容。
标准化数据格式:数据记录
标准化交互接口:每个标准化的数据处理单元,提供一个输入接口;当数据处理单元完成自身的数据处理后,通过其下一个数据处理单元的输入接口,写入到下一个数据处理单元;再按照下一个数据处理单元的逻辑进行处理与传递,如此循环,直到完成最后一个数据处理单元。
由图7可知,所述的通信机制设置装置200具体包括:
第一设置单元201,用于当所述的数据处理单元为抽取类时,在所述的数据处理单元上加载输出接口。由表1可知,抽取类的数据处理单元本身带有输入接口,因此仅需加载输出接口。
第二设置单元202,用于当所述的数据处理单元为加载类时,在所述的数据处理单元上加载输入接口。由表1可知,加载类的数据处理单元本身带有输出接口,因此仅需加载输入接口。
第三设置单元203,用于当所述的数据处理单元为转换类时,在所述的数据处理单元上加载输入接口、输出接口。由表1可知,转换类的数据处理单元本身不带有任何接口,因此需加载输入、输出接口。
图8为本发明实施例提供的一种基于ETL的数据优化设备的实施方式三的结构框图,由图8可知,所述的数据优化装置500具体包括:
并行处理装置501,用于当所述的数据处理流程中第一个数据处理单元处理的数据不是数据库数据源时,对所述的数据处理流程进行并行处理。
优化方式一:分支并行处理
由图8可知,所述的并行处理装置501具体包括:
第一筛选单元5011,用于筛选所述的数据处理流程中的多条分支。标准化数据处理单元中,有一些涉及多条分支,如:关联、合并,每个分支由一个或多个数据处理单元组合而成。分支之间没有相互影响、相互依赖的关系。所以为避免不必要的排队等待时间,分支在合并之前,可以并行起来。如图11中的查询数据、过滤数据与抽取文本、排序数据即为并行的两条分支。
并行处理单元5012,用于采用多线程方式对所述的多条分支进行并行处理。现有技术中的硬编码、存储过程以及批量序列处理在实现并行ETL逻辑时,均按照串行方式来实现的。本发明提供的由第一筛选单元5011、并行处理单元5012组成的分支并行处理则完全按照并行的方式来实现并行ETL逻辑。
优化方式二:记录并行处理
图9为本发明实施例提供的一种基于ETL的数据优化设备的实施方式四的结构框图,由图9可知,所述的并行处理装置501在另一种实施方式中具体包括:
第二筛选单元5021,用于筛选所述的数据处理流程中的串行数据处理单元。对于串行的标准化数据处理单元,为了使处理并行起来,同时避免将抽取的所有数据加载到内存,导致内存占用情况严重,采用并行的记录传递的方式。如图11中的关联数据、字段计算以及加载数据即为串联数据处理单元。
分解单元5022,用于将输入至所述的串行数据处理单元的数据分解为多条数据记录。在图11中,诸如将输入关联数据单元的数据分解为10条数据记录。
单线程分配单元5023,用于对每条数据记录分配单线程以处理所述的数据记录。即10条数据记录同时执行关联数据的逻辑,完成了该单元的数据记录即可执行字段计算的逻辑,无需等待所有10条数据记录均完成关联数据的逻辑之后再去执行字段计算的逻辑,实现了多条数据记录的并行处理。
优化方式三:简化处理
为优化ETL数据处理过程效率,简化ETL过程是一个有效途径。ETL过程作为一个复杂的数据处理流程,通常由若干有序的数据处理单元组成,每个数据处理单元被认为是一个步骤。在某些场景下,可以将多个步骤可以转化为一个步骤,通过简化数据处理步骤,起到提高效率的目的。
要执行此优化,首先要确定哪些步骤可以简化为一个步骤,这就需要通过对ETL数据处理流程进行分析,并统计出可优化的数据处理单元序列,分析的目的是简化掉尽可能多的步骤。
图10为本发明实施例提供的一种基于ETL的数据优化设备的实施方式五的结构框图。由图10可知,所述的数据优化装置500在该实施方式中包括:
简化处理装置401,用于当所述的数据处理流程中第一个数据处理单元处理的数据为数据库数据源时,对所述的数据处理流程进行简化处理;
由图10可知,所述的简化处理装置具体包括:
第一判断单元4011,用于判断所述的数据处理流程里第一个数据处理单元处理的数据是否为数据库数据源,当判断为是时,执行添加单元4012,否则执行第二判断单元4013;
所述的添加单元4012,用于将所述的数据处理单元添加至可优化序列;
所述的第二判断单元4013,用于依次判断所述的数据处理流程中的下一个数据处理单元是否属于“查询、过滤、分组、统计、排序、计算”集合中的一个,当判断为是时,执行所述的添加单元4012,否则执行第三判断单元4014。此处判断的数据处理单元是数据处理流程中的下一个数据处理单元。
第三判断单元4014,用于判断所述的数据处理流程中的数据处理单元是否带分支,当判断为是时,执行第四判断单元4015。表1所示的数据处理单元中,SQL输入、表关联、过滤、分组统计、表合并以及排序均是不带分支的。
所述的第四判断单元4015,用于继续判断所述的数据处理单元相关联的分支上的数据处理单元处理的数据是否为数据库数据源,当判断为是时,执行所述的添加单元。执行完一个数据处理单元后,仍需按照第二判断单元4013、第三判断单元4014、第四判断单元4015顺次执行数据处理流程中的所有数据处理单元。
处理单元4016,用于将所述的可优化序列中的数据处理单元转化为单步进行处理。如图12所示,可优化序列中有查询数据、过滤数据、字段计算以及加载数据,将这四个数据处理单元转化为单步数据进行处理。
下面结合具体的实施例,详细介绍本发明实施例中的一种基于ETL的数据优化方法及设备。在该实施例中,S1:来源数据为某学校数据库中的两个表:学生信息表和学生成绩表。学生信息表为表2所示,学生成绩表位表3所示。
学号 | 姓名 | 性别 | 班级 |
10341 | 张三 | 男 | 三班 |
10342 | 李四 | 女 | 三班 |
10343 | 王五 | 男 | 三班 |
10402 | 赵六 | 女 | 四班 |
10403 | 陈七 | 女 | 四班 |
10511 | 胡八 | 男 | 五班 |
10512 | 郑九 | 女 | 五班 |
表2
学号 | 语文 | 数学 | 英语 |
10341 | 88 | 78 | 98 |
10342 | 65 | 65 | 77 |
10343 | 87 | 68 | 90 |
10402 | 75 | 76 | 80 |
10403 | 82 | 67 | 77 |
10511 | 68 | 76 | 65 |
10512 | 88 | 75 | 93 |
表3
S2:用户的指令信息中,要求统计该校所有男学生的总成绩,并按总成绩升序排序,加载到另一张表中。
S3:构建的ETL方案中数据处理流程如图13所示。下面对该数据处理流程进行优化,具体包括:
S4:判断所述的数据处理流程中第一个数据处理单元处理的数据是否为数据库数据源,即判断“查询学生信息”是否为数据库数据源,因“查询学生信息”是数据库数据源,因此,执行步骤S5;
S5:将所述的数据处理单元添加至可优化序列,即将“查询学生信息”加入到可优化序列;
S6:判断所述的数据处理流程中的下一个数据处理单元是否属于“查询、过滤、分组、统计、排序、计算”集合中的一个,当判断为是时,返回执行步骤S5。在该实施例中,由于“过滤性别:男”属于该集合中的过滤,因此,返回执行步骤S5,将“过滤性别:男”加入到可优化序列;
S7:判断所述的数据处理流程中的下一个数据处理单元是否属于“查询、过滤、分组、统计、排序、计算”集合中的一个,当判断为是时,返回执行步骤S5,否则执行步骤S8。在该实施例中,由于“表关联”不属于该集合中的任何一个,因此,执行步骤S8。
S8:判断所述的数据处理流程中的下一个数据处理单元是否带分支,当判断为是时,执行步骤S9。即判断“表关联”是否带分支,因“表关联”带分支,因此执行步骤S9;
S9:继续判断所述的数据处理单元相关联的分支上的数据处理单元处理的数据是否为数据库数据源,当判断为是时,执行步骤S1056:即判断判断与“表关联”的相关联的分支“计算总成绩”、“查询学生成绩”是否为数据库数据源,该实施例中判断结果为“是”,因此将“表关联”、“查询学生成绩”和“计算总成绩”加入可优化序列。
S10:判断所述的数据处理流程中的下一个数据处理单元“按总成绩排序”,其为数据处理单元“排序”,存在于标准化的可优化数据处理单元集合(查询、过滤、分组统计、排序、计算)中,将该处理单元加入可优化序列。
S11:判断所述的数据处理流程中的下一个数据处理单元“数据加载”,该数据处理单元不存在于标准化的可优化数据处理单元集合(查询、过滤、分组统计、排序、计算)中,且该数据处理单元无相关联的分支数据处理单元,因此对该数据处理单元的分析结束。
S12:将所述的可优化序列中的数据处理单元转化为单步数据进行处理。由上述步骤可知,在该实施例中,可优化序列中的数据处理单元共有:“查询学生信息”、“过滤从性别:男”、“查询学生成绩”、“计算总成绩”以及“表关联”、“按总成绩排序”。因此,将这几个处理单元转化为单步数据进行处理,得到的目标数据如表4所示。
学号 | 姓名 | 性别 | 总成绩 |
10341 | 张三 | 男 | 266 |
10343 | 王五 | 男 | 245 |
10511 | 胡八 | 男 | 209 |
表4
综上所述,本发明提供了一种基于ETL的数据优化方法及设备,通过预先设置数据处理单元以及通信机制,实现了对数据的简化优化、分支并行优化以及记录间并行优化,提高了数据优化的处理效率,节约硬件资源、网络资源,提高了系统的稳定性,以及优化设备的易用性、可复用性和可移植性。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种基于数据抽取、转换、装载的过程ETL的数据优化方法,其特征是,所述的方法包括:
根据数据抽取、转换、装载的过程ETL预先设置多个数据处理单元;
对所述的数据处理单元预先设置通信机制;
采集用户输入的包括来源数据的指令信息;
根据所述的来源数据构建与所述的指令信息对应的数据处理流程;
根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化,该步骤包括:当所述的数据处理流程中第一个数据处理单元处理的数据为数据库数据源时,将所述的第一个数据处理单元添加至可优化序列;依次判断所述的数据处理流程中的下一个数据处理单元是否属于“查询、过滤、分组、统计、排序、计算”集合中的一个;当判断为是时,将所述的数据处理单元添加至可优化序列;当判断为否时,继续判断所述的数据处理单元是否带分支;当判断为是时,继续判断所述的数据处理单元相关联的分支上的数据处理单元处理的数据是否为数据库数据源;当判断为是时,将所述的数据处理单元以及相关联的分支上的数据处理单元添加至可优化序列;将所述的可优化序列中的数据处理单元转化为单步进行处理。
2.根据权利要求1所述的方法,其特征是,所述的数据处理单元包括抽取类、加载类以及转换类三种类型。
3.根据权利要求2所述的方法,其特征是,对所述的数据处理单元预先设置通信机制具体包括:
当所述的数据处理单元为抽取类时,在所述的数据处理单元上加载输出接口;
当所述的数据处理单元为加载类时,在所述的数据处理单元上加载输入接口;
当所述的数据处理单元为转换类时,在所述的数据处理单元上加载输入接口、输出接口。
4.根据权利要求1所述的方法,其特征是,根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化具体包括:
当所述的数据处理流程中第一个数据处理单元处理的数据不是数据库数据源时,对所述的数据处理流程进行并行处理。
5.根据权利要求4所述的方法,其特征是,对所述的数据处理流程进行并行处理具体包括:
筛选所述的数据处理流程中的多条分支;
采用多线程方式对所述的多条分支进行并行处理。
6.根据权利要求4所述的方法,其特征是,对所述的数据处理流程进行并行处理具体包括:
筛选所述的数据处理流程中的串行数据处理单元;
将输入至所述的串行数据处理单元的数据分解为多条数据记录;
对每条数据记录分配单线程以处理所述的数据记录。
7.一种基于ETL的数据优化设备,其特征是,所述的设备包括:
数据单元设置装置,用于根据数据抽取、转换、装载的过程ETL预先设置多个数据处理单元;
通信机制设置装置,用于对所述的数据处理单元预先设置通信机制;
指令信息采集装置,用于采集用户输入的包括来源数据的指令信息;
数据流程构建装置,用于根据所述的来源数据构建与所述的指令信息对应的数据处理流程;
数据优化装置,用于根据所述的数据处理单元以及预设的通信机制对所述的数据处理流程进行优化,所述的数据优化装置包括:第一判断单元,用于判断所述的数据处理流程里第一个数据处理单元处理的数据是否为数据库数据源,当判断为是时,执行添加单元,否则执行第二判断单元;所述的添加单元,用于将所述的数据处理单元添加至可优化序列;所述的第二判断单元,用于依次判断所述的数据处理流程中的下一个数据处理单元是否属于“查询、过滤、分组、统计、排序、计算”集合中的一个,当判断为是时,执行所述的添加单元,否则执行第三判断单元;所述的第三判断单元,用于继续判断所述的数据处理单元是否带分支,当判断为是时,执行第四判断单元;所述的第四判断单元,用于继续判断所述的数据处理单元相关联的分支上的数据处理单元处理的数据是否为数据库数据源,当判断为是时,执行所述的添加单元;处理单元,用于将所述的可优化序列中的数据处理单元转化为单步进行处理。
8.根据权利要求7所述的设备,其特征是,所述的数据处理单元包括抽取类、加载类以及转换类三种类型。
9.根据权利要求8所述的设备,其特征是,所述的通信机制设置装置具体包括:
第一设置单元,用于当所述的数据处理单元为抽取类时,在所述的数据处理单元上加载输出接口;
第二设置单元,用于当所述的数据处理单元为加载类时,在所述的数据处理单元上加载输入接口;
第三设置单元,用于当所述的数据处理单元为转换类时,在所述的数据处理单元上加载输入接口、输出接口。
10.根据权利要求7所述的设备,其特征是,所述的数据优化装置具体包括:
并行处理装置,用于当所述的数据处理流程中第一个数据处理单元处理的数据不是数据库数据源时,对所述的数据处理流程进行并行处理。
11.根据权利要求10所述的设备,其特征是,所述的并行处理装置具体包括:
第一筛选单元,用于筛选所述的数据处理流程中的多条分支;
并行处理单元,用于采用多线程方式对所述的多条分支进行并行处理。
12.根据权利要求10所述的设备,其特征是,所述的并行处理装置具体包括:
第二筛选单元,用于筛选所述的数据处理流程中的串行数据处理单元;
分解单元,用于将输入至所述的串行数据处理单元的数据分解为多条数据记录;
单线程分配单元,用于对每条数据记录分配单线程以处理所述的数据记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210277097.1A CN102819589B (zh) | 2012-08-06 | 2012-08-06 | 一种基于etl的数据优化方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210277097.1A CN102819589B (zh) | 2012-08-06 | 2012-08-06 | 一种基于etl的数据优化方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102819589A CN102819589A (zh) | 2012-12-12 |
CN102819589B true CN102819589B (zh) | 2015-02-04 |
Family
ID=47303700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210277097.1A Active CN102819589B (zh) | 2012-08-06 | 2012-08-06 | 一种基于etl的数据优化方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102819589B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102737B (zh) * | 2014-07-28 | 2018-01-30 | 中国农业银行股份有限公司 | 一种历史数据存储方法和系统 |
CN104504010B (zh) * | 2014-12-11 | 2017-08-01 | 国云科技股份有限公司 | 一种多对多的数据采集系统及其采集方法 |
CN105589920B (zh) * | 2015-09-29 | 2019-10-01 | 中国银联股份有限公司 | 用于大数据预分析的方法和装置 |
CN106708854B (zh) * | 2015-11-13 | 2020-05-22 | 博雅网络游戏开发(深圳)有限公司 | 数据导出方法和装置 |
US10339152B2 (en) | 2016-08-29 | 2019-07-02 | International Business Machines Corporation | Managing software asset environment using cognitive distributed cloud infrastructure |
CN110019446A (zh) * | 2017-09-12 | 2019-07-16 | 上海酷服信息科技有限公司 | Etl数据处理系统及方法 |
CN112115191B (zh) * | 2020-09-22 | 2022-02-15 | 南京北斗创新应用科技研究院有限公司 | 一种大数据etl模型执行的分支优化方法 |
CN113535758B (zh) * | 2021-09-09 | 2021-12-24 | 浩鲸云计算科技股份有限公司 | 一种把传统数据库脚本批量转换上云的大数据系统和方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1897025A (zh) * | 2006-04-27 | 2007-01-17 | 南京联创科技股份有限公司 | 海量数据处理中多线程工作包并行的etl技术 |
CN101446962A (zh) * | 2008-12-31 | 2009-06-03 | 中国建设银行股份有限公司 | 一种数据转换方法、装置及数据处理系统 |
CN102541942A (zh) * | 2010-12-31 | 2012-07-04 | 中国银联股份有限公司 | 一种数据批量转移系统及其方法 |
-
2012
- 2012-08-06 CN CN201210277097.1A patent/CN102819589B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1897025A (zh) * | 2006-04-27 | 2007-01-17 | 南京联创科技股份有限公司 | 海量数据处理中多线程工作包并行的etl技术 |
CN101446962A (zh) * | 2008-12-31 | 2009-06-03 | 中国建设银行股份有限公司 | 一种数据转换方法、装置及数据处理系统 |
CN102541942A (zh) * | 2010-12-31 | 2012-07-04 | 中国银联股份有限公司 | 一种数据批量转移系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102819589A (zh) | 2012-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102819589B (zh) | 一种基于etl的数据优化方法及设备 | |
US10509804B2 (en) | Method and apparatus for storing sparse graph data as multi-dimensional cluster | |
JP5298117B2 (ja) | 分散コンピューティングにおけるデータマージング | |
US10152502B2 (en) | Systems, apparatuses, methods, and computer readable media for processing and analyzing big data using columnar index data format | |
CN104268428B (zh) | 一种用于指标计算的可视化配置方法 | |
US20170083573A1 (en) | Multi-query optimization | |
US11693912B2 (en) | Adapting database queries for data virtualization over combined database stores | |
US20220164345A1 (en) | Managed query execution platform, and methods thereof | |
CN106897322A (zh) | 一种数据库和文件系统的访问方法和装置 | |
US9600559B2 (en) | Data processing for database aggregation operation | |
US11775529B2 (en) | Recursive functionality in relational database systems | |
CN104111958A (zh) | 一种数据查询方法及装置 | |
CN101739454B (zh) | 数据处理系统 | |
US7849289B2 (en) | Distributed memory type information processing system | |
CN103678425A (zh) | 多系统的集成分析 | |
CN105653830A (zh) | 一种基于模型驱动的数据分析方法 | |
US9805091B2 (en) | Processing a database table | |
CN114756629B (zh) | 基于sql的多源异构数据交互分析引擎及方法 | |
Jiadi et al. | Research on Data Center Operation and Maintenance Management Based on Big Data | |
CN104166739B (zh) | 分析数据库的指标文件处理方法及装置 | |
US20070208696A1 (en) | Evaluating materialized views in a database system | |
CN112667859A (zh) | 基于内存的数据处理方法及装置 | |
CN111260452A (zh) | 一种税务大数据模型的构建方法及系统 | |
CN107885834A (zh) | 一种Hadoop大数据组件统一验证系统 | |
Saravana et al. | A case study on analyzing Uber datasets using Hadoop framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |