临时性计算,顾名思义,是指临时发生的一些计算需求。这种计算在日常数据处理中很常见,我们举一些例子:
- 应对业务部门的取数需求:比如销售部门想获得进行了某项促销活动前后的销售情况变化信息;
- 数据挖掘算法前的清理准备:将来自各个业务系统的数据(甚至一些企业外部的数据)整理成规则一致的二维表,这些动作常常比挖掘本身耗时还长得多;
- 有业务规则的测试数据生成:测试数据不能完全随机生成,必须满足一定的业务规则以及分布比例;
- 大数据计算的优化方案实验:性能优化是个迭代的过程,需要不断尝试各种计算方案;
- 非日常(外部)数据的清洗和入库:比如有些下级部门提供的Excel表格要写入数据库再进行统计分析;
- …
可以看出,临时性计算具体相当的普遍性。那么,我们是用什么方法来处理这种具有普遍性的计算需求呢?
其实也就是编程序了,常用来对付临时性计算的编程方案有三种:以Java为代表的高级语言、以SQL为代表的数据库语言、以Python为代表的脚本语言。
然后,第二个问题,我们怎么评估这些方法的优劣和适应性呢?
一
为了回答这个问题,我们要先分析临时性计算的需求特征:
- 需求随意,不可预测:这是临时性计算的基本特征,计算需求时临时产生的,不能事先预测到而做进数据分析系统中,只能临时面对;
- 经常只做一次,缺乏直接可复用性:这也是临时性的特征,做完就完了,没有必要刻意地反复优化,也没必要也不可能事先为计算做准备工作;
- 大量涉及多样性的原始外部数据:很多计算的涉及数据并不在数据库中,比如收集上来的Excel表格,从网上爬下来的文本等,这些数据还常常以原始形式出现;
- 常常涉及多步骤的过程计算:本来分析处理类的运算就会步骤比较多,而数据源的杂乱更会加剧这一现象;
- 必要时可能转变成日常计算:也有些临时性计算可能重复发生,这时就有必要转化成日常计算放进数据分析系统中;
- 以结构化数据计算为主:这一点并非临时性计算特有的,其实数据分析和处理类的计算都是主要面对结构化或即将被结构化的数据。
二
从需求的特征出发,我们就可以提出应对临时性计算的方案的技术要求了:
- 开发快捷:临时性计算随时发生,需要快速解决,所以要注重开发效率,相对来讲,对于运算性能要求会低一些;
- 人员要求低:临时性计算发生场景很普遍,那么应当尽量降低实施开发人员的要求,而不是总是需要专业的程序员才能做;
- 环境简单:经常只做一次的事情,要让环境搭建足够简单,如果准备计算环境花费时间超过实施计算本身了,那就得不偿失了;
- 数据适应面广:计算方案要能方便地面对各种各样的数据源,不要总是需要专门的接口和技术体系,特别地要能处理较大的数据量;
- 易于集成:要转变成日常计算时,临时写出来的代码***能够只要简单修改甚至不加修改就能集成到数据分析系统中去。
三
现在我们按这套技术要求来考查前面提到的三种技术方案,并给评个分(前四项满分10,第五项重要程度低满分5)
1. 以Java为代表的高级语言
总分:13分
2. 以SQL为代表的数据库语言
总分:24分
3. 以Python为代表的脚本语言
总分:30分
算下来还是脚本语言相对***。