规模的困境:效率决定一切

如果说互联网解决了数据的“开采”问题,则大数据解决了数据的“加工”问题。为了从数据中获得价值,我们不仅需要数据,还得有处理数据的能力。在数字化时代,数据很多,但是从数据中提炼有价值的知识却十分困难。一方面需要设计“精巧”的数据分析方法,另一方面也要有强大的执行这些数据分析方法的技术手段。而计算机就是技术手段的重要“物理载体”。

我们都知道,计算机的计算速度与人相比是快很多的,比如我们想用一张Excel表格统计出公司的利润率,基本上都是一秒钟出结果。既然计算机这么厉害,我们是不是就不必担心数据量太大而处理不了的情况了?显然,事情并没有这么简单。

尽管平时我们用计算机代替人做一些脑力工作的时候,计算机的运算能力和记忆力看起来已经很强大了,但其实和现在大多数的自动化或智能化业务所需要的数据规模相比,这个能力还远远不够。

家用计算机一般处理几十条或几百条数据也就到头了,而当数据规模真的很大的时候,如大到万级、百万级,甚至亿级,那么计算机可能比人还“傻”还“慢”。人算不出来的时候,至少还会估计个大概结果,但是计算机如果在某个“公式”处算不动了,就只会“卡”在那里,什么也做不了,甚至一着急单击“强制退出”按钮,就会把之前好不容易算好的数据结果也给“冲”掉了。这种糟心经历,相信很多人在尝试用Excel计算规模比较大的数据时都曾遇到过。

如今很多企业都有自己的业务信息系统,通过互联网,这些业务信息系统可以非常轻易地收集动辄“千万级别”的数据。例如每年的“双11”期间,任何一个电商平台的用户量都很可观。在这么大的客流中,考虑到每个人又积攒了几个月甚至一整年的购物清单,需要被计算的数据规模着实惊人!我们创造数据的速度有多快,我们分析这些数据的能力就需要有多强。

在数字化场景下,对大规模数据的处理是十分常见的。然而,在对大规模数据进行计算的时候,光用Excel这种基础软件是不行的,数据也不是存在电子表格里的,而是存在“数据库”中的。软件工程师需要自己开发代码来“运算”这些数据,在这个过程中,需要定制一些复杂的算法来探索数据中“隐含”的关键业务知识。

代码编写情况会极大地影响数据分析的效率。如果代码设计得比较优雅,从数据中挖掘知识的效率就会更高。反之,如果代码设计得非常笨拙,代码“跑”一遍的效率就会非常低,分析人员从数据中找规律的速度也就比较慢。

在实践中,通过数据分析找规律是非常耗费时间的。这是一个需要“耐心”探索的任务,数据分析人员需要根据每次“跑”代码的结果,不断地调整数据分析策略,进行非常多次的迭代尝试,最终才能获得比较“可靠”的业务知识,也就是应用效果好的技术模型。

比方说,影响用户购买某件产品的因素有10个,包括性别、年龄、地址、喜好、上次购买时间、是否为老用户、用户是否使用优惠券等,但是我们不知道究竟是哪几个因素发挥了作用。因此,我们需要采用组合因素验证的方法来分别进行计算。

在最复杂的情况下,我们可能需要做将近1000次实验才能得到比较好的统计分析结果。如果一次实验需要计算3天,那么我们需要用将近10年才能得到有价值的业务规律,真等到那个时候,估计连公司都没有了,更不要说业务了。

时间,永远是数字化转型中非常重要的关键变量。如果需要等待的时间太久,则即使在理论上技术方案有可行性,但在实用化落地上也是行不通的!

也就是说,如果机器对数据的分析处理速度非常慢,那么分析人员就不能在有意义的时间范围内得到有用的知识。如果要耗费极大的时间代价才能发现一些微不足道的规律,那么这种模式是没有办法“敏捷”地支持业务创新工作的。

于是,为了很好地解决上面提及的问题,在大规模数据场景下,计算机在算数的时候依然能够“表现优秀”的技术能力,就成为数字化转型中十分重要的技术主题。工程师们发明了一系列的技术方案来解决这方面的问题,我们给其起了个统一的名字,就叫作大数据技术。