如何选择数据集成方式-离线&实时

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 如何在项目交付过程中合理经济的选择数据集成方案

1前言

“世上无难事,只要不集成

数据中台开发阶段的前期工作,最困难就是数据集成了。刚开始数据建模做的好坏,业务做的好坏,似乎都有情可原,但是数据集成不上来,一切业务远景就如地基不牢的高楼随时都可能倾覆。

从之前的项目经验来看,数据加工的建模方法和SQL语言都是较为标准化的,在项目中与阿里云第一次合作的伙伴和客户对于数据集成的学习和掌握都是较为困难。尤其是之前没有类似需要数据集成系统的企业,对数据集成工作的理解不是过于简单,就是过于担忧,又或者过于严苛。究其原因,还是对数据集成工作做什么都不了解,进而有很多误解。

2DataWorks的数据集成

早年DataWorks是只有离线集成,没有实时集成的功能,因为其定位主要是基于MaxCompute的离线开发平台。但是这几年在面向DataOps的发展上,定位已经是全能的大数据开发平台,可以基于多种引擎做数据开发。例如holo这种实时数仓的产品。所以,实时数据集成也是箭在弦上,终于做了一些对应的功能,作为一个资深用户还是很惊喜。

但是目前从实际使用上来看,实时集成功能虽然弥补了功能上的缺陷,但是与离线集成的强大比起来,还是有所欠缺。

首先是惊喜的部分。实时数据集成的直接构建了一键同步的功能,把复杂的配置实时同步任务,归档到log表,然后从Log表又merge到全量表的所有逻辑都包含在内了,真的实现了一步获得数据。从实际使用上来看,客户和伙伴学习配置一个实时数据集成任务与学习配置一个离线任务的成比起来更低。大部分人一次就配置成功,获得感很强。从资深用户的角度看,这种强大的整合能力也让实际运维的任务变得非常少,可以大大减轻开发人员的工作量,简直是梦想的彼岸。之前在一个部委大型项目上,我们的数据集成表高达几十万,每天调度运行的任务都是以十万计,无效运维压力山大。

然后是欠缺的部分。从实际使用上来看,单个一键同步任务所承载的任务数量还是需要限制。整合虽然带来了好处,屏蔽了细节,但是任务太多在一起局部异常会影响全局,影响范围也会变大。再就是目前实时集成并没有缓冲的机制,再遇到源端数据库批量处理的时候,比较容易进程异常,需要针对性的调整内存参数后才可以恢复,也影响了数据产出的时效。再就是目前实时集成在混合云只支持oraclemysql这两种数据库支持的数据库种类还是非常的少

3实时集成就可以解决全部问题

我敢相信,在设计之初,开发人员一定是想用实时集成替代离线集成,因为相比离线集成实时集成更加完美。而且,我在之前的文章中也讲过真实的集成场景,实时数据集成一定是主流,离线集成应该是辅助。

数据本身就是实时产生的,没有哪个原始数据不是实时产生的,只有后续的数据处理过程才可能离线。所以,本质上来说,原始的数据都是实时的,只有实时集成才能提供更高时效的数据用于数据分析。

以最常用的数据库实时集成为例。数据库记录了业务系统的操作型数据,业务系统本身就是实时在变化的。网页日志记录了网页访问的信息,这个过程产生的数据也是实时的。音视频数据流也是实时产生并且存储传输的。

那么离线数据是怎么来的呢?离线数据只是实时在变化的数据在某个时点的一个切片。我们在做离线集成的时候,其实是向数据源端发起了一个某个时点数据的访问请求。例如向某个数据库提交了一个SQL,数据库会返回提交这个时点数据表的一个时点切片。这只是这个数据库表的某个时点状态,过了这个时点再提交,数据表返回就可能不同。

实时集成就像接了一个石油管道,石油会源源不断的从数据源流到数据中台中去。但是这个管道投资是巨大的,如果管道中的油一直都是满载的传输还可以,实际上的数据产生更像是变幻莫测的天气,白天热晚上冷,偶尔刮风下雨,偶尔气候灾害。所以,实时集成也有自己的缺陷。

相比之下离线集成占用管道的时间是短暂的,但是都是满载的,效率上会更高。

实时集成的主要缺陷就是投资大,缺乏灵活性。为实时集成配置的资源不可以按照最小评估,必须按照最高的去评估。不管是传统的OGG这种历史长达几十年的产品,还是DataWorks这种新秀,都是会经常遇到突发的数据洪流导致进程崩溃。很多DBA或者数据库从业人士,一提到OGG就都头大,运维复杂压力大,稳定性也是差强人意。个人认为这主要还是因为成本效率的问题,经济划算的去运行,就得接受部分情况下的异常。

那么是什么原因导致的异常呢?一般来说,很少是因为业务系统本身的原因,因为大部分交易型系统不是双十一那种场景,数据库系统一般都被用来做与人相关的处理,本身就是离散的。我遇到的100%的数据库实时集成问题的原因无外乎两种,一种是后台运维批量更新,另外一种是后台批量数据处理(存储过程出个报表,做批量计算)。所以本质的原因是:数据库没有做交易型的业务,去做了批量型系统。在遇到这种场景,实时同步就会很崩溃,因为大部分时候都是乖乖宝,但是突然就变身了绿巨人,一下子就可以把实时同步进程搞崩溃。而且,这种情况,因为有人的参与,变得不可预测。

