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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;";

相关文档
最新文档