27
自自自自自自自自自自自自自 自自自XiaoJun Tong —— 自自自自 自自自 自自自 统统 / 自自 —— 自自 自自自自 自自自自自 一统 —— 自自 自自自自自自自自自

自下而上的数据仓库构建方法 童小军( XiaoJun Tong )

  • Upload
    efia

  • View
    190

  • Download
    13

Embed Size (px)

DESCRIPTION

自下而上的数据仓库构建方法 童小军( XiaoJun Tong ). —— 思考数据统计系统的需求/本源 —— 寻找一种简易统计分析思路 —— 尝试一种 简单简简易 统计的简单实现和应用. 1. 童小军 (XiaoJun Tong ). 2006 来北京从事搜索引擎研发工作 [思考搜索的智能?] 2007 ~ 2008 在 FeedSky 从事博客搜索研发 (Web2.0) 2008 ~ 至今 北京暴风网际 搜索研发主管 2010 ~ 2012 对外经济贸易大学 UIBE 国际商学院 企业管理研究生[ 在读 ] - PowerPoint PPT Presentation

Citation preview

Page 1: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

自下而上的数据仓库构建方法

童小军( XiaoJun Tong )

—— 思考数据统计系统的需求 / 本源—— 寻找一种简易统计分析思路—— 尝试一种 统计的简单实现和应用

Page 2: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

童小军 ( XiaoJun Tong )

• 2006 来北京从事搜索引擎研发工作 [ 思考搜索的智能 ?]• 2007 ~ 2008 在 FeedSky 从事博客搜索研发 (Web2.0)• 2008 ~至今 北京暴风网际 搜索研发主管• 2010 ~ 2012 对外经济贸易大学 UIBE

– 国际商学院 企业管理研究生 [ 在读 ]

微博 :t.sina.cn/tongxiaojunMSN :[email protected]

Page 3: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 暴风搜索 ] 数据平台发展几个阶段• 2008 rsync ,log 文件 , java 分析 , jsp 程序• 2009 BI, 数据仓库 ,syslog-ng,perl/python• 2010 [4w + r = 3h], 闭环反馈 , 数据决策 , 报表驱动• 2011 管理会计 , 内部成本 / 收益核算 [PV/$],ISO9001,PMI [OPM3]

开始阶段

[2008]

技术和业界同步 ,尝试学习阶段

[2009]

总结归纳和实践的阶段

[2010]

业务理解和行业同步[ ]管理会计分支

[2011]

Page 4: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 思考 ] 数据统计需求和本源 ?需求 / 本源 ?

[ 思考 ] 数据统计 , 分析的需求 / 本源?

使用 列举类推法 思考

Page 5: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 思考 ] 需求 / 本源 [ 举例 : 组织结构]

用户

产品

技术

产品部

研发部 测试部 运维部

/统计 分析部 上线产品

/用户 客户

/ [ ]用户 客户 需求

周 分

[ ] ,组织结构 自学习 自调整

Page 6: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 思考 ] 需求 / 本源 [ 举例 : 质量优化]

纠正验证

实施计划

[质量持续优化]PDCA 戴明环

纠正验证

实施计划

,标准化 上升到新水平

Page 7: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 思考 ] 需求 / 本源 [ 举例 : 工业控制]

控制器 伺服器

反馈器

请求 控制

数据收集控制反馈

输出

[ ]自动控制 闭环反馈

Page 8: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 思考 ] 组织项目管理成熟度模型• OPM3 模型第 1 维 成熟度的 4 个梯级分别是:

– 标准化的 (Standardizing)– 可测量的 (Measuring)– 可控制的 (Controlling) – 持续改进的 (Continuously Improving)

Page 9: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 思考 ] 需求 / 本源 [ 简易的智能结构 ]

需求 / 本源 => 智能 / 结构

商业智能 [BI]

性能指标 : 反馈周期 ? 决策有效性 ? 反馈成本 ?

数据统计 / 分析 是自动控制系统和自学习 , 自调整系统的核心组成部分。

Page 10: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 数据 构建方法 ] 什么是自下而上 ?

• [需求] --> [展现] --> [分析逻辑] --> [数据结构]• 变化可能 -----> 越到底层越少• 修改成本 -----> 越到底层越高

需求

展现

分析

数据结构

修改成本变化可能

Page 11: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 数据 构建思路 ] • [ 抽象分析 ] --> [ 总结归纳 ] --> [ 数据结构 ] --> [ 各类逻辑 ] --> [ 业务需求

]• 保留全部可能性 --> 总结需求的组成基本变量 --> 总结固定逻辑和结构

--> 设计满足各类需求的系统

[抽象分析]