4要为你的系统做出选择

谈到这里,你就知道应该怎么做了。交易型可预测的部分做实时,因为实时简单可靠,运维起来容易。不可预测的批量运维,和批量数据处理应该走离线,因为这两种操作本身就是一种离线处理。

再就是经济性,如果不考虑成本,那其实可以尽可能全搞成实时,我用超大的资源浪费来满足各种不可预测的异常,来保障我的运转。就像我们国家的春运,是不是要把系统设计成春运不堵车的模式,还是设计成平时不堵车的模式,还是看够不够豪。

而我们做一般的小项目还是要考量一下的,下面是总结:

方案

交易发生类型

集成成本

实时集成

实时

离线集成

离线/实时

 

集成原则:

1-费用紧张,资源有限,尽可能使用离线集成。

2-批处理数据(主要指源端数据是批量产生,或者双十一式爆发式产生)集成,尽量走离线。如果确实预算非常充足,资源非常丰富,也可以走实时集成(很多时候,源端都可能扛不住)。

3-交易型数据集成,尽量走实时,如果资源有限可以走离线。

4-大表,例如数据超过200W、存储超过1G,尽量走实时,这种表一般在业务系统中数量不会超过表数量的20%离线集成时效性很难满足要求,当然也不是不行。一般离线集成的表在1-10亿这个级别也是可以一战(与系统资源相关)。再大基本上就很难了,集成时间过久,业务系统没有足够的快照空间,事务会报错,集成就会失败。

5-小表,例如常年不动的代码表,10W以下的小表,大概都能在30-3分钟内完成,建议走离线。毕竟实时挺贵,这些小表,还是打包搞过来比较适合。

 

就到这里了,我为什么写这么多集成的文章,真的很头疼。我每年都要给新的伙伴和客户教集成,每次还总能遇到新问题,把我搞的很狼狈。虽然集成看起来好像简单,但是真正客户化的把集成方案设计好,真的还是需要下一番功夫。

欢迎大家交流数据集成相关问题。

目录
相关文章
|
6月前
|
Java 数据处理 调度
Dataphin常见问题之离线管道同步数据datax就报连接超时如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
5月前
|
DataWorks Oracle 关系型数据库
DataWorks产品使用合集之手动添加上了,但是同步过来的数据这个字段依然显示为空,是什么原因
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
2月前
|
SQL 搜索推荐 数据管理
离线集成整库迁移再升级,定制化与灵活性全面增强
为了更好地满足客户对于数据库迁移过程中的个性化管理和操作需求,我们最新版本对“离线集成整库迁移”功能进行了更新,旨在解决客户在实际应用中遇到的痛点,进一步提升迁移任务的可管理性和便捷性。
|
3月前
|
Java 数据库连接 数据库
强强联手!JSF 与 Hibernate 打造高效数据访问层,让你的应用如虎添翼,性能飙升!
【8月更文挑战第31天】本文通过具体示例详细介绍了如何在 JavaServer Faces (JSF) 应用程序中集成 Hibernate,实现数据访问层的最佳实践。首先,创建一个 JSF 项目并在 Eclipse 中配置支持 JSF 的服务器版本。接着,添加 JSF 和 Hibernate 依赖,并配置数据库连接池和 Hibernate 配置文件。然后,定义实体类 `User` 和 DAO 类 `UserDAO` 处理数据库操作。
57 0
|
3月前
|
缓存 前端开发 JavaScript
Angular邂逅PWA:一场关于如何利用现代Web技术栈中的明星框架与渐进式理念,共同编织出具备原生应用般丝滑体验、离线访问及桌面集成能力的未来Web应用的探索之旅
【8月更文挑战第31天】本文详细介绍如何利用Angular将传统Web应用升级为渐进式Web应用(PWA),克服后者在网络依赖、设备集成及通知功能上的局限。通过具体命令行操作与代码示例,指导读者从新建Angular项目到配置`manifest.json`和服务工作进程,最终实现离线访问、主屏添加及推送通知等功能,显著提升用户体验。适合各水平开发者学习实践。
34 0
|
5月前
|
DataWorks Java 调度
DataWorks产品使用合集之进行离线同步时,如何使用DataX的Reader插件来实现源端过滤
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
66 0
DataWorks产品使用合集之进行离线同步时,如何使用DataX的Reader插件来实现源端过滤
|
5月前
|
弹性计算 分布式计算 DataWorks
DataWorks产品使用合集之在脚本离线同步节点如何修改集成资源组
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
6月前
|
DataWorks NoSQL MongoDB
DataWorks常见问题之如何集成离线数据
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
12月前
|
DataWorks 索引
DataWorks现在离线节点手动执行,好慢的,要等好久,用公共集成资源就那么慢嘛?
DataWorks现在离线节点手动执行,好慢的,要等好久,用公共集成资源就那么慢嘛?
44 1
|
6月前
|
消息中间件 DataWorks NoSQL
dataworks离线数据集成,源库或目标库是MC时,走的是Tunnel? 还是走的是datax啊?
dataworks离线数据集成,源库或目标库是MC时,走的是Tunnel? 还是走的是datax啊?
137 0