数据仓库简介
数据仓库分为三个阶段:首先就是将海量的数据通过清洗、抽取,生成元数据进行存储;然后对元数据进行处理,根据我们的业务需要,生成想要的低级或者高级属性,通过检索系统对外提供查询(实时或者离线);最后进行数据可视化;
这是我所理解的数据仓库的三块内容,基础数据建设、检索端、数据可视化,相对独立,不过一些业务逻辑可能会同时存在于基础数据建设和检索端里面;
比如一个新的业务来了,首先是需求分析可行性和投入产出比;然后看如何去生成我们想要的数据,这些数据可能是来自之前的基础数据,也有可能需要重新统计生成新的数据;生成好数据之后,再根据需求看做实时还是离线,是用文件存储、还是mysql或redis;前端再根据具体业务需求,选择合适的数据展现方式;
数据可视化、检索、数据统计清洗、其他(如生成报表等)
拿查词的pv来做个例子:
1. 首先我们要去选择拿哪份日志做处理,日志拿出来之后,要做反作弊过滤,然后做数据清洗,生成我们想要的字段,如:地域、query、PV,这样会生成一份3个字段的文件,每天、每小时产出一份;
2. 检索端:
2.1 实时查询:
这份文件每天是很大很大的,因为是亿级别的检索量,所以需要做一个KV系统来存储和支持查询,单除了需要支持kv查询,还需要支持分时间段分地域的查询,所以又不是完全的kv查询,而且要保证性能,还需要是分布式的;
2.2 离线查询:
两种查询方式,一种是利用实时查询,另外一种是利用原始数据
2.2.1 方案1:
简单的生产者消费者模式,用户提一个任务,相关的数据信息插入到数据库的任务队列中;线下一个系统,每隔一段时间去查询数据库,更新已经完成的任务列表,同时将没有完成的任务拿下来,和之前没有完成的任务列表合并,开新进程,去做任务,每完成一个任务,更新线下的任务列表;
2.2.2 方案2:
每个任务都启动一个hadoop统计任务,根据需求和对应的日志进行提取和合并,这种方案一般在数据量比较大的情况下会使用;
3. 数据可视化
以前基本上是自己写的,现在用echarts,后端自己写ui去查数据库或者查redis
4. 其他
包括一些生成报表邮件的系统,基本上都在数据统计里面,会生成一些自动发邮件的任务
总结
分析平台我简单的认为就是1.提供最简单的核心数据供分析人员使用,2.提供稍微高级的辅助功能
因为数据分析这个事情的发散性很高,相关的同学也具有一定的编程功底,所以完全自动化的产品我觉得没必要;同时市场上也有挺多自动化的工具,虽然我反对闭门造车,但是具体的数据分析产品我认为需要根据具体的业务运用去做,臃肿或者时效性比较慢的产品,生存下来还是挺难的;