大数据量快速处理的架构设计
2017-03-12 21:25
176 查看
在业务数据的处理过程中,经常会遇到夜间批次处理大量的数据,而且会有时效的要求。特别是当应用系统跑了2年以上时,就会有大表或者特大表的操作了,数据量达到百万甚至上亿。 这时回顾前期的设计,就会发现好多问题。 可能是数据模型设计的时候没有考虑表的分区和及时归档、sql的设计没有考虑索引或全表扫描、数据的处理没有考虑及时的分批切分、并发处理的多线程可配置化等等, 为了以后的设计不要走相同的错路。这里暂时简要总结一下。
1 最初要考虑归档和分区。所有可能的大表设计,都要在最初的时候考虑归档和分区。
数据冲上高水位(HighWaterMark)后,即使有归档也不会降低高水位,性能可能也存在消耗,所以要及时归档转移数据。 最好是设置分区表,这样分区表可以进行及时的truncate或者drop再重新add分区。 可以灵活的控制存储。
2 sql条件精准定位。大的关联sql查询,一定要尽量的精准抽取数据范围,不要模糊抽取过多数据,含好多无用的后面再过滤,这很可能影响数据库的执行计划判断导致性能下降。
3 快速定位数据,分批支持流水并发。大批量数据处理,首先要用最简单的方式找到目标最小集群的数据,从大范围中抽出来,并进行切分。切分的目的是可以使用多线程并发处理数据,并且隔离各分区的数据不会重复,也不能有遗漏,这样并发时不会造成数据干扰。
4 流水线并发处理提升时效。
采用3的切分多批+多线程并发的方式,就可以针对有多个步骤的业务逻辑处理时,不用瀑布模式等待执行,而是可以流水线样的多条执行,实现了多并发,无时间和空间的浪费。 对于有高时效的任务处理,具有可观的价值。
以上暂时整理,后续待补充。@20170312sz
1 最初要考虑归档和分区。所有可能的大表设计,都要在最初的时候考虑归档和分区。
数据冲上高水位(HighWaterMark)后,即使有归档也不会降低高水位,性能可能也存在消耗,所以要及时归档转移数据。 最好是设置分区表,这样分区表可以进行及时的truncate或者drop再重新add分区。 可以灵活的控制存储。
2 sql条件精准定位。大的关联sql查询,一定要尽量的精准抽取数据范围,不要模糊抽取过多数据,含好多无用的后面再过滤,这很可能影响数据库的执行计划判断导致性能下降。
3 快速定位数据,分批支持流水并发。大批量数据处理,首先要用最简单的方式找到目标最小集群的数据,从大范围中抽出来,并进行切分。切分的目的是可以使用多线程并发处理数据,并且隔离各分区的数据不会重复,也不能有遗漏,这样并发时不会造成数据干扰。
4 流水线并发处理提升时效。
采用3的切分多批+多线程并发的方式,就可以针对有多个步骤的业务逻辑处理时,不用瀑布模式等待执行,而是可以流水线样的多条执行,实现了多并发,无时间和空间的浪费。 对于有高时效的任务处理,具有可观的价值。
以上暂时整理,后续待补充。@20170312sz
相关文章推荐
- SOA快速指南之服务实现及架构设计
- SOA快速指南 1 2 3,第 3 部分: 服务实现及架构设计
- Selenium Webdriver自动化测试设计(webdriver自动化架构设计、定义接口、日志处理、Java Robot类应用)
- 第七章 设计程序架构 之 设计HTTP模块和处理程序
- 《炉石传说》架构设计赏析(7):使用Google.ProtocolBuffers处理网络消息
- 处理数据量大的表, 设计上的几個优化方法
- 架构设计:系统间通信(36)——Apache Camel快速入门(上)
- Red5 流处理架构设计解析
- (实战)Spring Portlet MVC处理请求分析以及如何快速架构一个Portlet项目
- 跟我快速理解Dubbo:-2 架构设计详解
- 关于事务处理机制和原理、分布数据库设计架构与原理
- Red5 流处理架构设计解析
- 基于DSP/BIOS的多信号并行处理软件架构设计
- Selenium自动化测试从入门到精通(基础操作、架构设计、定义接口、日志处理、脚本导出)
- 转:IPhone之ASIFormDataRequest POST操作架构设计/ 处理网络超时问题
- SOA快速指南 1 2 3,第 3 部分: 服务实现及架构设计
- Red5 流处理架构设计解析
- 机房收费系统完美设计——事务处理VS三层架构
- 多核处理器下的快速包处理软件架构FastGate
- 高并发图片(缩略图)处理中间层服务架构设计