一转眼在去哪儿网玩乐事业部工做快4年了,经历了数据团队的组建和发展,回顾一下总体过程,经历了不少坎坷,普通而不简单。下面是大事记html
2014年组建数据团队,总体结构以下:前端
当时迅速的理解了业务,区分出来了核心主题,主要工做是数据(数据报表)支持。 2014年大数据仍是比较新鲜的,部门很是重视,配置了NB的产品和技术,老大在不少重要场合宣称部门要转向数据化运营,产品和运营的KPI由数据产考核,而且为此搭建了CRM系统。每次想到这里都感慨BOSS的眼光,我当时就是想不明白,出个数据有啥做用。N年后的如今,没有数据,怎么精细化产品和运行...git
按理说数据团队应该策马奔腾迈向小康社会了。可是蜜月期很短,几个月后就逐步出现了问题。最主要的表现是BOSS、产品、运营看见的数据不一致、不及时,有时甚至不许确....github
蜜月期过了以后,BOSS常常在重要场合表达对数据团队的失望,我记得很是清楚的话是:“大家知道我为了TMD数据团队背后作了多少努力吗?我咨询了XXX个公司,XXX说我们的数据,TMD1个月就能搭起来”。或者是:“大家到底要作什么,难道就是一个提数的吗?好,大家就作一个提数的工具吧!”。当时的状况:http://www.cnblogs.com/liqiu/p/4869748.html多线程
从新审视了数据的问题以后,决心从底层作起,搭建数据集市(数据宽表)。效果确实很好,缓解了数据一致性、数据及时性、数据准确性的问题。你们对数据团队的指望基本稳定了,系统也随之稳定了下来。工具
数据稳定以后,但愿作一些有意思的东西出来,首先就是解决数据同步的问题,业界有sqoop、dataX,可是对于PG支持的很差,特别是PG的扩展属性,好比hstore支持的有限,因此决定本身开发。oop
项目名称是synchronous,它的设计借鉴了DATAX的插件设计理念,DATAX的文档:https://github.com/alibaba/DataX。synchronous和DATAX的技术上区别是:代码小巧,精炼,易懂易读,有兴趣的同窗能够快速深刻,读懂了synchronous有助于快速理解DATAX。大数据
下面简单介绍下synchronous:url
详细设计过程可见:http://www.cnblogs.com/liqiu/p/4882821.html ; 代码在:https://github.com/autumn-star/synchronous。spa
去哪儿之前是taobao的模式,只提供平台和流量。后来有了自营产品,随着业务的发展,自营产品愈来愈多,订价就是问题了。按照通常的策略是保证利润率的状况下,比竞对低一点。
常常须要给外部提供数据,若是每一个都写dao、dto、service和controller,开发和维护成本特别高,因此研发了一个系统,配置SQL直接吐出数据接口数据,好比一个接口须要统计一段时间每一个产品的订单量和份数,那么数据表里面保存这样一个记录,主键id是1:
SELECT product_id, --产品id SUM(quantity) as quantity, --份数 COUNT(1) as order_num --订单量 FROM table1 WHERE stat_date between @{start_date} and @{end_date} GROUP BY product_id
访问的时候,带着参数就能够,好比:url?id=1&start_date=2017-01-01&end_date=2017-10-01。这样就吐出了时间在2017-01-01~2017-10-01之间的数据。
为了将开发从无休止的SQL需求中解救出来,搭建了多维系统,就是数据立方体。当时用的是saiku+kylin,但是saiku须要持久的前端投入,kylin对少许维度支持的还好,维度达到几十个以后就出现问题了,因此这个项目就暂定了。可是底层数据还在,咱们转而推出一个页面转成SQL的简易方案(不支持上卷、下钻、跨天和图形对比),虽然交互性差,但因为成本极低,一直支持长尾的数据需求。
年初遇到了一些问题,技术方面:一、部分数据产出延迟;二、维护成本高,人员流动性高;三、宽表不能彻底知足需求,随之关联了几十上百张数据表;业务方面没有明确的收益预期;
调研了携程、阿里的数据体系以后,决定先从新搭建数据仓库,解决提高数据质量和下降人力成本,而后再发展个性化应用。步骤以下:
所谓资源,就是要人和时间。向BOSS说明兄弟部门投入多少多少人力和时间达到了什么效果,反观我们只有那么点点...固然因为众志成城、团结一心,能够只用XX成本就能达到那个效果...历经N次电话会议,终于理解了数据仓库的搭建方案和应用细节
首先选型,kimball仍是inmon,区别就很少说了。选择的是Kimball,为了让运营和产品用的更方便,也产出了宽表,这样宽表能够覆盖90%的需求,宽表+维度表能够覆盖剩下的需求。
2017的数据仓库结构图以下:
数据仓库要准确、及时的产出数据,因为数据分散人力有限,不可能保证全部数据都百分百符合预期,因此要对数据进行分级。首先BOSS关心的报表,以及依赖的数据表是一级重要,要实时的严格校验,这里叫强一致性校验,若是发现问题须要在任什么时候候电话+qt+邮件预警。财务和运营的KPI数据次之,白天qt+邮件预警便可,最后是其余的数据。
数据仓库的迭代周期也很关键,业务主要使用的是宽表,咱们总结了以往的经验后,发现业务常常遇到新需求就但愿在宽表增长字段,避免关联的烦恼,随着字段的增长,又不控制必然会从新陷入到到天然演化体系的困局。因此采用的办法是创建一个原则:准确+经常使用。若是符合这个原则的属性,是以月为单位排期加入到宽表里面,这样宽表就有了生命力
这是正在进行的,仅介绍一下愿景,随着精细化运营的来临,必然对数据提出更细致更及时的要求,那么以离线为主T-1的瓶颈更加凸显出来,因此要搭建实时的数据仓库。另外随着分析经验的积累,不能像之前那样粗狂的看报表,而要细分用户群,采用不一样的策略,因此须要高质量的用户画像,那么今年会从实时+用户画像两个方面展开...