这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。
我也要与时俱进了,被itpub2.0牵着尾巴,拼命的奔跑,不停的灌水...
怎样的架构设计才是真正的数据仓库架构(转载)
上一篇 /
下一篇 2007-06-20 00:00:00
/ 个人分类:数据仓库专区
这是2006年发生在ttnn上的一段有趣的交流...也许有助于我们对ODS的了解ITPUB个人空间pyVD}8[7r,Y X
innovate511
R6}&x7V:}c0查看个人资料
u?&j'r FE0 (1 个用户) 更多选项 2006年2月22日, 下午2时25分ITPUB个人空间7I0m2?:mU
发件人:"innovate511" <innovate...@gmail.com>
7_V"]Q;]0日期:Tue, 21 Feb 2006 22:25:13 -0800
3j-S
L1jo0当地时间:2006年2月22日(星期三) 下午2时25分
u,{eo/R2k8Pr-f8y-q1yS0主题:怎样的架构设计才是真正的数据仓库架构(原创)
0Z,o#_2u9},UH!o&M0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
GQ
G8l7?L7K0在各个网站和论坛,一说到数据仓库,基本都想到了"ETL※DW※OLAP",一说到数据仓库设计,就是按照行业规范和客户需求调研,设计主题,然后设计对应的事实表、维表。但是,这就是真正的数据仓库总体设计么?
:H^F?I$sr"i/[fi0
N4I[ZP
B^7[ K&v0关于上面说的主题设计,以及前端展现,这是给客户的最终用户看的,他们只关心你能给他们带来什么,是否满足他们的报表、查询和分析需求。但是对于厂商自己来说,需要清楚自己实施项目时要干什么,就像复杂的ETL开发需要元数据去规范和指引一样,项目的数据流逻辑,是否有设计规范。ITPUB个人空间xil/co
ITPUB个人空间8k4p/dl
y(v;@"L
对于一个大型数据仓库项目来说,如果粗犷地设计为ODS,DW,DM三大层次,那么在具体实施的时候,可能会因为数据量大,需要过渡层,于是随手在DW层增加些分表,到DM后,前端应用觉得查询太慢,于是也增加一些分表,再汇总。这样就陷入了无休止的维护和盲目地修改中。据我所知,能知道增加分表作为过渡层,已经算是不错的,有的项目看着ETL太慢,只是找寻数据库和ETL代码的原因,于是经常有工程师到处问,几亿的数据量如何增加效率呢,数据库还需要什么优化呢?其实即便你除了2亿纪录的那个表,那么随着客户信息的增加,以后3亿、4亿纪录你能按时ETL完成?
%Fuy6V2]{;M Rl6p0
8C5s/G?G
]C/_(O0我看到很多朋友,包括比较资深的朋友,一提到那种架构就摇头,太空矿了,没法入手,也没法讨论。其实很多项目开发的时候,分了一些事实表分表,我看有的电信行业架构设计还把主题分为经营分析和大客户两个业务层,这不也是一种设计的进步么?ITPUB个人空间!c1N/}^}F\
ITPUB个人空间6Z8| d{pE'qB
国外大项目之所以把Architecture工作和data
b-Z n d
r._0model的工作分开,就是因为两者完全可以独立,一个优秀的架构设计,可以应用在不同行业,而不是做一个行业的项目,设计一个架构。可能有人要问,不同客户的数据量和业务复杂程度都不一样,你如何规范?那么一个合格的架构设计,应该是分层的,比如,首先分出ODS,DW,DM,标出ODS接受哪些数据源,ODS如何把数据流向DW,DW如何流向DM,具体点可以把一些逻辑上的数据库标上,就像元数据管理图一样。第二层就是各个逻辑层内部设计,ODS一个或者数个数据库,对应到哪些DW对应的逻辑数据库,DW在处理ETL过程中,需要几个过渡层,如果数据量不大的话,只需要一个confirm层ETL到confirmITPUB个人空间GJInE/{(vl7\6fe
fact
%L5M6X9_U0table足够,如果数据量大,看来还需要一个过渡层才能流向DM层。DM层是面向各个前端应用的逻辑层,大型项目一般都是DW的一个事实表对应多个DM层的事实表。第三层设计是把业务逻辑融入架构中,说明各个逻辑层中业务逻辑的变化。
4Ib7c3]4`,d0ITPUB个人空间 o&Qp5c;QMF-w
由此可见,数据仓库项目并不是完全是纯粹的业务驱动,也不是完全的数据驱动,应该是两者同时驱动的MATRIX架构。一个合格的数据仓库架构设计,不但要清除业务流程,还应该清楚数据流程,光有元数据驱动ETL开发也不能让数据仓库更有条理。当然一个项目要实施很合格,光靠架构也不够,具体的开发和测试这样的具体工作也很关键,不在此次讨论范围。ITPUB个人空间"y(Q&]`}T)RO