Facebook具有了“自知之明”

    在2005年9月,Facebook首次向非大学生公开,允许高中生注册账号。忠实的用户愤怒了,但Facebook团队认为这是为网站做出的正常方向。那么它该如何证明它的方案是正确的呢?

    此外,在几乎所有可登录Facebook网站的学校中,Facebook已经渗入学生当中,但还是在有部分学校中,该网站一直不受青睐。和那些更成功的网络相比,这些落后的网络对于Facebook有什么区别呢?Facebook团队应该如何做才能激励他们的成功?

    当我在2006年2月参加Facebook面试时,他们正积极地期望找到这些问题的答案。我曾在大学学习数学,在华尔街工作近一年,工作内容是构建模型来预测利率、价格复杂的衍生产品和对冲抵押贷款池;有一定编程经验,GPA成绩“暗淡”。虽然我的背景可能不太理想,但是Facebook却给了我研究科学家的职位。

    几乎同时,Facebook聘用了一个报告分析主管。该主管在解决问题方面的经验远远超过我。我们和另外一个工程师一起,开始着手构建一个数据收集和存储平台,以便找到我们产品以上问题的答案。

    我们第一个尝试是构建一个离线信息库,其涉及两个方面:一是用Python脚本把查询分发到Facebook的MySQL服务器层,二是采用C++实现守护进程,实时地处理事件日志。当脚本可以如期运行,我们每天收集大约10GB的数据。我后来明白系统的这部分通常称为“ETL”过程,即抽取、转换和加载。

    Python脚本和C++守护进程从Facebook的数据源系统中抽取数据,然后这些数据又被加载到MySQL数据库用于离线查询。我们在包含这些数据的MySQL上又运行了一些脚本和查询,对数据进行聚集,以便得到更有用的表现方式。这种用于决策支持的离线数据库即“数据仓库”(Dta Warehouse)。

    最后,通过简单的PHP脚本把数据从离线的MySQL数据库抽取出来,向内部用户展示收集到的信息摘要(smmary)。这是我们第一次可以回答网站特性对用户行为的影响。早期通过以下几种渠道分析最大化增长:登出用户的默认页面的布局、邀请来源、Email联系方式导入器的设计。除了以上分析,我们开始通过历史数据开发简单的产品,包括对赞助商成员特性进行聚集的内部项目。实践证明,该项目很受品牌广告商欢迎。

    我那时没有意识到,实际上,通过ETL框架、数据仓库和内部控制台(dshboard),我们已经构建了一个简单的“商业智能”(Bsiness Intelligence)系统。