自下而上的数据仓库构建方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自下而上的数据仓库构建方法
童小军(XiaoJun Tong )
————
思考数据统计系统的需求/本源————
寻找一种简易统计分析思路————
尝试一种统计的简单实现和应用
童小军 (XiaoJun Tong)
•2006 来北京从事搜索引擎研发工作 [思考搜索的智能?]•2007 ~2008 在 FeedSky 从事博客搜索研发 (Web2.0)•2008 ~至今北京暴风网际搜索研发主管
•2010 ~2012 对外经济贸易大学 UIBE
–国际商学院企业管理研究生[在读]
微博:/tongxiaojun
MSN :tongxiaojun@
[暴风搜索] 数据平台发展几个阶段
•2008 rsync ,log文件, java分析, jsp 程序
•2009 BI,数据仓库,syslog-ng,perl/python
•2010 [4w + r = 3h],闭环反馈,数据决策,报表驱动
•2011 管理会计,内部成本/收益核算[PV/$],ISO9001,PMI [OPM3]
熟度
[思考]数据统计需求和本源?
需求/本源 ?[思考] 数据统计,分析的需求/本源?
使用 列举类推法 思考
[思考] 需求/本源 [举例:组织结构]
[思考] 需求/本源 [举例: 质量优化]
[思考] 需求/本源 [举例: 工业控制]
[思考] 组织项目管理成熟度模型
•OPM3模型第1维 成熟度的4个梯级分别是: –标准化的 (Standardizing)
–可测量的 (Measuring)
–可控制的 (Controlling)
–持续改进的 (Continuously Improving)
[思考] 需求/本源 [简易的智能结构]
需求/本源 => 智能/结构
商业智能[BI]
性能指标: 反馈周期? 决策有效性? 反馈成本?
数据统计/分析 是自动控制系统和自学习,自调整系统的核心组成部分。
[数据构建方法 ] 什么是自下而上?
•[需求] --> [展现] --> [分析逻辑] --> [数据结构]•变化可能 -----> 越到底层越少
•修改成本 -----> 越到底层越高
[数据构建思路 ]
•[抽象分析] --> [总结归纳] --> [数据结构] --> [各类逻辑] --> [业务需求]
•保留全部可能性 --> 总结需求的组成基本变量 --> 总结固定逻辑和结构 --> 设计满足各类需求的系统
[构建策略] 自下而上,以不变应万变
==自下而上构建==
[Log 构建方法] 四个 构建策略
•1. 数据公式:[4w+r = 2h]
•2. 实时汇总:[js-->nginx+perl--> syslog-ng --> python/perl --> db]
•3. 存储格式:[一日一表]
•4. 统计方法:[2sql 方法]
•5. 图表展现:[模板引擎]
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)为何? 怎么办? 如何赢?
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] (够用就行)
3. 存储格式:[一日一表]
• 1. 一日一个表结构,每日凌晨压缩
• 2. 表结构 [Mysql MyISAM ]
• 3. 少量索引
• 4. 压缩工具: myisampack 压缩 40% - 50% [自读]• 5. 举例: search_log_20101011 click_log_20101011
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;";