程序设计从本科开始接触,期间碰到的项目多数是按流程走,能把功能做完善就算不错了。很早就在听说的大数据,除了一点皮毛概念,说实话,除了在互联网上每天见到各种数字外,对这个“大”字没有直观感受。原因在于从来没有一个数据源让你等待的时间如此纠结..
回想一下以前做的项目:网页分页取数据的时间有超过3秒?或者5秒?数据量小的时候你还压根不会去想“优化”这个词。
换成今天,即使不是大数据,大概22万条记录,光是取出一次就要花上20分钟,这个等待就很直观了。此时此刻写文章就是我在等待一条SQL的执行结果,可能出现什么情况?1、OutOfMemory内存溢出;2、网络中途连接异常;3、程序意外终止;4、数据库挂了
不禁会思考,当数据源、传输、处理源这三方面分别出错时要怎么处理。思考过程总结如下:
1、【数据源多大】以及数据是存储在哪、怎么存储的,大致可以换算出一个xxMB、xxGB或xxTB以便选择传输方案;
2、【网络环境如何】这涉及到网络传输方面的预估;
3、【系统目标】是一次取全量数据,还是取部分数据,或者临时的查询数据?这涉及到对内存资源的预估以及对本地存储方案的选择;
4、【时间制约】离线?实时?不同的要求需要不同性能方案来解决
总结一句话:大数据,就要求程序猿玩家把数据从小玩到大,方知各种瓶颈与解决方案,正所谓踢过铁板才涨经验!