数据集成成熟度模型解读
2024-2030数据集成成熟度曲线(二)
作者 | 郭炜
导读:上周,《技术成熟度曲线2024》第一部分关于「从ETL 到ELT,到 EtLT的趋势」的内容已发布,本文为报告的第二篇,主要对数据集成成熟度模型进行解读,并讲解数据集成的典型应用场景、核心能力等。
报告的最后一篇系列文章将于近期发布,敬请期待!
数据生产
数据生产部分指的是数据集成中数据如何获取、如何分发、如何转化、存储的问题。这部分是整合数据集成工作量最大,最有挑战的地方,业内用户在使用数据集成工具的时候,首先考虑到的是是否支持自己使用的数据库、云、SaaS系统的集成支持。如果这里无法支持用户自有系统,那么数据集成就需要客户需要额外的成本来定制化实现接口或导出成兼容文件,那么对于数据的实时性、准确性都会有挑战。
- 数据采集:目前大部分数据集成工具都已经支持了批量采集、限流、Http采集的部分,但是在实时数据获取(CDC),DDL变更是否可以采集部分还是在成长期和热门期。特别是DDL变更部分,如果无法实现源系统字段变化时,目标端做响应的处理那么实时数据处理基本就成了一段空话,因为系统的实时性经常要被源系统变更所打断。但是,如何有效的处理DDL变更技术复杂性还是非常高的,业内各个厂商也都是在探索过程中。
- 数据转换:在ETL架构逐步衰退的情况下,在集成工具中进行复杂的业务处理(例如,Join,Group By)已经逐步退出历史舞台,特别是在实时长场景下,很难有很大的内存可以用于流窗口的Join和聚合。所以,整体ETL工具都在初步迁移到ELT和EtLT架构当中。而利用SQL-Like的语言做轻量级数据转化几乎成为了主流,这样既可以不让开发人员学习各种各样的数据集成工具,同时又给开发人员足够的空间来满足数据清洗工作。同时,针对数据内容的监控、DDL变更的转化处理在结合通知、告警和自动化处理,让数据转化变为更智能的处理部分整个行业都在探索。
- 数据分发:传统的JDBC加载、Http和块加载已经成为每个主流数据集成工具必备的功能,比拼的都是数据源支持的多少。而DDL自动变更这可以答复降低开发人员的工作量,同时可以保证数据集成任务的顺利进行。在这部分,各个厂商都用出各自的绝活,来支持各种复杂场景的数据表定义变化情况下的处理。而大模型的对接是新兴的场景,让企业内部数据都可以对接大模型,这是未来几年的趋势,不过目前还属于一些开源社区极客在进行的工作。
- 数据存储:新一代的数据集成工具都会带缓存,这部分缓存过去是存在本地,现在开始利用分布式存储、分布式CheckPoint/快照来存储数据,特别是有大量数据缓存的情况下,需要进行数据回放、录制等场景时,有效利用云存储也是一种新兴方向。
- 数据结构迁移:这部分是在数据集成处理过程中,是否可以进行自动建表和自动检查工作。自动建表是指可以在目标系统中自动源系统建立兼容数据架构的表/数据结构。这将极大的减少数据开发工程师的工作量,目前业内头部的工具都具有自动建表功能。而模型推演是更加复杂场景下,在EtLT架构中,出现小t的情况下,针对实时数据DDL变更、数据增减字段的场景下自动推演其合理性,从而让用户在数据集成任务运行前确定任务是否存在问题。这部分行业还在尝试阶段。
计算模型
计算模型这部分是随着ETL、ELT、EtLT在不断变化的,从早期重视计算到中期重视传输,到现在重视在实时传输中做轻量计算,一直不停在迭代:
- 离线数据同步:这部分已经成为每个企业最基本的数据集成诉求,不过在不同架构下各自的性能各不相同,总体上ETL架构的工具是远低于ELT和EtLT在大批量数据情况下的性能。
- 实时数据同步:随着实时数据仓库、数据湖的普及,实时数据同步在现在成为每个企业在考虑数据集成的时候必不可少的一个因素,越来越多的企业开始使用实时同步。
- 批流一体:在新一代的数据集成引擎里都在设计之初就考虑批流一体,从而针对企业不同场景下给出更有效的同步方法,而过去大部分引擎在设计的时候只考虑实时或离线其中一种场景,因此很多实时引擎在批量数据同步的时候性能表现不佳,新兴引擎在此方面具有优势。而批量和流式的统一使用,可以在数据初始化、批流混合数据环境下有更好的表现。
- 云原生:在海外数据集成工具这方面更加激进,因为海外工具都是按量计费,所以,是否每个任务可以快速获取/释放响应计算资源是每个公司的核心竞争力和利润来源;反观国内,大数据云原生进展还比较缓慢,因此在国内还属于少数公司在探索中。
数据类型&典型场景
- 文件采集:这是每个集成工具必备的功能,与过去有所不同的是,除了标准的文本文件,现在Parque,ORC等大数据格式的文件数据采集也成为标准。
- 大数据采集:随着SnowFlake,Redshift,Hudi,Iceberg,ClickHouse,Doris,StarRocks等新兴数据源的普及,传统的数据集成工具在这方面明显落后,中美用户基本在大数据使用层面上在同一个步骤,因此要求厂商必须适配这些新兴数据源。
- Binlog采集:这在中国是一个新兴的产业,因为在信创化过程中,取代了传统的DataStage,Informatica等工具,但是Oracle,DB2等数据库的替换没有这么迅速,因此出现大量了专业Binlog采集数据公司来解决海外数据CDC问题。
- 信创数据采集:这也是中国特色的场景,信创化过程中出现大量国产数据库,是否可以适配这些数据库的批量和实时采集,也给中国厂商提出了更高的挑战。
- 分库分表:在大多数大型企业中,一般都采用分库分表来降低数据库的压力,因此,数据集成工具是否支持分库分表基本成为一个专业数据集成工具的标配。
- 消息队列:在数据湖和实时数据仓库的带动下,一切和实时相关的上下游都火爆起来,以消息队列为代表的的企业实时数据交换中心几乎成为先进企业必备的选项。而数据集成工具是否支持足够多的内存/磁盘的消息队列类型已经成为最热门的功能之一。
- 非结构化数据:现在企业数据源当中,MongoDB,ElasticSearch等非结构数据都成为企业必备数据之一,数据集成也相应支持这方面数据源。
- 大模型数据:如何让企业的数据快速和大模型交互,在全球有大量创业公司在做,这里有些是基于大模型直接做Embedding,有些是和向量数据库进行集成,在未来几年内,支持大模型数据源将成为数据集成工具的热门功能。
- SaaS集成:这在海外是非常热门典型的功能,几乎海外的数据集成工具都以支持多少SaaS接口为系统衡量标准,在中国这方面还难以构成大量需求。
- 数据统一调度:数据集成和调度系统的整合,特别是实时数据通过调度系统和后期数据仓库任务的相互配合是打造实时数据仓库必备的技能,因此全球新一代的DataOps平台都具有管理实时CDC数据和后期数据仓库批量数据的“批流一体”的调度能力。从而让企业从顺利从非实时到实时化过渡。
- 实时数据仓库/数据入湖:这两个场景都是现在企业最火爆的场景,让企业数据实时入仓/湖,从而让新一代的数据仓库/湖才可以发挥优势出来,因此,全球在推广新一代技术的时候,往往是以一套新数据生态的面目出现,例如 New Data Stack在美国非常流行。
- 数据容灾备份:随着数据集成实时性增强和CDC的支持,数据集成和传统灾备领域里出现了交叉,部分数据集成厂商和部分灾备厂商都开始做对方领域的工作和场景。不过,因为灾备场景和集成场景在细节上差异还是较大,所以相互渗透的厂商在对方领域里的功能都会比较缺乏,需要一段时间迭代。
运维监控
在数据集成当中,运维监控是非常重要的功能,如果数据出现问题,如果有比较好的运维监控和处理手段,可以配合断点续传,单步调试等功能大幅度降低整个系统运维工作量和开发人员的工作量:
- 流量控制:为了不影响原有系统,现代的数据集成工具从任务并行度、单任务JDBC并行度,单JDBC读取量等多个方面对流量进行控制,确保不影响源系统。
- 任务/表级统计:在数据集成过程中,每个任务以及任务中每个数据表同步的情况,出错情况对于管理运维人员都非常重要,而在全球厂商里只有头部厂商才CDC场景下对表级别监控进行了支持,因为技术难度原因,大部分小厂商还停留在任务级别统计上,很难对表级别进行监控。
- 逐条试运行:因为实时数据的支持,SaaS的支持和轻量级的tranform的加入,让直接运行一个比较复杂的数据流程更加复杂,因此部分前沿公司针对数据加入了逐条试运行的功能,让开发和运维更加高效。
- 表变更事件捕捉:这是在实时数据处理中的新兴功能,一般针对源系统的表变更的时候有机会让用户以约定好的方式进行改变或者告警,这样可以最大力度保证实时数据的稳定性。
- 批流一体调度:在实时CDC和流处理之后,势必会和传统的批量数据仓库任务需要结合,但是如何让实时流数据进入数据仓库后,准确的启动批量数据还不影响数据流的运行,这是为什么数据集成和批流一体调度相关的原因。目前市面的厂商对这方面支持程度都比较低,但相信未来在实时数据仓库流行起来的时候,这个功能也会成为必备功能。
- 智能诊断/调优/资源优化:在集群和云原生情况下,如何更好的利用现有资源以及如果出现问题的时候,如何推荐用户可以用正确的解决方案解决数据集成问题,都是全球最前沿的数据集成公司讨论的热门话题。不过整体落地可能还要比较长的时间才可以达到生产级别智能化的应用。
核心能力
对于数据集成来讲有非常多的功能都很重要,但是以下几点是数据集成赛道最核心的能力,如果在这方面缺乏,很可能在企业具体使用过程中产生比较大的影响:
- 全量/增量同步:单独的全量/增量同步已经成为每一个数据集成工具必备功能,不过从先全量自动切换到增量模式还没有在中小厂商普及,用户需要手工进行切换。这部分可以缺分厂商的专业度。
- CDC捕捉:随着企业对实时性要求变高,CDC捕捉成为了数据集成的核心竞争力,支持多少个数据源的CDC,是否支持本企业的数据库的CDC,以及CDC对源库的要求的权限和影响,往往成为数据集成工具的核心竞争力。
- 数据多样性:支持多少个数据源,现在成为数据集成工具里面的“红海竞争”,往往更好的支持用户已有系统的数据源,就能在商业竞争中取得更优势的地位。
- 断点续传:对于实时数据和批量数据是否支持断点续传,这在很多场景下可以帮助企业在很多场景下更快的恢复错误数据现场,或者在一些异常情况下的恢复很有帮助,不过还只是有少量工具支持这个功能。
- 并发/限速:数据集成工具需要要快的时候可以高并发,需要慢的时候可以有效降低对源系统的影响。这几乎成为集成工具的必备功能。
- 多表同步/整库迁移:这指的不仅仅是在界面的便捷选择,而是在底层引擎层面可否复用JDBC或者现有的集成任务,从而可以更好的利用现有资源,快速完成数据集成。
性能优化
在核心能力之外,性能的优劣往往代表用户是否需要更多的资源或者数据集成工具的硬件和云的成本是否足够低,不过当前也不需要追求极致的性能,相对于接口支持程度、核心能力之外,性能往往是被排在第三位考虑的因素:
- 时效性:分钟级别的集成已逐步退出历史舞台,支持秒级别的数据集成已经成为非常热门的功能。而毫秒级别数据集成场景还比较少,大部分还是灾备特殊场景下才会有这种需求。
- 数据规模:目前大部分场景是在Tb级别的数据集成,Pb级别的数据集成基本在互联网大厂使用开源工具实现,Eb级别数据集成短期内还不会出现。
- 高吞吐:高吞吐主要是看集成工具是否可以把网络和CPU有效的用满,从而达到理论数据集成的最大值。这方面ELT和EtLT的工具明显对ETL工具有优势。
- 分布式集成:动态容错相对于动态扩缩容和云原生更加重要,一个大的数据集成任务是不是可以在一些硬件、网络出错的情况下可以自动容错是做大批量数据集成的时候的基本功能。而扩缩容和云原生基本是这个场景下的衍生需求。
- 准确性:数据集成如何确保一致性是一个复杂任务,除了引擎本身需要利用多种技术确保“Exactly Once”之外,做了CRC校验之外。还需要有第三方的数据质量检查工具,而不能只是“自证清白”,因此数据集成工具往往会和数据调度工具相互配合以验证数据准确性。
- 稳定性:这是一个多种功能下的结果,从可用性,任务隔离、数据隔离、权限、加密控制等方面来确保单一任务的问题不会影响其他任务,单一数据库/部门出现问题的时候,不会影响其他任务和部门。
- 生态: 优秀的数据集成工具具有庞大的生态,可以支持多种数据源的同步,也可以和上下游调度、监控系统相互整合。同时,工具是否易用也是涉及到企业用人成本的重要指标。
专家介绍:
郭炜先生毕业于北京大学,现任中国通信学会开源技术委员会委员,中国软件行业协会智能应用服务分会副主任委员,全球中小企业创业联合会副会长,TGO鲲鹏会北京分会会长,ApacheCon Asia DataOps论坛主席,波兰DataOps峰会、北美Big Data Day演讲嘉宾,虎啸十年 杰出数字技术人物,中国开源社区最佳33人,中国2021年开源杰出人物。郭炜先生曾任易观CTO,联想研究院大数据总监,万达电商数据部总经理,先后在中金、IBM、Teradata任大数据方重要职位,对大数据前沿研究做出卓越贡献。同时郭先生参与多个技术社区工作,Presto, Alluxio,Hbase等,是国内开源社区领军人物。