如何正确的做增量加工

本文探讨了在MaxCompute环境下如何进行增量加工,强调了增量加工的挑战及适用场景。介绍了增量加工的原则,包括增量表的使用、避免直接关联两张增量表等,并提供了MERGE逻辑和全字段比对等解决方案。文章最后提醒读者增量加工逻辑复杂,需权衡利弊后再决定实施方案。
摘要由CSDN通过智能技术生成

1.增量加工

回到十多年前,增量加工这个方法并不是一种需要特别需要提出的方法,因为关系数据库的存储与计算性能十分有限(即便是MPP数据库平台也不是全都是做全量加工),增量加工是最普遍的方式。

数据库系统是支持事务的,ACID(原子性、一致性、隔离性、持久性)四大特性可以完美的支持在一个数据表上同时做更新、删除、插入操作。数据库系统的数据存储是到每一个4K或者8K这种大小的数据块上的,详细的统计信息与索引结构都允许我们高效来做增量数据处理。

1.1.问题简述

在当前的MaxCompute这种分布式文件系统上,这些操作都变得不容易了。我们的数据块已经是64MB,不是KB这个量级。我们也没有索引这种加速从一千万数据中找到五十行数据的结构。

那么我们怎么在MaxCompute做增量加工呢?说实话,不太好做。因为没有索引结构,我们每一次的处理都是全量数据检索。如果还是跟之前在关系数据库一样频繁的提交,不但无法体现增量加工的性能与资源优势,反而成为了劣势。(如果我们还想使用关系数据库支持的delete、update这些特性,可以看下MaxCompute公共云近期上线的新特性“Transactional表”。)

那么我们要不要做呢?总结一句话:能做的地方还是可以做一下,但是不要勉强,不要大规模的去做,毕竟做增量加工不容易。

2.解决方案

增量加工的前提是我们获取到了增量数据,相比全量数据增量数据是一个更小的集合,然后我们希望利用这个小增量集合来完成数据加工的过程而不是使用全量,这样就可以更快速、更节约的完成整个数据加工过程。

但是增量加工在MaxCompute总结为两个场景:

场景一,全量加工所需资源无法满足时效性要求,性能急需优化;

场景二,增量加工逻辑简单,相比全量加工性能优势明显;

2.1.加工原则

然后我们需要确立一些使用增量加工的原则,突破或者不遵守这些原则都是不合理或者不正确的。

一、增量表(增量状态[U\D\I\K],数据更新时间);

二、2张增量表不能直接关联,必须要有至少一张表是全量;

三、增量加工产出的结果表,还需要记录增量状态和数据更新时间;

四、多个表关联情况下,需要取多个表的增量标识,只要某一个表的关联行是增量就使用该表增量标识&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值