一 什么是数据集成
现如今,很多企业或政府的信息化系统总是由上百甚至上千离散并且不断变化的计算机系统组成的,这些系统或自行构建,或通过其他方式获得。这些系统的数据经常需要集成到一起,用于做报表或者分析,或者需要相互共享信息;当旧系统被设立的新系统取代时,需要从旧系统格式转换为另一种格式。另外企业或政府还需要处理大量来自外部的数据,它们来自不同的来源。面对这些数据,企业和政府往往面临以下挑战:
1.需要处理海量数据,而这些数据可以是任何格式,结构化或非结构化,可以来自数据库、日志、文件系统、服务接口、消息队列等各种不同来源。
2.必须对这些数据进行整理、组合、比较,对这些数据在不同格式之间进行转化处理,并使其作为一个无缝的整体工作。
3.许多组织为这些不同的数据实现了不同的接口,而这些接口又在不断的变化升级,而随着这些接口的增多,导致难以维护和管理。
而数据集成是就是所有这些问题的解决方案。
二 数据集成的类型
1.批处理数据集成
大多数系统都以周期性(每天、每周或者每月)的方式将数据文件从一个系统传输到另一个系统。数据文件的内容是结构一致的数据记录,发送系统和接收系统必须理解数据的格式并达成一致。这个过程就是所谓的批处理模式。
2.实时数据集成
对一些数据及时性要求比较高的系统,周期性的批处理数据集成无法满足其要求,往往需要通过实时的消息的方式传输,或者通过捕获来源数据变化的方式来获得数据(Change Data Capture)。
三 ETL:抽取、转换和加载
数据集成的核心功能就是从当前存储数据的地方获取数据之后,将其转换为目 标系统所兼容的格式,最后将其导入到目标系统中。以上这三个步骤就是所谓的 抽取、转换和加载(Extract、transform and Load, ETL)。
1.抽取
访问当前数据所在的系统或者数据存储,了解这些数据的格式和内容,选择复制指定的数据,这就是抽取。抽取有两种基本方法:从当前系统或者数据源复制一份数据或者由特定的抽取程序抓取数据。
2.转化
将数据进行转换并与目标数据结构相适配的过程就是转换。常见的转换包括格式转换、字段映射、内容清洗、数据计算等。
3.加载
加载的过程就是将数据输出到目标系统。加载的类型可以分成全量加载、增量加载和批量加载。
4.ETL与ELT
ETL和ELT都包含数据的抽取、转换和加载,只是顺序不同,ETL一般使用ETL程序在提取的时候就将数据进行清洗转换,ELT则是将数据存到数据仓库,再用某种数据处理引擎(例如sql)进行数据清洗转换。
5.ETL图形化
一套成熟的数据集成ETL系统至少都包含上百个抽取、转换、加载的组件,因此都需要将组件图形化来辅助构建ETL过程。
四 数据集成开发与维护
1.数据集成的开发
在没有ETL系统之前,实现数据集成,往往通过编写特定代码来完成,数据集成的开发人员开发数据集成过程就像开发一个系统接口一样,需要进行需求的分析,再进行设计和实现,最后上线运行。在这个过程中还需要对数据有深刻理解的人员进行参与、评审和校验。所以既要有技术专家的参与,也要有业务专家的参与,而这个过程往往无法被分离。当出现ETL系统之后,业务专家经过一定的培训,便可以掌握ETL系统,实现独立的数据集成的开发。
2.数据集成的维护
在数据集成ETL过程开发完成后,还需要对ETL过程进行后期的维护,成熟的数据集成系统不仅需要提供对ETL任务的监控、统计等功能,还需要对提供对ETL过程版本的管理,如对ETL过程新增及变更的管理。
五 数据仓库
数据仓库是基于特定的数据结构(以及有关应用程序)所构建的数据的中央存储库,以便为数据的分析、计算、挖掘提供一致的数据源。在如今的大数据平台中,一般来说数据集成ETL的对象都是数据仓库。
1.数据仓库的选型
数据集成在ETL加载到数据仓库的效率、性能、实时性、事务性是跟数据仓库的选型息息相关的。一般来说对于OLAP型数据仓库,针对于大批量数据在数据集成加载以及数据的计算分析上的效率和性能是较高的,但是难以进行更新和删除操作,也难以保障数据的事务性。而对于OLTP型数据仓库,可以保障数据的事务性,可以进行更新和删除操作,但是在大批量数据的加载上以及数据的计算分析上效率和性能就表现的较差。不过,目前市面上逐渐发展出OLAP与OLTP两方面表现都能兼顾的数据仓库以及新一代的Data Lakehouse(湖仓一体)数据仓库,例如DataBricks Delta、SnowFlake、Hudi、IceBerg等等。
2.存储和索引类型的影响
数据集成的写入和读取的效率还跟数据仓库的数据类型或者索引类型有关。例如,在Hive中,txt、orc、parquet三种格式在写入和读取的效率都有一定的差异性;在hudi中,Copy On Write以及Merge On Read两种存储格式在新增、更新、查询方面效率也存在较大的差异性。
六 数据集成新的发展方向
1.云边协同
随着云计算的发展,目前越来越多的数据集成系统都往云端发展,很多数据集成系统都从传统的终端工具发展成云端中心与终端执行器相结合的方式。云端数据集成平台为终端工具提供部署、监控、统一管理、开发辅助等功能。
2.流批一体
随着数据量的不断增长,新一代的数据集成系统都朝着既能支持流式数据又能支持批次数据,同时能够结合成统一整体的模式来实现ETL过程。
3.CDC
因为数据的实时性要求,变化数据的捕获(Change Data Capture)也成为当下数据集成的热点方向。
4.IOT采集
随着物联网智能设备以及5G的发展,各大数据集成公司都开始推出IOT Edge边缘端设备的数据采集器,这些采集器往往以组件的形式和以往的数据集成ETL系统打通,同时构建了更适合在边缘设备上运行的轻量级ETL终端工具。