270 likes | 521 Views
自下而上的数据仓库构建方法 童小军( XiaoJun Tong ). —— 思考数据统计系统的需求/本源 —— 寻找一种简易统计分析思路 —— 尝试一种 简单简简易 统计的简单实现和应用. 1. 童小军 (XiaoJun Tong ). 2006 来北京从事搜索引擎研发工作 [思考搜索的智能?] 2007 ~ 2008 在 FeedSky 从事博客搜索研发 (Web2.0) 2008 ~ 至今 北京暴风网际 搜索研发主管 2010 ~ 2012 对外经济贸易大学 UIBE 国际商学院 企业管理研究生[ 在读 ]
E N D
自下而上的数据仓库构建方法 • 童小军(XiaoJun Tong) —— 思考数据统计系统的需求/本源 —— 寻找一种简易统计分析思路 —— 尝试一种简单简简易统计的简单实现和应用 1
童小军 (XiaoJunTong) • 2006 来北京从事搜索引擎研发工作 [思考搜索的智能?] • 2007 ~2008 在 FeedSky 从事博客搜索研发 (Web2.0) • 2008 ~至今北京暴风网际 搜索研发主管 • 2010~2012 对外经济贸易大学 UIBE • 国际商学院 企业管理研究生[在读] • 微博:t.sina.cn/tongxiaojun • MSN :tongxiaojun@msn.com 2
[暴风搜索] 数据平台发展几个阶段 • 2008 rsync ,log文件, java分析, jsp 程序 • 2009 BI,数据仓库,syslog-ng,perl/python • 2010 [4w + r = 3h],闭环反馈,数据决策,报表驱动 • 2011 管理会计,内部成本/收益核算[PV/$],ISO9001,PMI [OPM3] 3
[思考] 数据统计,分析的需求/本源? [思考]数据统计需求和本源? 需求/本源 ? 使用 列举类推法 思考
[思考] 组织项目管理成熟度模型 • OPM3模型第1维 成熟度的4个梯级分别是: • 标准化的 (Standardizing) • 可测量的 (Measuring) • 可控制的 (Controlling) • 持续改进的 (Continuously Improving) 8
[思考] 需求/本源 [简易的智能结构] 需求/本源 => 智能/结构 商业智能[BI] 性能指标: 反馈周期? 决策有效性? 反馈成本? 数据统计/分析 是自动控制系统和自学习,自调整系统的核心组成部分。 9
[数据 构建方法 ] 什么是自下而上? • [需求] --> [展现] --> [分析逻辑] --> [数据结构] • 变化可能 -----> 越到底层越少 • 修改成本 -----> 越到底层越高 10
[数据 构建思路 ] • [抽象分析] --> [总结归纳] --> [数据结构] --> [各类逻辑] --> [业务需求] • 保留全部可能性 --> 总结需求的组成基本变量 --> 总结固定逻辑和结构 --> 设计满足各类需求的系统
[构建策略] 自下而上,以不变应万变 ==自下而上构建== 12
[Log 构建方法] 四个 构建策略 • 1. 数据公式:[4w+r = 2h] • 2. 实时汇总:[js-->nginx+perl--> syslog-ng --> python/perl --> db] • 3. 存储格式:[一日一表] • 4. 统计方法:[2sql 方法] • 5. 图表展现:[模板引擎] 13
1. Log 数据公式:[4w+r = 2h] • 4W(who,when,where,what)+R(result) = 3H(why? how? win?) log 统计: • who = (uid,uname) 用户维度 • when = [time,last_time,log_time] 时间维度 • where = (url/from_url,version,host,uip,system) 空间维度 • what = (click/search[ keyword,order filed])) 场景维度 • result = (time,count,iscached) 结果维度 = 3H(why how win)为何? 怎么办? 如何赢? 14
2. 实时汇总:[js+nginx+syslog-ng+perl] • 流程: js-->nginx+perl--> syslog-ng --> python/perl --> db • JS[flash]: 收集用户前端的感受 • nginx + 嵌入perl 模块: 并发和并能 • syslog-ng: log{ source(s_local); filter(f_cache); destination(d_cache_file);destination(d_cache_py);}; • db: mysql : MyISAM [列式数据库: infobright] (够用就行) 15
3. 存储格式:[一日一表] • 1. 一日一个表结构,每日凌晨压缩 • 2. 表结构 [Mysql MyISAM ] • 3. 少量索引 • 4. 压缩工具: myisampack 压缩 40% - 50% [自读] • 5. 举例: search_log_20101011 click_log_20101011 16
4. 统计方法:[2sql 方法] • [2sql 方法[大部分 满足分析需求] + 程序(小部分)] • 数据仓库 --> sql --> 数据集市 -->sql --> 展现结果 [满足大部分的分析需求] • sqltask 分析工具 原理。log库 --> 统计库 [配置可以在sql 客户端直接调试] DEMO: #desc: 搜索行为次数,实际无结果,实际无结果率[相对,绝对] 搜索无结果次数/搜索行为次数 #source:127.0.0.1:3306:user_action #market:127.0.0.1:3306:user_analysis #{search_result}{mode:varchar(255),count:int(11),qj_rate:float,rate:float,day:int(8),update_time:bigint(20)} select result_type as mode, count(search_log_id) as count, count(search_log_id)*100/(select count(search_log_id) from log_search_#day where 1 and result_count='0' ) as rate, count(search_log_id)*100/(select count(search_log_id) from log_search_#day where 1 and search_begin=1) as qj_rate, '#day' as day, UNIX_TIMESTAMP(now())*1000 as update_time from log_search_#day where 1 and result_count='0' and search_begin=1 group by mode order by count desc;";
4. 图表展现:[模板引擎] 1. 定义数据源 2. 定义查询语句和变化字段 3. 定义展现配置 DEMO: #desc: 搜索行为次数,实际无结果,实际无结果率[相对,绝对] 搜索无结果次数/搜索行为次数 #source:127.0.0.1:3306:user_action #input:#start_day #end_day #X:day Y:count Type:line #{搜索行为}{mode:类型,count:搜索,qj_rate:绝对无结果,rate:比例,day:天,update_time:更新时间} select mode,count,qj_rate,rate,day,update_time from search_result where 1 and day>=#start_day day<=#end_day order by day desc;";
[发展经历] 暴风搜索数据两个阶段 第一阶段: js --> php --> log [n] --> rsync --> log.tar.gz -> 分析程序[分析逻辑] --> 数据库 -->数据展现 [java] 第二阶段: [业务知识和行业同步] js --> [nginx + perl] --> syslog-ng --> search_log 入库程序 --> 数据仓库 -->[sql] sql_task程序 --> 数据集市 -->[sql] 展现 [python[邮件]/.net[桌面]] 19
python 报表邮件实现 • 数据集市[db] --> python --> data.file --> gnuplot + 绘图配置 --> img + data --> mail • gnuplot 帮助: http://dsec.pku.edu.cn/dsectest/dsec_cn/gnuplot/
分析桌面平台的基本构思 • 方案: sql + 配置 ==> 数据 + 曲线 集成环境: 桌面工具 + 方案存储 + 统计展现
数据系统和快速决策 [小版本放量数据平台] • 修改决策 --> 研发测试 --> 上线 --> 数据 [单一决策,周期长,影响整体稳定性] • 修改决策 --> 研发测试 --> 分流系统 --> 正式环境 --> 数据 [支持多路决策,周期端,影响小,心理成本低] • --> 小版本1 --> 数据 • --> 小版本2 --> 数据
什么是成功的数据系统? • 思考那些指标影响了一个数据系统的性能? • 以上思路在那些方面改善了这些指标。 • 反馈周期? • 决策有效性? • 反馈成本?
总结,我们可以以什么应对变化? ==以不变应万变== ==以闭环反馈应万变== ==以4w+r=3h应万变== 24
题外话 • 题外话: [个人的一个发现] • 关于海内外互联网 alexa 排名总结 . • Alexa 排名显示: • 中国本土互联网繁荣。 • Alexa 排名比例: 500强:12.6% 200强:12.5% 100强:13% 位美国后。 • 中国本土应用遍地开花。业务涵盖 搜索 门户 IM 电子商务 视频分享 微博 等领域 。而其他国家用户多访问美国服务。 • 数据来源: http://s3.amazonaws.com/alexa-static/top-1m.csv.zip • 因语言[汉 英], 政策差异较大[开放/半封闭]: • 互联网会出现两个极点! 一个在美国,一个在中国。
Q&A • 童小军(XiaoJun Tong) • 微博:http://t.sina.com.cn/tongxiaojun 26
招聘广告 - 暴风: 让享受电影更简单 • 暴风影音诚聘P2P高级研发工程师 • 精通C/C++,4年或以上P2P开发经验, • 对现行P2P软件的客户端及服务端的架构设计有一定了解, • 对某款P2P产品有深入了解更佳。 • 有在线视频点播类产品开发经验者优先, • 有意者请发送简历 • hr@baofeng.com • 请在标题处注明来源。