保留全部可能性

[总结归纳]

汇总需求的组成基本变量

[ ] 数据结构

汇总固定结构

[汇总逻辑]

汇总各类固定逻辑

[业务需求]

设计满足各类需求的系统

Page 12: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 构建策略 ] 自下而上 , 以不变应万变

== 自下而上构建 ==

Page 13: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[Log 构建方法 ] 四个 构建策略 • 1. 数据公式 :[4w+r = 2h] • 2. 实时汇总 :[js-->nginx+perl--> syslog-ng

--> python/perl --> db]• 3. 存储格式 :[ 一日一表 ] • 4. 统计方法 :[2sql 方法 ] • 5. 图表展现 :[ 模板引擎 ]

Page 14: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

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 )为何 ? 怎么办 ? 如何赢 ?

Page 15: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

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] ( 够用就行 )

Page 16: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

3. 存储格式 :[ 一日一表 ] • 1. 一日一个表结构 , 每日凌晨压缩• 2. 表结构 [Mysql MyISAM ] • 3. 少量索引• 4. 压缩工具 : myisampack 压缩 40% - 50% [ 自读 ]• 5. 举例 : search_log_20101011 click_log_20101011

Page 17: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

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;";

Page 18: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

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_timefrom search_resultwhere 1 and day>=#start_day day<=#end_day order by day desc;";

Page 19: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

[ 发展经历 ] 暴风搜索数据两个阶段

第一阶段 :js --> php --> log [n] --> rsync --> log.tar.gz -> 分析程序 [ 分析逻辑 ] --> 数据库 -->

数据展现 [java]

第二阶段 : [ 业务知识和行业同步 ]js --> [nginx + perl] --> syslog-ng --> search_log 入库程序 --> 数据仓库 -->[sql]

sql_task 程序 --> 数据集市 -->[sql] 展现 [python[邮件 ]/.net[桌面 ]]

Page 20: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

• 数据集市 [db] --> python --> data.file --> gnuplot + 绘图配置 --> img + data --> mail

• gnuplot 帮助 : http://dsec.pku.edu.cn/dsectest/dsec_cn/gnuplot/

python 报表邮件实现

Page 21: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

• 方案 : sql + 配置 ==> 数据 + 曲线 集成环境 : 桌面工具 + 方案存储 + 统计展现

分析桌面平台的基本构思

Page 22: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

• 修改决策 --> 研发测试 --> 上线 --> 数据 [单一决策 , 周期长 ,影响整体稳定性 ]

• 修改决策 --> 研发测试 --> 分流系统 --> 正式环境 --> 数据 [支持多路决策 , 周期端 ,影响小 , 心理成本低 ]

• --> 小版本 1 --> 数据• --> 小版本 2 --> 数据

数据系统和快速决策 [ 小版本放量数据平台 ]

Page 23: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

• 思考那些指标影响了一个数据系统的性能 ?

• 以上思路在那些方面改善了这些指标。

• 反馈周期 ? • 决策有效性 ? • 反馈成本 ?

什么是成功的数据系统?

范围

成本 质量

时间

Page 24: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

总结 , 我们可以以什么应对变化 ?

== 以不变应万变 ==== 以闭环反馈应万变 ==

== 以 4w+r=3h应万变 ==

Page 25: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

题外话• 题外话 : [ 个人的一个发现 ]• 关于海内外互联网 alexa 排名总结 . • Alexa 排名显示 :• 中国本土互联网繁荣。 • Alexa 排名比例 : 500强 :12.6% 200强 :12.5% 100强 :13% 位美国后

• 中国本土应用遍地开花。业务涵盖 搜索 门户 IM 电子商务 视频分享 微博 等领域 。而其他国家用户多访问美国服务。

• 数据来源 : http://s3.amazonaws.com/alexa-static/top-1m.csv.zip

• 因语言 [汉 英 ], 政策差异较大 [开放 /半封闭 ]:• 互联网会出现两个极点 ! 一个在美国 , 一个在中国。

Page 26: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

Q&A

童小军( XiaoJun Tong ) 微博 :http://t.sina.com.cn/tongxiaojun

Page 27: 自下而上的数据仓库构建方法     童小军( XiaoJun Tong )

招聘广告 - 暴风 : 让享受电影更简单

• 暴风影音诚聘 P2P 高级研发工程师• 精通 C/C++,4年或以上 P2P开发经验,

• 对现行 P2P软件的客户端及服务端的架构设计有一定了解,

• 对某款 P2P产品有深入了解更佳。• 有在线视频点播类产品开发经验者优先,

• 有意者请发送简历

[email protected]• 请在标题处注明来源。