一个有趣的现象:相当一部分计算机学团体已重新制定了其研究课题、加盟到了“ 大数据 ”营销大旗麾下。由此来看, 大数据 显然已成为最时髦的术语。本人在数据库领域侵淫多年(根据定义,数据库就是处理大数据的),特撰写一套四篇博文来解释本人对“大数据”的理解,并论述我对研究课题的意见。
大数据量、“小分析学”。此处的目标是对极大量的数据集使用SQL。对大数据集,没有人会用“Select *”来查询因为其返回太子节(terabyte)的数据使接收者无法应付。替代方案,则是对海量数据把注意力放在SQL的分析功能上,如count、sum、max、min、avg等,可辅之以group_by。我将此称作“小分析学”,以便把这个用例(use case)区别于下面的场合。
对大量数据使用大分析学。“大分析学”在此的含义是:对海量数据施用数据聚类(clustering)、回归分析、机器学习、以及其他更为复杂的分析手段。目前,用户倾向于采用统计学软件包如R、SPSS、SAS等来实现。其他方案是使用线性代数软件包,例如:ScalaPack或Arpack。最后,也有大量自行开发的代码在使用中。
大速度。其含义是:对电子交易、实时网页广告投放、实时客户针对营销、移动社交网络等应用,能够吸收并处理“灭火水龙带”式的数据涌入。此用例在大型网站公司和华尔街盛行,二者都倾向于自行开发。
大多样性。许多企业面临整合日益扩大的多种数据源,而数据格式千差万别,例如:电子表格、网页、XML、传统的关系型数据库等。许多企业认为这是最头疼的问题。从历史上来说,萃取、转置、加载(ETL)供应商在此市场上对有限的数据源曾提供服务。
小结:大数据可意味着:大量、大速度、大多样性。在本文其余部分,我专门讨论大量数据的小分析学。尔后的三篇博文将论及其他三个领域。
大量数据、小分析学
我了解至少五个用于生产中的多皮字节(petabyte)数据仓库、运行在三个不同的商业产品之上。无疑,还有几十个类似的系统。所有系统都采用“不共享”式的服务器群(server farm),通常有超过100个“强力”节点,节点的硬件故障通过重复备份故障转移来恢复,工作量由上文所述的SQL分析手段完成。所有系统都反映说,在维护大配置运行时遇到操作方面的挑战、希望数据库系统能有新的功能。各系统的首要问题是实现资源弹性(即:向100台服务器上再添加50台,自动把数据重新分区以包括新服务器,在过程中无需停机或中断查询)。另外,更好的资源管理也是普遍的需求。在此,多个成本中心共享着同一套资源,各中心都要求各得其所。专家(例如Curt Monash)经常认同某些此类数据仓库。
此用例的第二个解决方案似乎是采用Hive/Hadoop。我了解若干个多皮字节资料库采用这一技术,最著名的是Facebook。如前例,多半还有几十个系统,我也知道许多IT公司在用此方案开发原型。最近的文献中有不少论文,记录了Hadoop与并行式数据库系统相比的低效率。一般来说,效率下降差不多是一个数量级。这转化为:相同的硬件配置反应时间要慢一个数量级、或者需增加一个数量级的硬件才能保持同样的性能。假如选择了后者,则是要购买大批设备、消耗大量电力。
另外,谷歌及其他大型网站似乎在使用自行开发的软件来运行大规模配置、处理这类工作量。某些很像商业数据库系统,例如F1;有些则很不相同,例如BigTable。
展望未来,我认为主要挑战是保持100%的上线时间(无论如何永不停机)。当然,这是个操作型的挑战难题。另外,这将需要在安装新硬件、新软件补丁和下一轮供应商软件版本时不停机。更困难的是:数据迁移不造成停机。
此外,我预测SQL供应商将全部迁移到列式数据存储,因为列式比行式要快得多。实际上,所有行式数据库供应商为了保持竞争力,将不得不逐步将其产品转换为列式存储。这对某些遗留系统供应商将可能是个迁移方面的挑战。
最后一点,高级存储技术此领域中有巨大的机会,包括压缩与加密。抽样(sampling)以降低查询成本也值得引起注意。
(责任编辑:itongji)