大数据量快速处理的架构设计

本文针对大量数据处理过程中的性能问题,提出初期设计时应考虑的四大关键策略:合理规划数据归档与分区、精确制定SQL查询条件、实现数据快速定位与分批并发处理以及采用流水线模式提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大数据量快速处理的架构设计

一 背景

       在业务数据的处理过程中,经常会遇到夜间批次处理大量的数据,而且会有时效的要求,这就对程序执行的性能有了较高要求。特别是当应用系统跑了2年以上时,就会有大表或者特大表的操作了,数据量达到百万甚至上亿。 这时回顾前期的设计,就可能会发现好多问题。 可能是由于数据模型设计的时候没有考虑表的分区和及时归档,造成大表处理慢; 也可能是涉及到的sql的设计没有考虑走索引,或有隐式转换、全表扫描、笛卡尔积等的问题;抑或是数据在处理时没有考虑及时的分批切分、外加并发处理的多线程,或者不支持可配置化等等。诸如此类都会造成任务执行时的性能问题,而架构设计关注点之一,就是考虑系统运行的程序性能问题。在此, 为了以后的设计不要走相同的错路。这里暂时简要总结一下。

二 设计方案 

1 最初要考虑归档和分区。

根据业务量规划和发展预测,所有可能的大表设计(可以以100w条记录,或者20G大小的表为参考),都要在最初的时候考虑归档和分区。

  数据冲上高水位(HighWaterMark)后,即使有归档也不会降低高水位,性能可能也存在消耗,所以要及时归档转移数据。 最好是设置分区表,这样分区表可以进行及时的truncate或者drop再重新add分区。 可以灵活的控制存储。

2 sql条件精准定位。

大的关联sql查询语句,一定要根据执行计划中驱动查询的条件来看,尽量的精准抽取数据范围,不要模糊抽取过多数据,避免含好多无用中间数据的结果集给到后面再去过滤,这很可能影响数据库的执行计划判断或者无畏的做多次的嵌套查询,最终导致sql性能下降。

3 快速定位数据,分批支持流水并发。

大批量数据处理,首先要用最简单的方式找到目标最小集群的数据,从大范围中抽出来,并进行切分。切分的目的是可以使用多线程并发处理数据,并且隔离确保各分区的数据不会重复,也不能有遗漏,这样并发时不会造成数据干扰。

4 流水线并发处理提升时效。

  采用3的切分多批+多线程并发的方式,就可以针对有多个步骤的业务逻辑处理时,不用瀑布模式等待执行,而是可以流水线样的多条执行,实现了多并发,减少时间和空间的浪费。 对于有高时效的任务处理,具有可观的价值。

以上暂时整理,后续待补充。@20170312sz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值