程序操作数据库和程序操作文本之间选择,是一定要选择程序操作文本的,原因为:程序
操作文本速度快;对文本进行处理不容易出错;文本的存储不受限制等。例如一般的海量的
网络日志都是文本格式或者
csv 格式(文本格式),对它进行处理牵扯到数据清洗,是要
利用程序进行处理的,而不建议导入数据库再做清洗。
十一、定制强大的清洗规则和出错处理机制
海量数据中存在着不一致性,极有可能出现某处的瑕疵。例如,同样的数据中的时间字
段,有的可能为非标准的时间,出现的原因可能为应用程序的错误,系统的错误等,这是
在进行数据处理时,必须制定强大的数据清洗规则和出错处理机制。
十二、建立视图或者物化视图
视图中的数据来源于基表,对海量数据的处理,可以将数据按一定的规则分散到各个
基表中,查询或处理过程中可以基于视图进行,这样分散了磁盘
I/O,正如 10 根绳子吊着
一根柱子和一根吊着一根柱子的区别。
十三、避免使用
32 位机子(极端情况)
目前的计算机很多都是
32 位的,那么编写的程序对内存的需要便受限制,而很多的海
量数据处理是必须大量消耗内存的,这便要求更好性能的机子,其中对位数的限制也十分
重要。
十四、考虑操作系统问题
海量数据处理过程中,除了对数据库,处理程序等要求比较高以外,对操作系统的要
求也放到了重要的位置,一般是必须使用服务器的,而且对系统的安全性和稳定性等要求
也比较高。尤其对操作系统自身的缓存机制,临时空间的处理等问题都需要综合考虑。
十五、使用数据仓库和多维数据库存储
数据量加大是一定要考虑
OLAP 的,传统的报表可能 5、6 个小时出来结果,而基于
Cube 的查询可能只需要几分钟,因此处理海量数据的利器是 OLAP 多维分析,即建立数据
仓库,建立多维数据集,基于多维数据集进行报表展现和数据挖掘等。
十六、使用采样数据,进行数据挖掘
基于海量数据的数据挖掘正在逐步兴起,面对着超海量的数据,一般的挖掘软件或算
法往往采用数据抽样的方式进行处理,这样的误差不会很高,大大提高了处理效率和处理
的成功率。一般采样时要注意数据的完整性和,防止过大的偏差。笔者曾经对
1 亿 2 千万行
的表数据进行采样,抽取出
400 万行,经测试软件测试处理的误差为千分之五,客户可以
接受。
还有一些方法,需要在不同的情况和场合下运用,例如使用代理键等操作,这样的好
处是加快了聚合时间,因为对数值型的聚合比对字符型的聚合快得多。类似的情况需要针对
不同的需求进行处理。
海量数据是发展趋势,对数据分析和挖掘也越来越重要,从海量数据中提取有用信息
重要而紧迫,这便要求处理要准确,精度要高,而且处理时间要短,得到有价值信息要快
所以,对海量数据的研究很有前途,也很值得进行广泛深入的研究。