这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。 我也要与时俱进了,被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,{e o/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/c o
ITPUB个人空间8k4p/dl y(v;@"L
对于一个大型数据仓库项目来说,如果粗犷地设计为ODS,DW,DM三大层次,那么在具体实施的时候,可能会因为数据量大,需要过渡层,于是随手在DW层增加些分表,到DM后,前端应用觉得查询太慢,于是也增加一些分表,再汇总。这样就陷入了无休止的维护和盲目地修改中。据我所知,能知道增加分表作为过渡层,已经算是不错的,有的项目看着ETL太慢,只是找寻数据库和ETL代码的原因,于是经常有工程师到处问,几亿的数据量如何增加效率呢,数据库还需要什么优化呢?其实即便你除了2亿纪录的那个表,那么随着客户信息的增加,以后3亿、4亿纪录你能按时ETL完成?
%Fuy6V2]{;MRl6p0
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

SE6oYg}[+B0在这只是抛砖引玉,只是提醒下,数据仓库架构设计,并不是空旷,虚无的东西,也不只是业务的驱动和主题的划分。"ETL※DW※OLAP"只是些表面的东西,作为设计者,应该需要知道内部更多,更深入的东西。
+jm0Q6d7w8n0
!B.f:X8@ AF EX"\z0 ITPUB个人空间w|Jv6a QE I8` f
huhaifei
4Y1rka*W$R0查看个人资料
W g!`'\1b"[2h`[o$?}0 更多选项 2006年2月23日, 上午10时40分
pGh#@;s'p&i0发件人:huhaifei <huhai...@gmail.com>ITPUB个人空间t"L`N|F
日期:Thu, 23 Feb 2006 10:40:26 +0800
@x0Bk"Z0当地时间:2006年2月23日(星期四) 上午10时40分ITPUB个人空间a G)u$A V-DN@:x
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间y:Hi,Y8Ul o J
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
EoWW;C1na0
)t\-grU-[W'D$UND0 按照对业务和数据的理解后,如何去进行架构设计呢,一个好的合格的架构设计包括哪几方面内容呢?大家按照各自经验给些意见和指导。。。ITPUB个人空间2v%G|7z,V8d4vh]|
ITPUB个人空间q-P].J6Fx B3C-\
2006/2/22, innovate511 <innovate...@gmail.com>:ITPUB个人空间p&Yi&}@ W(sY
ITPUB个人空间/T6i*Iuuj8G D+B[
> 在各个网站和论坛,一说到数据仓库,基本都想到了"ETL※DW※OLAP",一说到数据仓库设计,就是按照行业规范和客户需求调研,设计主题,然后设计对应的事实表、维表。但是,这就是真正的数据仓库总体设计么?ITPUB个人空间z2lyAcK
ITPUB个人空间 ?8fl QLqf-S
-- ITPUB个人空间 g#_ai{ k
胡海飞ITPUB个人空间{#Yjj ui \Z#S
DW & BI,EAI,IRPITPUB个人空间&`M?@v
MSN:flyingfox1...@hotmail.com
Z;Gt%YjzoLe0QQ:6184771ITPUB个人空间]W`*l4IW lm"j
ITPUB个人空间9b r5x#u K8G)a?

u7T'e$wy\y$q0刘庆 ITPUB个人空间J;y.r`d'^JHu[
查看个人资料ITPUB个人空间$}w$mq!| |t
(1 个用户) 更多选项 2006年2月23日, 下午1时03分
|;`ejFEOb}0发件人:"刘庆" <happys...@gmail.com>ITPUB个人空间V({g:G|z.m-\
日期:Thu, 23 Feb 2006 13:03:19 +0800
d Q3tw-TL0当地时间:2006年2月23日(星期四) 下午1时03分
3_n`A9M"N)r5X0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
v-L;Y4p.Yo\ D M0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
K,o?^RJ-UMD0ITPUB个人空间R2z}&}tF
架构设计究竟怎么进行,包括什么内容。前两天一个朋友熬夜要完成这份文档,因为第二天就要提交,看,这本身是有问题的吧。架构设计怎么如此仓促?它的设计对以后整个项目的体系都是影响重大。所以,我想如果仅仅是写一份客户需要的《总体设计文档》,ctrlc,ctrlv也就够了。然而如果是要实在考虑如何架构一个BI系统,有必要琢磨一下。ITPUB个人空间XZ+F+sCu;J _}
ITPUB个人空间H[/_*M&o;Y.v
首先看看架构设计中包括那些内容,再来反过来看看它为什么人服务。
7m1U kp Z)[0ITPUB个人空间g*YnO u({n
架构中重点是描述系统的结构,以及他们之间的关联、交互接口。BI系统可以划分成业务模型、元数据、数据质量、接口平台、报表集市、指标库等。可以看到,这里命名这些模块都是静态的名词,而不是动词,例如业务建模、数据质量管理等,之所以如此,是因为这是在描述系统的结构而非功能。ITPUB个人空间 z/s T t?

l A9p|hPf&P0业务模型是存放业务数据的结构,可以再细分,成ODS、DW(还可以细分)、DM等,它是支撑业务分析需求的,例如报表、仪表盘、OLAP、专题应用等。而元数据是为整个系统数据的形态和数据流动的过程起到支撑作用,也就是说数据从源头开始,到最终的用户眼前,其来龙去脉,每个环节的状态都需要掌握。而数据质量模块是为衡量数据源质量、ETL过程处理质量提供支撑。接口平台是处于源系统和数据仓库系统之间的,方便明确界定双方职责的模块。报表集市为报表应用提供支持,指标库为绩效管理需求提供支持,后两者其实还可以归入业务模型一类,因为它们都是服务于分析需求的。
@`:d0yy8n:^O0
u7Fj@,jY0之所以分成若干模块,是为了让架构清晰,降低这些模块之间的耦合,如此的构成是否合理呢?还得看看这个架构面临的需求到底是什么,将系统的用户分为两大类角色:
~ S |9v#Zt01、 系统运营角色,他们对系统的正常运行、维护负责;
2H|8q:v#da6d02、 业务分析角色,他们需要从这个系统得到数据分析的功能;
N#g.C"]x'Zu r0
+Y$H:z+H%_8~(n0显然,第二种角色的分析数据来源都都将来自业务模型模块。而第一种角色将从剩下的模块中满足自己的需要,可以说,他们绝对不直接和业务模型这个模块打交道。在架构设计中,重点应该放在如何满足系统管理用户的需求上面,当然是"重点",而非舍弃业务分析角色,毕竟在业务模型模块中,根据业务的特点、数据量的特点、分析应用的特点,来进一步细化。
{I4I3i'P P w4`h tz%|0ITPUB个人空间(O?j*C]B wvCNee
这里有个自己的理解要说明一下,架构设计应该是于具体业务关系不大的,这种架构应该是半通用的。之所以是半通用,在系统功能上面,BI项目大同小异,而在业务需求上面,架构中只需要对客户的业务、分析需求分成几个大类,例如按行业分业务模型,按OLAP、报表来为分析应用分类,不要太过细节。ITPUB个人空间xj x?+A6k T

|-I dlW1}C%y6K)_0来看看这系统运营角色的需求罢,还可以对这类角色细分成:ITPUB个人空间o0v&[ _(Jk!X0Y5z\.[]|F
1、 开发设计者。之所以将开发者作为系统的用户,是因为数据仓库项目应该看作一个过程,而不是产品,因此在开发阶段,其实其架构最重要的用户就是开发者,当然要为之提供便利。ITPUB个人空间0eq-LVo4T
2、 系统管理员。系统交付之后,如何监控系统运行、发现数据质量问题、应付新的分析需求等。
R7C$o|;Y yq0ITPUB个人空间#z}0p&q rv
那么对于开发实施人员,他需要进行系统部署、ETL的开发调试、质量的稽核;设计人员,需要进行模型的变更、系统调优、作系统一致性分析等;而系统管理员则需要监控ETL过程、监控系统运行、响应系统警报、接口数据管理等。这些都可以看作是用例。
mTmY+h*vK0ITPUB个人空间D ~}?$}.] ]
面对这些用例,它们是架构设计的"需求",如何满足他们,并且保持良好的体系和清晰的结构。能够易于维护,且能够满足日后肯定会增加的业务需求。ITPUB个人空间I7r'}7x\/H6Y
ITPUB个人空间9gF]tz0S"e
说了这么多,主要要表述的观点是:
#iE|"|%v@ i^(L9Y01、架构设计主要面向系统用户为主;
R'cY!{ WB(`$o-a'T02、架构设计的内容主要包括:系统功能需求、分析需求分类;支持这两者的后台结构,结构的粗略划分,以让其内部能够保持简单的交互方式。
'@Q5@~U03、架构设计和详细设计究竟如何界定的?在架构设计中,不要出现诸如"欠费账龄"、"信用等级"这样的业务术语。
FRqI-aB0ITPUB个人空间(xQ6f$l*j$g u3?Mn2V)aF C

)[J"qdY;]]~0goldenfish3 ITPUB个人空间T/|xj XP `;~5g
查看个人资料ITPUB个人空间i0eN wY$m e7H
更多选项 2006年2月23日, 下午3时34分
q lt3A O(iE0发件人:goldenfish3 <goldenfi...@163.com>ITPUB个人空间Q%[$ek2b2r3|D
日期:Thu, 23 Feb 2006 15:34:12 +0800ITPUB个人空间Gu2SR0m;py].V
当地时间:2006年2月23日(星期四) 下午3时34分
,af/NAl@5z0主题:Re: Re: 怎样的架构设计才是真正的数据仓库架构(原创)
sm5T w.w'@D0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
~8X5t:B%^.t9X8Y\0
(h%O~b5[0与架构设计相关联的是仓库的容量规划。包括用什么样的硬件、软件、多大的存储,满足什么样的性能,在未来1年、至若干年如何扩充以适应需求增长。数据仓库的容量规划也可以是个单独的话题,但在我们的实施中,它属于架构设计部分,而且是个难点。
c qi sz:vc0ITPUB个人空间6s0C;f1an;Fp'n
ITPUB个人空间n J3bv \&o-pvh2y
happy ITPUB个人空间d(v,HI0bRD
查看个人资料
3u$@MZ7l0 更多选项 2006年2月23日, 下午4时53分
7@Sv!{E0Rx/A4u&u0发件人:"happy" <xiningd...@prient.com>ITPUB个人空间|Q[F B6Hm_
日期:Thu, 23 Feb 2006 16:53:1 +0800ITPUB个人空间x7VN)u.VW&A
当地时间:2006年2月23日(星期四) 下午4时53分
k1|ng.bW0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
;vCf2kYG0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
N{"]R7k5U0 想请教一个问题,增加分表指的是什么意思?ITPUB个人空间S$FT#nsP x0x0X
是指由于转换规则太复杂,把原来的一次转换分成多次转换,把转换的中间数据放在临时表中呢?ITPUB个人空间t}9o&qD%]0lq U p
还是由于表中记录数很大,所以按照业务需求、以及今后查询的特点进行的分区处理呢?ITPUB个人空间7rKxF hd
还是在刚开始设计事实表时,根据业务的不同进行分类,把不同业务数据分别放在不同的表中呢?ITPUB个人空间9ih m dJXK&P6]
ITPUB个人空间7D Pqkq1rS
谢谢
J.x%K1I@l q+w2R0
gm t`,spz0happyITPUB个人空间$SDt"n)C t
ITPUB个人空间K HJq6e)m)CU;I
- 隐藏被引用文字 -
_BKK ~u9g!z3gwK0- 显示引用的文字 -
:H6D Pn+`+?w7t0-----Original Message-----ITPUB个人空间 t4r VB B;g?9\\f
ITPUB个人空间4@PGV,m8C-}
>在各个网站和论坛,一说到数据仓库,基本都想到了"ETL※DW※OLAP",一说到数据仓库设计,就是按照行业规范和客户需求调研,设计主题,然后设计对应的事实表、维表。但是,这就是真正的数据仓库总体设计么?ITPUB个人空间OY J)X5xt%n5l4e `:Q

+k0] Fx&g7v M5m0>关于上面说的主题设计,以及前端展现,这是给客户的最终用户看的,他们只关心你能给他们带来什么,是否满足他们的报表、查询和分析需求。但是对于厂商自己来说,需要清楚自己实施项目时要干什么,就像复杂的ETL开发需要元数据去规范和指引一样,项目的数据流逻辑,是否有设计规范。
@8Zg[i'R+y2M0
X/d._{)U/j"M0>对于一个大型数据仓库项目来说,如果粗犷地设计为ODS,DW,DM三大层次,那么在具体实施的时候,可能会因为数据量大,需要过渡层,于是随手在DW层增加些分表,到DM后,前端应用觉得查询太慢,于是也增加一些分表,再汇总。这样就陷入了无休止的维护和盲目地修改中。据我所知,能知道增加分表作为过渡层,已经算是不错的,有的项目看着ETL太慢,只是找寻数据库和ETL代码的原因,于是经常有工程师到处问,几亿的数据量如何增加效率呢,数据库还需要什么优化呢?其实即便你除了2亿纪录的那个表,那么随着客户信息的增加,以后3亿、4亿纪录你能按时ETL完成?
&[X"J |a,n0
u3@4S5?I Om |MK0>我看到很多朋友,包括比较资深的朋友,一提到那种架构就摇头,太空矿了,没法入手,也没法讨论。其实很多项目开发的时候,分了一些事实表分表,我看有的电信行业架构设计还把主题分为经营分析和大客户两个业务层,这不也是一种设计的进步么?ITPUB个人空间C7je4n$c*?0x2P
ITPUB个人空间h {~$c/B-Q.^!r2?u L
>国外大项目之所以把Architecture工作和dataITPUB个人空间l?A.DL
>model的工作分开,就是因为两者完全可以独立,一个优秀的架构设计,可以应用在不同行业,而不是做一个行业的项目,设计一个架构。可能有人要问,不同客户的数据量和业务复杂程度都不一样,你如何规范?那么一个合格的架构设计,应该是分层的,比如,首先分出ODS,DW,DM,标出ODS接受哪些数据源,ODS如何把数据流向DW,DW如何流向DM,具体点可以把一些逻辑上的数据库标上,就像元数据管理图一样。第二层就是各个逻辑层内部设计,ODS一个或者数个数据库,对应到哪些DW对应的逻辑数据库,DW在处理ETL过程中,需要几个过渡层,如果数据量不大的话,只需要一个confirm层ETL到confirmITPUB个人空间]1d4my)c!N"eL*N
>fact
m4W!U!A4}1l~wN lB0>table足够,如果数据量大,看来还需要一个过渡层才能流向DM层。DM层是面向各个前端应用的逻辑层,大型项目一般都是DW的一个事实表对应多个DM层的事实表。第三层设计是把业务逻辑融入架构中,说明各个逻辑层中业务逻辑的变化。ITPUB个人空间9G&h uNuiH

D@5g-Dud@0>由此可见,数据仓库项目并不是完全是纯粹的业务驱动,也不是完全的数据驱动,应该是两者同时驱动的MATRIX架构。一个合格的数据仓库架构设计,不但要清除业务流程,还应该清楚数据流程,光有元数据驱动ETL开发也不能让数据仓库更有条理。当然一个项目要实施很合格,光靠架构也不够,具体的开发和测试这样的具体工作也很关键,不在此次讨论范围。
\'C:mrcp]]%t"d#B0
4\7y(M ]B&y0>在这只是抛砖引玉,只是提醒下,数据仓库架构设计,并不是空旷,虚无的东西,也不只是业务的驱动和主题的划分。"ETL※DW※OLAP"只是些表面的东西,作为设计者,应该需要知道内部更多,更深入的东西。
kg0^E+y1M.b1C0
&i%UNU+i3s0-------------------------- ITPUB个人空间+Q"gn0Bv
ITPUB个人空间/r(eQ@SF:~*?c
thanks!
h7S)z'\/i)V%I+iJJ0
;c"yQR_N8ML0        happyITPUB个人空间3S.\|+j/a5`.v
        xiningd...@prient.comITPUB个人空间L8d r$_"|&b&g"N3i!ZJ N
          2006-02-23
t&[C h6`.WT1bL0D!a0 ITPUB个人空间Iw ~V{v(e},m

)A?)v)Zg9c0innovate511
-r/b2d9EC8V*n0查看个人资料
;[A:] @| KG#vIu0 更多选项 2006年2月23日, 下午6时11分
+j&IB,] [0@}f0发件人:"innovate511" <innovate...@gmail.com>
+mG J Nx%~%C0日期:Thu, 23 Feb 2006 02:11:50 -0800
:Ehz2JdN0当地时间:2006年2月23日(星期四) 下午6时11分
)\!i;~+XL D%p0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间&d E}5@7u1m ~&w
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间!qR'xU8?Q3q*n
我也比较了解国内的实际情况,往往是给客户的设计资料比较详细,而内部的设计会粗一些,甚至的有的干脆省略了。而客户只关心大概的东西,看你能不能满足他们的分析需求,或者你能给他们带来什么分析,具体的事情他们不需要管太多。ITPUB个人空间]1Kgg{$R(}"Ohu

clEKf&AYG r0从业务角度讲,有两种情况,一是客户比较盲目,没有明确的分析需求,这个时候主要就是从现有的数据源出发,再到前端应用的一种从底到顶的一种设计;二是客户有明确的分析需求,这个时候既要从现有从底到顶的设计,还要看现有数据源是否能满足客户特殊的分析需求,如果不能满足,需要尽早提出,并和客户解决数据源的问题,从这个角度说,又是从顶到底的一种模式。ITPUB个人空间C4N#^6nqI
ITPUB个人空间BP0?~-C iWv
从数据角度讲,如何把数据源到前端应用的线牵起来,通俗的说是一个大的ETL过程,但是庞大的系统需要考虑ETL后的数据质量、一致性、效率等很多因素,于是这个问题需要厂商自己处理,客户不会非常关心,所以才有很多遗留问题。
&BC7S1oN Z0
V y1Wo+w7H#]0
P%[,~Ge-SUc0 ITPUB个人空间 O W2x"w Ki
hujue1982@gmail.com
[ H I7]i(Nu%W2A0查看个人资料
$}4eRoB/F&L0 更多选项 2006年2月23日, 下午6时13分
Y+~{xT9X0发件人:"hujue1...@gmail.com" <hujue1...@gmail.com>
8ZG6O Q P0日期:Thu, 23 Feb 2006 02:13:32 -0800ITPUB个人空间(}w mb_
当地时间:2006年2月23日(星期四) 下午6时13分ITPUB个人空间#Q(_!N4{y!iZ
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
4d7ypq8x2Vt0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间0X@ FY-LST
我想增加分表是按照业务的区别将数据分为多个事实表存放,这样毫无关联的数据就可以分别存放在不同的事实表中。之前我参与的一个电力决策系统,其中层次就设计分成了5个层次:ODS,临时层,DW,聚合层,DM,这样虽然ETL起来比较麻烦,但是非常灵活,可以方便地根据用户需求而改变;其中事实表也是按照不同的业务分成了多个事实表ITPUB个人空间UG5mf~

%H [!Vh\ TU$C0- 隐藏被引用文字 -ITPUB个人空间evF `,Mr
- 显示引用的文字 -
jf0x\@u})q/ma'AM0happy wrote:
Q`4U]&~[jk7WJ*y0> 想请教一个问题,增加分表指的是什么意思?
1s$L,NlB"eo0> 是指由于转换规则太复杂,把原来的一次转换分成多次转换,把转换的中间数据放在临时表中呢?ITPUB个人空间0oT:zh @E%r^
> 还是由于表中记录数很大,所以按照业务需求、以及今后查询的特点进行的分区处理呢?ITPUB个人空间mN$?*{ w/T&t
> 还是在刚开始设计事实表时,根据业务的不同进行分类,把不同业务数据分别放在不同的表中呢?ITPUB个人空间 |+YfFT+`H;@

hIPbxa w'{0> 谢谢ITPUB个人空间 F*q5QC q,@n

g,n} }C*dH%E5y/E8F0> happy
+RS8U4t0it&N0ITPUB个人空间$@,I3fR*sG d [
> -----Original Message-----ITPUB个人空间uxZZU8C+t+[p+r

j{&F5aP0> >在各个网站和论坛,一说到数据仓库,基本都想到了"ETL※DW※OLAP",一说到数据仓库设计,就是按照行业规范和客户需求调研,设计主题,然后设计对应的事实表、维表。但是,这就是真正的数据仓库总体设计么?
j$[lh8A0ITPUB个人空间'C1PeVbHM
> >关于上面说的主题设计,以及前端展现,这是给客户的最终用户看的,他们只关心你能给他们带来什么,是否满足他们的报表、查询和分析需求。但是对于厂商自己来说,需要清楚自己实施项目时要干什么,就像复杂的ETL开发需要元数据去规范和指引一样,项目的数据流逻辑,是否有设计规范。ITPUB个人空间/SS0`2o.TdS

]Q ]y*E/z$Z!H Nh5O0> >对于一个大型数据仓库项目来说,如果粗犷地设计为ODS,DW,DM三大层次,那么在具体实施的时候,可能会因为数据量大,需要过渡层,于是随手在DW层增加些分表,到DM后,前端应用觉得查询太慢,于是也增加一些分表,再汇总。这样就陷入了无休止的维护和盲目地修改中。据我所知,能知道增加分表作为过渡层,已经算是不错的,有的项目看着ETL太慢,只是找寻数据库和ETL代码的原因,于是经常有工程师到处问,几亿的数据量如何增加效率呢,数据库还需要什么优化呢?其实即便你除了2亿纪录的那个表,那么随着客户信息的增加,以后3亿、4亿纪录你能按时ETL完成?
&U!|{:x"UY0
g'w f9Whpn0> >我看到很多朋友,包括比较资深的朋友,一提到那种架构就摇头,太空矿了,没法入手,也没法讨论。其实很多项目开发的时候,分了一些事实表分表,我看有的电信行业架构设计还把主题分为经营分析和大客户两个业务层,这不也是一种设计的进步么?
:_ P$[!e$s-c7`'cCD/N0ITPUB个人空间lPt`+I
> >国外大项目之所以把Architecture工作和dataITPUB个人空间#yGJ1\:C2kl
> >model的工作分开,就是因为两者完全可以独立,一个优秀的架构设计,可以应用在不同行业,而不是做一个行业的项目,设计一个架构。可能有人要问,不同客户的数据量和业务复杂程度都不一样,你如何规范?那么一个合格的架构设计,应该是分层的,比如,首先分出ODS,DW,DM,标出ODS接受哪些数据源,ODS如何把数据流向DW,DW如何流向DM,具体点可以把一些逻辑上的数据库标上,就像元数据管理图一样。第二层就是各个逻辑层内部设计,ODS一个或者数个数据库,对应到哪些DW对应的逻辑数据库,DW在处理ETL过程中,需要几个过渡层,如果数据量不大的话,只需要一个confirm层ETL到confirmITPUB个人空间5rYYBP rf
> >fact
`X/q/|\)J z0> >table足够,如果数据量大,看来还需要一个过渡层才能流向DM层。DM层是面向各个前端应用的逻辑层,大型项目一般都是DW的一个事实表对应多个DM层的事实表。第三层设计是把业务逻辑融入架构中,说明各个逻辑层中业务逻辑的变化。
u prs:ZNbAp$@-[0
9cv[P-sU0> >由此可见,数据仓库项目并不是完全是纯粹的业务驱动,也不是完全的数据驱动,应该是两者同时驱动的MATRIX架构。一个合格的数据仓库架构设计,不但要清除业务流程,还应该清楚数据流程,光有元数据驱动ETL开发也不能让数据仓库更有条理。当然一个项目要实施很合格,光靠架构也不够,具体的开发和测试这样的具体工作也很关键,不在此次讨论范围。
W*GBy Tu~?0
/N*fM)P3c%h,A0> >在这只是抛砖引玉,只是提醒下,数据仓库架构设计,并不是空旷,虚无的东西,也不只是业务的驱动和主题的划分。"ETL※DW※OLAP"只是些表面的东西,作为设计者,应该需要知道内部更多,更深入的东西。
G]cVC(`!L3\g0ITPUB个人空间3X7c8r$VBR0~u
> --------------------------
(w!SzT!P0
_ Wi8s?k"e { {0> thanks!ITPUB个人空间6A0t UE-}
ITPUB个人空间#p8g8nQ$W4v
> happyITPUB个人空间n,M{`#h/gj`
> xiningd...@prient.com
u;?6I7N(C0> 2006-02-23
e f| hM-@O0 ITPUB个人空间"b4c.G3v(gWs"u!r
ITPUB个人空间4F!L1Ue,Y~|*SMWt!y
ITPUB个人空间!tU/J'PgPK4}
innovate511
QFI%fk/O.X0查看个人资料ITPUB个人空间:Q\5y,ztNz
更多选项 2006年2月23日, 下午8时03分ITPUB个人空间5F'TuOS
发件人:"innovate511" <innovate...@gmail.com>
+g'T%?eSO+w$t)l0日期:Thu, 23 Feb 2006 04:03:10 -0800
0m7P:SH`0i0当地时间:2006年2月23日(星期四) 下午8时03分
6z2Q5j _ A{+b'h5_4e~0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间9Y(w4HT2r!J@;t
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间|L G T&]s)w-oVb
分表目前在很多项目中已经使用,只是还是比较随意,没有在总体架构设计中作为一个层出现。ITPUB个人空间3~aoQ@ X.o&R
而且在实际项目中,分表和你说的中间数据是两回事,而且规范的数据仓库不会把任务流程中的数据放在临时表中,那是非常不规范的,因为如果一旦有问题,中间的数据就断了,数据质量无法保证。ITPUB个人空间'IL|#L OHKEA

%u^8e.cfr%UA4S1}4b o0所以分表,就是同一个数据源,本来可以放在一个事实表,但由于数据量太大,或者业务太复杂,一个事实表很难包含所有主题的信息,于是考虑按照某种业务需求分成多个相似主题的事实表。这个没有统一的定论,需要按实际需求设计。比如一个主题分为日报、周报、月报等不同的分析周期,那么可以分为xx_day_fact,xx_wkly_fact,month_wkly_fact;如果用户经常察看的日分析是2个月的数据,那么你的当前事实表只存2个月的数据,其他的放在xx_his_fact中,再久的放到磁带库(比如2年前的)。类似的分类分表的方法很多,就不一一介绍了。ITPUB个人空间R8_B Ce.|2T

$c$D5Pd1r0而所谓的中间数据,也并不是简单的汇总,以前的一些项目,很多根本没用国外很成熟的概念confirm
EVK:b'l$G.kC7A0factITPUB个人空间f5^;{XjG
table聚合一个涵盖丰富信息的事实表,而直接汇总,是一个很典型的案例。一般标准点的项目会把confirm
Z Hb#Hj$gAl s yj0tables作为一个层,出现在总体架构设计中,成为前端应用汇总信息的重要通道。ITPUB个人空间\}:@ X*Z&X%c

[NpH#T{m9o0 ITPUB个人空间)}Ase6{;X
ITPUB个人空间'eV.[3u.I0v W g+k

LHB J eT7L6iL0刘庆
6X0i~d5CA IY0查看个人资料ITPUB个人空间%p?c"_.D6}'`2}D m8a
更多选项 2006年2月24日, 下午12时11分
@!L#u q OQM8Y0发件人:"刘庆" <happys...@gmail.com>ITPUB个人空间&h"sF M;E}U
日期:Fri, 24 Feb 2006 12:11:09 +0800
o*^A1u9K"V&WB0当地时间:2006年2月24日(星期五) 下午12时11分ITPUB个人空间 \8V_5TNI'n
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
0vh)z-[R*d)K{s J"j2L0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间3T'j7l(~GT5kII+F

Xg*j0GQ&rOL0这个confirm table,一直没整明白是干啥的。按照Innovate的描述,它是一种"聚合一个涵盖丰富信息的事实表"。如此,我理解的confirmITPUB个人空间~9[ZXz
table,恐怕就是那种主题表,例如用户信息表(一系列),这些表的粒度是其描述的实体决定的,针对这种实体的汇总信息表。常见的实体包括用户、客户、渠道、产品、资源、竞争对手等。
gk6tG"nr0其实业务数据模型设计,区分成ODS、DW和DM,他的*架构*目的有二:
K iI? q*a9Y k01、为了能够满足用户可能变化的分析需求;
iSS ^6i(Es02、要不就是为了查询性能的需求。
Xl B8a\R0
z/\+hLb0confirm
*t4ZMs X MP0X0table概念的提出总归是要解决这两个问题或其中一个吧。如果是上面理解的那种,目前很多公司的模型设计已经有这样的分层,直接从事实表(ODS表)建立一个若干维度若干度量的汇总表,那是很早以前的做法了。ITPUB个人空间aP]6qI2I7MI

N+J/D:R%_;['w;kq0至于"分表"这种叫法,觉着是个比较含糊的术语。在项目实施中,存在一种现象。为了满足用户新需求的时候,或提高性能,去修改模型,可能就需要"分表",但通常会出现诸如tmp_xxx的临时表,甚至是以设计者名字命名的表,将他们当作临时表,但很可能他们并非临时的,会融入到实际的流程当中,导致混乱。这是因为在架构的时候缺乏概念设计的结果。整个系统的架构应该能够形成一个概念体系,底层物理的每个表,每个操作都能够归属到某个逻辑或是概念上。
"v G5PH]$lv)z j0
h u7U1ba&B#|0例如增加一个临时的汇总表,那么就严格规定,此表不能放入常规的ETL流程当中,因为那样会导致概念混乱。如果按照周期分表,同样在上层应该是有"不同周期主题表"的概念。ITPUB个人空间u1uxxr
所谓概念,其实就是给个名份。数据仓库中分那么多层次,ods、dw不都是数据倒来倒去吗,甚至都可以叫它们作"中间表",可这不是一个清晰的概念,于是就产生了细分。就像你叫一个人,"哎,女人",这多不尊敬人,如果叫"小丽啊",人家就爱听了。
yIss'b0On 2/23/06, innovate511 <innovate...@gmail.com> wrote:ITPUB个人空间,X!RZ!i~:T1t.@O

ElB kf!K6Sns0- 隐藏被引用文字 -
y'`P3W)L)g1G0- 显示引用的文字 -ITPUB个人空间*zw,qn{8w
> 分表目前在很多项目中已经使用,只是还是比较随意,没有在总体架构设计中作为一个层出现。ITPUB个人空间AmW0KZ&c-kX2k

I;vX/K2p/T0> 而且在实际项目中,分表和你说的中间数据是两回事,而且规范的数据仓库不会把任务流程中的数据放在临时表中,那是非常不规范的,因为如果一旦有问题,中间的数据就断了,数据质量无法保证。ITPUB个人空间&v+Z(].[qly*^W/[ e
ITPUB个人空间"Y"}W3|i%v)@
> ...ITPUB个人空间 U2m#g.};Aa1J

;h?[*Y u }A0 ITPUB个人空间/H s^[x_;W$]C8WP

2cc:IP8]0happy
+Jhu Q8~%Z1w/L;~({ Z0查看个人资料ITPUB个人空间*Fb0v,S:g!I,P
更多选项 2006年2月24日, 下午12时54分ITPUB个人空间NGgOF"]U
发件人:"happy" <xiningd...@prient.com>
fWP h"~0日期:Fri, 24 Feb 2006 12:54:28 +0800
tD-DJ ^0当地时间:2006年2月24日(星期五) 下午12时54分
Dd4x FB:` S0主题:Re: Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间([;V*`v {"p4qb.\
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间 {`)kX h's
谢谢innovate511对我问题的解答,还是有几个问题再请教一下:ITPUB个人空间4W r%B:i-F\X-h\@/R
ITPUB个人空间$})[^|S;o
>分表和你说的中间数据是两回事,而且规范的数据仓库不会把任务流程中的数据放在临时表中,那是非常不规范的,因为如果一旦有问题,>中间的数据就断了,数据质量无法保证。ITPUB个人空间GB%k1f0wh:?c UH
ITPUB个人空间e7Y3WJ.S/V
innovate兄提到如果中间数据按照上面的操作是非常不规范的,因为在ETL过程中断时会产生数据质量的问题。这一点我还不是很明白。因为我在ETL了的过程中,有一些数据质量的控制方法。如果ETL过程中断,我会在日志中记录中断的情况,包括涉及哪些数据,在哪一环节出现错误。这些数据是不会再进入下面的环节的。我会通过对日志的分析来重新对这些数据进行ETL,并修改ETL的结果。我想这样是不是可以解决数据质量的问题呢?
9B*UX5p J,C3t0 我理解的中间数据不是按照业务来区分的,它只是为了某些原因,比如ETL的性能优化、更好维护等等才采取的方式,不知道这样方式是否确实存在数据不规范的隐患呢?还请innovate兄帮我再分析一下吧。
Hq*z s/|o0ITPUB个人空间oyHZ,O0o&R:I%}
>而所谓的中间数据,也并不是简单的汇总,以前的一些项目,很多根本没用国外很成熟的概念confirm
"mZ`f.BF5o\6F!qk0>factITPUB个人空间!Ty"TW"v xb?V(q K
>table聚合一个涵盖丰富信息的事实表,而直接汇总,是一个很典型的案例。一般标准点的项目会把confirm
LF dgm+\f W/?W y0>tables作为一个层,出现在总体架构设计中,成为前端应用汇总信息的重要通道。ITPUB个人空间/Eh!X6}F-|g
ITPUB个人空间4]/[ {Y*rm0p
查了一下,没有找到confirm fact table的资料,希望innovate兄再多解释一下。如果在设计数据仓库时做到一个数据仓库的事实表可以和多个数据集市的事实表包含1:n的关系的话,那当然好了。不知如何在实际中满足这样的设计?是否要全面了解企业的需求,对业务理解很深才行啊?我们现在其实很多时候都在根据一堆业务指标来构造数据仓库的事实表,构造完后,如果有新的需求、新的指标,就会在原来的事实表上修改或者新建一个事实表。请问如何避免这样的现象?ITPUB个人空间"]V2[.]` mo

^ @%V\FBx&{-M~6P0谢谢
5t2J0p2x$J&o:r3s9c,T0
-@*eGQ J0happyITPUB个人空间:enG @\2@ n

D3y4^?M(r-W0-----Original Message-----
G~~8f-t)?"k H,I r0
#`AcW0b0>分表目前在很多项目中已经使用,只是还是比较随意,没有在总体架构设计中作为一个层出现。
{s HR%dQy;k1[0>而且在实际项目中,分表和你说的中间数据是两回事,而且规范的数据仓库不会把任务流程中的数据放在临时表中,那是非常不规范的,因为如果一旦有问题,中间的数据就断了,数据质量无法保证。
X]"]D` Lj0Uz0
F?2Fk7gIB8[9|0>所以分表,就是同一个数据源,本来可以放在一个事实表,但由于数据量太大,或者业务太复杂,一个事实表很难包含所有主题的信息,于是考虑按照某种业务需求分成多个相似主题的事实表。这个没有统一的定论,需要按实际需求设计。比如一个主题分为日报、周报、月报等不同的分析周期,那么可以分为xx_day_fact,xx_wkly_fact,month_wkly_fact;如果用户经常察看的日分析是2个月的数据,那么你的当前事实表只存2个月的数据,其他的放在xx_his_fact中,再久的放到磁带库(比如2年前的)。类似的分类分表的方法很多,就不一一介绍了。
1m1~Mg@5~dC0
go)Us Ne1e,Il0>而所谓的中间数据,也并不是简单的汇总,以前的一些项目,很多根本没用国外很成熟的概念confirm
I9~N,_d7lH/|9U0>factITPUB个人空间J#\\e+j0D!t5H
>table聚合一个涵盖丰富信息的事实表,而直接汇总,是一个很典型的案例。一般标准点的项目会把confirm
e%Lh!vc5e8r C3z0I0>tables作为一个层,出现在总体架构设计中,成为前端应用汇总信息的重要通道。ITPUB个人空间+S ~M&GFWC$c
ITPUB个人空间6HM&W5wM h!w
--------------------------
0rw.b GJu%`Y0
)[lh5hH0@5` }0thanks!ITPUB个人空间'Kf5wM2[t2sNG J

?_g6qf0        happyITPUB个人空间%M bZMcNo4cn
        xiningd...@prient.comITPUB个人空间 n ifS-m!T
          2006-02-24
)uo%Gv8?'`0
d"e_6k,a GS o0
}[ zQ'q W~7m4z0innovate511 ITPUB个人空间I*e V W4W
查看个人资料
l:I bz ZrL6j0 更多选项 2006年2月24日, 下午2时30分ITPUB个人空间0B+rbT3n;h2b
发件人:"innovate511" <innovate...@gmail.com>ITPUB个人空间X%Bftw BY[
日期:Thu, 23 Feb 2006 22:30:51 -0800ITPUB个人空间`vl9L t X+?
当地时间:2006年2月24日(星期五) 下午2时30分ITPUB个人空间 @i&iyxK,a
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
yw r3\E }t2@Q0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
,rL_a-CGJi zx0我以前就说过,有好多人想在ODS层做所谓的汇总表作为前端查询的做法是非常不明智和不科学的。数据仓库是个工程,你想怎么做都可以一定程度地实现客户的需求,所以才会出现很多厂商想当然地去做,因为他们觉得那样也能满足客户的需求,但是他们没有搞清楚,什么的方式才是最佳的。
q^LH9kA l^$sA0ITPUB个人空间 ~Z8ONt
大家很多都看过Inmon和Kimball的书,他们都或多或少提到过confirmITPUB个人空间-c-H+K:e[,|6S\x
table的概念和思路,就像刘庆说的,confirmITPUB个人空间? Y1Y {0J\!~H
table的出现的主要目的就是能够满足用户可能变化的分析需求和查询性能的需求,增加数据仓库的灵活性、稳定性和高效性。至于为啥ODS层用作前端查询不好,我也大概说过,ODS层的作用应是承上(数据源)启下(DW)的作用,如果你非要给个接口给前端查询,还做个类似confirm
*d]Vy*V$l0table的事实表,那不是功能和DW、DM有重叠了?客户访问要大大增加系统压力,作为数据前沿的接口,系统压力也很大,你如果保证高效?既然ODS到DW还可能经过1到多次的ETL,你怎么能保证客户最终查询和分析的数据一致性?ITPUB个人空间)J IBREw,urxC

ku9Fo'Z-{G0我不知道“建立一个­若干维度若干度量的汇总表”是建立一个汇总表,还是聚集事实表,这是两个不同的概念。confirm
JX!jp3?H4y0table既聚集事实表是指经过了所有设计好的ETL后,再把相似的事实表聚集在一起,也就是他还是事实表,不是经过sum,count的汇总表。ITPUB个人空间5]5Nj;_V]v ]5bqs

nR.m3s W @3TCE3{0说到这里,不得不说分表了。前面说到了ETL完成后相关主题的事实表要聚集到一个事实表里,那么意味着前面我们已经做过拆分,这就是所谓的一个大主题的事实表拆分成分表了。我们这里说的分表,和刘庆提到的很多项目,包括大型项目中的tmp表有类似的作用,但是并不是我做到项目做到一半,突然发现数据量太大,得找个分表分散ETL压力,而是在开始设计中设计好的一个步骤,一个层,要不然为啥总体设计要一个有经验有理论的人设计,随便找个做过大型项目ETL的人设计不就完了?ITPUB个人空间N0m-c7cyu"[+U
ITPUB个人空间 iih5}7s%z
再细说的分表的命名,如果资深的DW人,一看到分表基本都是tmp_xxx命名的话,只能说明这个项目是“修补型项目”,也就是走一步看一步,发现问题,我再改建模,我再改ETL,元数据管理也得修改。之所以后来项目都很重视元数据管理,是啥原因?没有元数据管理,ETL不照做么?因为大家都知道元数据有效的管理,能让你“站得高,看得远”,能把握ETL全局。那么一个“修补型项目”好,还是你前期架构设计好了,按照设计开发就是好呢?一看就明白了,这也是我最近各大论坛和网站提到的架构设计的重要性,我想我不提出来,也有人出来,就像当年很多人提出元数据管理的重要性一样。
&J#wSo5f A'~iz0
i!kz&p;|'U0
&XO_5iP)I c5{Jl7p0innovate511
UFv.i$A9e*Iy9[_Z:W0查看个人资料ITPUB个人空间5n F5W1fp.Dw
更多选项 2006年2月25日, 上午1时43分ITPUB个人空间W ^ f;Rl&D4z`
发件人:"innovate511" <innovate...@gmail.com>
2z8BS#w7eSQA"`0日期:Fri, 24 Feb 2006 09:43:13 -0800ITPUB个人空间4C"|-i-p6?:aB
当地时间:2006年2月25日(星期六) 上午1时43分
CS1o+[ l9cD2h5`0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
6`IB Ch[hU0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间3u0|9z1k:\?qW ~
to happyITPUB个人空间-?Vc2rcl
不好意思,我有个事情没有澄清清楚,分表可以分为业务分表,和过渡分表。你说的那种情况基本属于过渡分表,目的就是为了分散ETL压力,而最后需要汇总成一个事实表。
]dn^@+s0ITPUB个人空间hX-R5q.eWj.Hu;M
对于过渡分表,很多国内公司使用tmp_xx,我觉得很遗憾,且不说感觉这是个临时表,就命名来说,项目里其他人可能不知道这个表是干嘛的。最主要的是,过渡分表并不是tmp的,应该属于项目的一个重要环节,它们在完成ETL使命后需要重新回到一起,最后到所谓的confirm
Of V vla0fact table里面。ITPUB个人空间#V*Zw2uauOR u
ITPUB个人空间Y x}6b-dU
再说一下业务分表,所谓业务分表,并不是我们想怎么分就怎么分,而是根据实际情况。比如客户有固定的日、周、月、季、年等多个周期,那么周数据完全可以自己有一个事实表、年数据也可以。同样,举个简单例子,大客户的分析维和普通客户的维有很多不同之处,但是分析的指标却有很多共同点,而且如果调研结果是大客户信息全部来自大客户系统的话,难道你不觉得大客户和普通客户的事实表分开,是非常合理的么?领导最后可能需要一个总体客户的分析,这个时候你在完成所有ETL后,可以再汇总到一个confirm的聚集事实表里,这样既方便管理、效率高、数据质量有保障,而且方便安全管理,因为客户很可能不希望某些部门的员工不能看大客户的信息,大客户部门只能看大客户信息,而老总都能看。ITPUB个人空间2EHb _$LW0D

/qztY4Gza(^Hjn0至于confirm table的相关定义和资料,Kimball的Data warehouseITPUB个人空间 K)~pog&T)U'T
life cycle
Y"TN^ E m0toolkit里边就有。而且我以前在文章中也举个具体的例子,如何实现分表后又能高效聚集到confirm
Ln+AgC0fact table中。ITPUB个人空间)wT1m8Az M
ITPUB个人空间aM6_:S\8S#a8ut
刚才我说到的这些设计细节,项目的Architecture或者consultant应该可以通过详细调研后预测这些问题,然后设计出架构来,然后dataITPUB个人空间)`0K l&@teAz(R
modeler根据相关架构设计去建模。而不是上面提到的,项目遇到困难了,于是需要修改相关设计,作出很多临时表来应付。作为设计者最好是很资深的人,或者有更资深的顾问帮助设计,不说预测好几年情况,能预测3-5年客户应该就很满足了,但是如果项目才开始实施几个月就发现不对,那预测了什么呢?ITPUB个人空间M*w+RS$ZN ppW#~@A

-^UO0lm3HFN0ITPUB个人空间o5\$Ly-n)eF[NS
ITPUB个人空间3G[1k!x.o0]'|&b
ITPUB个人空间!e6h vy4Y+VEn6F
dumpedjoe ITPUB个人空间!wsI(`H:Xy5wJ8AN
查看个人资料ITPUB个人空间 ^4t(Mj/F4n6N
更多选项 2006年2月25日, 下午1时39分
\ih T.~0K/Ck\0发件人:"dumpedjoe" <dumped...@gmail.com>ITPUB个人空间#h/N'g8~y6h
日期:Sat, 25 Feb 2006 05:39:09 -0000ITPUB个人空间!YQ/v ~_/Er
当地时间:2006年2月25日(星期六) 下午1时39分ITPUB个人空间Xlx uQk
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间(M!X&`tAK"J3V"sj
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间F)Kl0]u8A!Xa
在项目(不仅仅是dw)中,架构设计师能够根据自身的技能和经验对于今后要面对的性能、数据质量、可扩展性等要求给出相应的应对方法是一个基本要求,问题是好的数据仓库架构是什么样的,针对不同的系统状况和业务需要,哪些是作为标准组件必需引入的,哪些是可以根据具体情况进行裁剪或合并的,我想这也是胡海飞希望大家能够深入探讨的,当然inmon和kimball以及其它各位老大早就给出了他们的答案,在这里我们对具体细节讨论一下,比如分表、confirm
&rW5fAz8v0fact table、ods等等。ITPUB个人空间-N6cS!ym9Ei8~T)Y
在这里说说我对ods的理解,和innovate511ITPUB个人空间%M#_qzwYW
略有不同,作为可选组件,ods是dw的一个补充,对于用户明确的查询和统计需求,为了减轻源系统的压力,引入ods,在其中针对确定的需求进行聚合,提供给前端操作型业务人员进行查询,dw在一定程度上能够满足这样的需求,但是分析型业务人员和操作性型业务人员的目的完全不同,虽然前者偶尔会访问到操作型人员经常访问的数据。
-T.W%lAK0 源系统
"}!DQ)f'I{0 /
V5A$V.LR(e0 明确的查询需求 分析需求ITPUB个人空间'bH)teJ
/
8rR)}I H"N*sr0 Ods dw or dmITPUB个人空间vx.gq+Nm\Y
/ ITPUB个人空间-`)m$CB!BB9x E
操作型业务人员 分析人员ITPUB个人空间*D(l-Fp)D
对于无批量查询需求的项目来说,ods就没有必要,也不能成为某一个层次,更不能承上启下。
j} {7} n"G0至于分表命名为tmp_***,我认为只要它是在设计阶段就明确了应用在哪个方法上,它就没有问题,只能说命名方法不好,如果在设计阶段未定义,这样搞才是一个"修补型项目"。ITPUB个人空间/k)N.`cU M C
对于dw项目,架构设计对于项目的影响相对其他项目来说要大一些,除了已经讨论的,大家是否有其他的应对,或者我们可以提炼一下,形成一个当前的最佳实践应用到后续项目中。即使没有结果也是很好的交流。ITPUB个人空间})dn;^@1A

1T7n3HDpd0C'Ekg0
[H7_MB!U5?;V;C0
Ms#~Ch0innovate511
T` B4o,Xus ql[0查看个人资料
z5i$r7bA0 更多选项 2006年2月25日, 下午2时54分
k(`2] aq~ ni%sW3w0发件人:"innovate511" <innovate...@gmail.com>
8HO@ys0日期:Fri, 24 Feb 2006 22:54:47 -0800ITPUB个人空间U+^?9{d.m_:a
当地时间:2006年2月25日(星期六) 下午2时54分
~._5SX,D:}Za0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
$m/|&fP;Dd!Ay0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间w6G[6V_e m3J
首先,架构设计的重要性,是针对项目越庞大(包括数据量和业务复杂度),越是重要。举个很简单的例子,我做过得最小的项目,就是某地级市电信运营商的竞争对手分析,就那么一个主题,数据量也不大,需要啥架构呢?只要业务明确,你想咋做都可以,前端报表和OLAP都做得不错,客户就能满意。所以我前面的讲的假设,基本是大项目基础上。ITPUB个人空间2]h-m7\9T p
ITPUB个人空间2v r:uA'FW5pS
那么我说的情况,都是客户有批量查询、随时对各个主题查询的可能。在大项目中,OperationalITPUB个人空间@vY @4Xl2](q
Data Store,从定义来讲,结构还是OLTP,所以被认为“TheITPUB个人空间S5w2luCjd k
ODS stage is sometimes skipped if it is a replication of the
,SZJ4t)]5eR:p7C6y0operational
A;B_)I!x4M0databases”,那么如果数据源很复杂,有多个数据源的话,将是必须的。
\T0RNRVbl+|0有一点我要说明的是,如果有的ODS层也有事实表什么的拿给前端查询,就和本身的定义不符,已经是DW的概念,作为前端应用,那是data
+qsYEM d&A(@K0mart的责任。所以我的建议是,不要把查询看作是独立的应用,也不要把ODS轻易忽略掉。
6kD#G3z&x*r `0ITPUB个人空间-b,?WKY\;n
我刚才说的重点,并不是他命名,命名只是个表面现象,因为既然项目需要一个中间层来过渡,为啥设计的时候没有考虑到呢,非要临到应用才临时搞个临时表过渡?
k;^!|xZ&@Ai w0
r+~:jG"d1lY$W0DW项目的项目质量保证还有个重点,就是开发和测试,我可以另外开一个话题讨论。至于也是至关重要的客户交流、调研,做个N多项目的人都有经验,我就不另外开话题了。
j.o.[2v?G.?0ITPUB个人空间fW\ k p

g@4KYU8_!R3ue0
9F+R{2b\_m0 ITPUB个人空间(d |4[M0|MCz
dumpedjoe ITPUB个人空间X*|ESv
查看个人资料ITPUB个人空间5X tpD#}6]
更多选项 2006年2月26日, 下午1时04分ITPUB个人空间B+@l+xJ#GKzd
发件人:"dumpedjoe" <dumped...@gmail.com>ITPUB个人空间q-v7C+Q n4u
日期:Sun, 26 Feb 2006 05:04:31 -0000
!D1soQWP q0当地时间:2006年2月26日(星期日) 下午1时04分ITPUB个人空间'R b#e.m?
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
-E:e,~![U E!l/K Y0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间]o:}_'M5{)qt\
主题少,数据量小,业务明确就不要架构我不能认同,好的架构是对后续会发生的常见问题有好的应对,难道等该项目结束后,客户觉得不错,再加个主题,数据量增长了以后我们再引入架构重新搞一次?这个暂且不谈,还是说说ODS,再次强调一下“明确”,如果查询需求明确,用data
zG8z2i N/r9fbNK&Xg o0mart来应对不是好的方法,data
'_r8eL7nK*wO`I0mart对于查询应该是集中在分析型业务人员在分析之后,对于分析结果可能产生的查询要求,类似CIF中提到discover(是不是这角色不确定,呵呵),比如某人某天发现怎么某客户的贡献度比上月差很多啊,钻取到原子数据来看看,而ODS应对的是习惯性的查询要求,每天都要做,一做一大批,业务系统和dm能做啊,可是对于正常响应业务或分析操作就有影响。
9U b|(d'~$r!nI.Z0我很认同查询不是独立的应用,在bi系统中,分析和查询的需求都会有,所以我们才不能一股脑将查询需求丢给dm,ods的必要性也在于此。而且在ods中围绕“明确”的需求在源业务表上作聚合没问题,什么都不干搞它做什么,与数据源的多少无关,它也不是事实表。
X1^sm qTd0大家对海量数据的情况下,使用何种架构能够保证装载和转换的性能聊聊吧,:)。
E.V$|]5V6q0 ITPUB个人空间J)h4_!pJY{ ^d!T

G [']m){%BY0
G`w6]] i}%]0innovate511 ITPUB个人空间lC/]*L*V
查看个人资料
$jhY5Am`6m,~4G$Zzh0 更多选项 2006年2月26日, 下午1时46分
%\F4V!F&rV#OkR/[0发件人:"innovate511" <innovate...@gmail.com>ITPUB个人空间hO A#XS%w
日期:Sat, 25 Feb 2006 21:46:45 -0800ITPUB个人空间8v9_\{y*j)n l
当地时间:2006年2月26日(星期日) 下午1时46分
V)f ]:d:~q%h0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
KO9?!Cciih0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间RU&dqVIW
楼上有没有想过,dm独立一个逻辑块出来,供前端查询?我前面提到过,DM可以是很丰富的一大块,既可以丰富DW的事实表,也可以丰富出来供前面所有应用使用,再复杂的应用,最好的办法就是分层或者分模块。目前我见过得项目中,这种方式应该是最好的,还有其他疑问么?
KW,P Ahk?v1C0ITPUB个人空间(u z%[7~[0o'm^
之所以最佳的办法是在DM这一层供客户查询,就是考虑到了客户复杂的,批量的查询需求。在ODS查询的话,客户需要一个复杂的查询,难道你需要关联好多大表,如果实在太难,你就对客户说,不好意思,逻辑太复杂,实现不了?客户肯定就会纳闷,既然你能实现复杂的报表和OLAP分析,为啥我复杂的查询不行呢?
4mww-p!VQ0
d7P5w5wZTU,m0还有,ODS层在绝大多数项目中,是供DW的数据源,不知道你把ODS作为查询数据源后,DW是否通过直接通过各个数据源直接装载呢,还是ODS也担当这个功能呢?ITPUB个人空间^/T;K+]h/DP5p!J
ITPUB个人空间(M2`&{^8x f/fB
至于如何保证装载和转换的性能,在设计中,设计者总体思路是估量项目的数据量和业务量,然后就可以定论如何分层,分表如何分。kimball他们在书中只是写了大概要有staging
-a _,xwIH0area,ITPUB个人空间h9MN;U%v%j5vE
conform层等,其实现实的大型项目中,还可以多加一些过渡层,以保证效率。因为不同项目选择ETL方式不同,有的选择使用工具,有的选择自己开发。如果自己开发的话,所有转换都在存储过程中进行,对于海量数据来说不是最好的办法,因为占用数据库的资源太大。建议把数据拿到c/java等程序里转换后,再load回去,减少数据库负担。这里说到了部分软件工程的问题了。
uf,B`I"OUK m/iSn0 ITPUB个人空间GbzC J7r4z%_

%G8C)DdQ oSu B0 ITPUB个人空间SoQ$u|0N!m
dumpedjoe ITPUB个人空间'AmrK(]/a/qj;@
查看个人资料
e:`d7u QvQ0 更多选项 2006年2月27日, 上午9时12分
NM9AV)BrHR-G0发件人:"dumpedjoe" <dumped...@gmail.com>
#t\z9](g\0日期:Mon, 27 Feb 2006 01:12:42 -0000ITPUB个人空间Z9E|;oQhD
当地时间:2006年2月27日(星期一) 上午9时12分
5~/b/[E%^g~0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
*O"JL2J.i#{D$h0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
H$kP6G(t7nK4[s2p0目前我见过得项目中,这种方式应该是最好的,还有其他疑问么?ITPUB个人空间jK8Nx*b
- :-))))
0FF hD5S `w0客户复杂的,批量的查询需求。在ODS查询的话,客户需要一个复杂的查询,难道你需要关联好多大表,如­果实在太难,你就对客户说,不好意思,逻辑太复杂,实现不了?
q'BSL6_b+I `Z!H^0- 明确?聚合!
o6[ GOR_.L i0ODS层在绝大多数项目中,是供DW的数据源 - ???ITPUB个人空间 Q+z.Y5~Z;f
如果自­己开发的话,所有转换都在存储过程中进行,对于海量数据来说不是最好的办法,因为占用数据库的资源太大。建议把数据拿到c/java等程序里转换后,再load­回去,减少数据库负担。这里说到了部分软件工程的问题了。-ITPUB个人空间!l |DPUT5Nk.Es
ITPUB个人空间?&?jG#V

&GR8N"}0Gx"~(e0 ITPUB个人空间eTd"j/opL%g

J5ynf"v cT)A0dumpedjoe ITPUB个人空间EX$G |dx$C!j
查看个人资料
A9{(~ Mj0YB0a R0 更多选项 2006年2月27日, 上午9时23分ITPUB个人空间@ LZ#G bijo
发件人:"dumpedjoe" <dumped...@gmail.com>ITPUB个人空间7gl'E i8{[qr6r
日期:Mon, 27 Feb 2006 01:23:33 -0000ITPUB个人空间i/l!}C PK\"B
当地时间:2006年2月27日(星期一) 上午9时23分
q S|wd6kbC0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间+AY8y7e7o5LR\N C
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间#N5sd/O W C
CIF有专门的章节描述ODS,ODS有以下特点:ITPUB个人空间+lS]'GZA9r
面向主题的
V ]n ]pQ cy0 集成的ITPUB个人空间D yao7y$|5u
易变的ITPUB个人空间 zv#u~1P#F
明细的ITPUB个人空间2q@ Rh5w+K~)r }p
反映当前数据值的ITPUB个人空间FUa%]9mp^j
ODS是企业数据架构中最为复杂的一种形态,既要满足数据事务操作要求,又要满足数据分析要求,中国电信的CTG-MBOSS规划中对ODS有比较明确的要求,但在CTG-MBOSS规范中,ODS也做了一定的变更处理。在云南电信以及上海电信的ODS系统建设中(云南电信ODS已经初验,上海电信的ODS算是上线了),ODS的定位就比较模糊,其主要功能是给数据仓库提供数据,但大致来讲,ODS有以下四种类型:
|'C],N3UK2L"R+i0 IITPUB个人空间O!z P LC2V{!S
类ODS,与应用系统的数据延迟为1~2秒,实时或近似实时
U#oq [%aT9H!d0ITPUB个人空间e {E3DT
II 类ODS,与应用系统的数据延迟为2~4小时
-U4C`"L5UUMw!Yku0 III 类ODS,与应用系统的数据延迟为12~24小时ITPUB个人空间'`x)Q d/\:z#y
IV 类ODS,数据仓库中部分决策分析数据回流至ODS中
r@Z`}F"~*|"ba0目前应用的比较多的是IVITPUB个人空间UJ)Q7?r
类ODS,因为一旦将决策分析结果加载到ODS中,重要决策信息的高性能联机支持将成为可能,举例如下:ITPUB个人空间,jkk K#k E |&p
客户细分与评价
$mA\N]c'Io6f0 银行客户贷款
.^0W w6e)L0ODS与数据仓库的重要区别如下:
2~}i hXj0 ODS只存储明细数据
K e%k1~+Z"b0 ODS中存储的数据一般不超过一个月
,u|?`!\S.V0 ODS支持事务更新操作ITPUB个人空间o.iN2I;Xn
在ODS中存在3种不同的时间窗处理:ITPUB个人空间LR.kWD
ITPUB个人空间C\ VT{-a*|8f!I
OLTP时间段,与应用系统保持同步更新(通常采用消息机制)ITPUB个人空间$m7\4W4J~ Ms

4W,{SSd \2gs0批处理时间段,从应用系统中接收批量数据(通常采用ETL的方式)ITPUB个人空间_ qZ7Tl
ITPUB个人空间#g E(`WN @ Y3j;]9k z
DSS时间段,从数据仓库中接收决策支持数据ITPUB个人空间E\W{ ck4}
由于ODS需要满足上述不同处理类型的性能要求,导致ODS无法对任何一种类型进行优化,只能进行折衷考虑,这也正是ODS的技术复杂原因所在。ITPUB个人空间"k:~r ~%i!Hz

S9?/M i\6B yM-a0 ITPUB个人空间2zJO r"p
ITPUB个人空间(H {`|\ ^ aq

R(z9qoQ-CPN0dumpedjoe ITPUB个人空间*u6Z-^0D_vw.y
查看个人资料ITPUB个人空间CBI E,iM
更多选项 2006年2月27日, 上午9时46分
b l]3S#G0发件人:"dumpedjoe" <dumped...@gmail.com>
h/j x6[4Pm|*V0日期:Mon, 27 Feb 2006 01:46:01 -0000ITPUB个人空间?&G)bfC?0J
当地时间:2006年2月27日(星期一) 上午9时46分ITPUB个人空间0@&i#qFI q7\;H'B
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间1rR _;O6HJ8z Z
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
r({ A*D+d(?3Di0The frequency of update and degree of integration of an ODS vary based
v-`E b!H5r0on the specific requirements.ITPUB个人空间t*}TB1yU{.u`MH
Most commonly, an ODS is implemented to deliver operational reporting,
G,|d F$DW0especially when neither the legacy nor more modern on-line transactionITPUB个人空间s5I$~B6O_
processing (OLTP) systems provide adequate operational reports. These
l9P'Gmx&_S?&R0reports are characterized by a limited set of fixed queries that can beITPUB个人空间"S:bB ZNNzkx
hard-wired in a reporting application.
}!R"U7T7Myd0
hE b!L6K0please reference page 41 for more detail information in <Dimension
7U2U9zgi~gs k0Modeling - the Data warehouse toolkit> by Ralph Kimball.
U-f cJEx0
]Gv8?9CAP0
^^&['DY0 ITPUB个人空间ihpO ]C{
innovate511 ITPUB个人空间1i_M8Un ^A
查看个人资料
F C0G[_"H,k0 更多选项 2006年2月27日, 上午11时19分ITPUB个人空间SH-`H YP~m
发件人:"innovate511" <innovate...@gmail.com>ITPUB个人空间f'e}D{oZ:y
日期:Sun, 26 Feb 2006 19:19:30 -0800ITPUB个人空间 t6f#c/_#i
当地时间:2006年2月27日(星期一) 上午11时19分
5M*Z7k{ba$Wh0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间8J-l*m4Q4x)S
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
F"f/@ e2s'y.x0所以我对现在很多人对概念的操作深恶痛绝,搞了半天本质的东西还是没变。IV类ODS就是我说的那种形式的DM,非要说成ODS,从结构层次来说,它已经是面向最终客户应用,被最终ETL的,准备好的数据,在传统定义中,应该类似DM的作用。所以无论怎么定义,本质的东西要抓住。正如我说的,DW的数据源来自聚合业务系统数据的ODS,这个ODS的功能就是集合的、比较干净的OLTP系统,而后面有定义个IV类ODS,从架构层次来说,已经变了本质,是经过ETL的,符合客户查询需求的。两者一个在系统架构的前面,一个在系统架构的后面,为何要使用同一概念,标新立异?莫名其妙。ITPUB个人空间M nA$xQ:m~T
ITPUB个人空间jM9@"fo$`
还有比较反感的定义就是什么实时数据仓库,无论你怎么设计数据仓库,始终脱离不了“历史的”特性,何来实时之说,蒙客户呢?现在客户懂得可比以前多了。
$k/R%U'G1?tj \0
4oT|'pK$D\B0
#O5XJ I J;n&^0 ITPUB个人空间2b!J@@#p[d
innovate511 ITPUB个人空间Oqvk?q@E_w
查看个人资料
6c:@|1|7Q:Y4JB0 更多选项 2006年2月27日, 上午11时56分ITPUB个人空间1Lb^V3n,hiN
发件人:"innovate511" <innovate...@gmail.com>
"IB!F!QDG8@0日期:Sun, 26 Feb 2006 19:56:02 -0800ITPUB个人空间g/x?6f"dq0b Vz J
当地时间:2006年2月27日(星期一) 上午11时56分ITPUB个人空间Hw5s/hG9~)Y+w2I4w6o t
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间"Jf*O+sC4L@
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
FH7\f3S+G:m0I do not have this DOC in my computer now, and it'd been written nearly
%`QE1hr Dm _010 years, Kimball also said, Source systems are not queried in theITPUB个人空间x f+XZ9N-N]j
broad and unexpected ways.ITPUB个人空间]zX;{x

Y a"{UN.@$hJh0Since DW has been developed over 20 years, concepts and methods have
9{)Fzc{v o|0been prompted too, so for whatever DOC of whoever wrote, we needITPUB个人空间B$bv;S"a8H
analyze first, which can solve our problem, which is the best methodITPUB个人空间A|*K:l1{$C
for our customer.
NMj:m0Q4O!@ }0ITPUB个人空间p5G/~F5^~WN
ITPUB个人空间J,k ~ j{&^
ITPUB个人空间3E/G tW3]u0_%|
dumpedjoe
j9n [4x:{e V~0查看个人资料
]8A X Q+e2ut0 更多选项 2006年2月27日, 下午12时00分ITPUB个人空间]w]'WPn[
发件人:"dumpedjoe" <dumped...@gmail.com>
$s#\GD|~gd-b0日期:Mon, 27 Feb 2006 04:00:14 -0000
du3s?(s6R0当地时间:2006年2月27日(星期一) 下午12时00分
&Fhxy s9kg0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
t|u8? PV!v0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间 X,oC wT K2v c C
innovate511过于激动了,呵呵。
i8l j*@.c:{ n:ZQ0我认为把项目中成熟的东西用概念“封装”一下是走向成熟的标志,不是包装啊,个人观点,就好像kimball把dw分为四个component,几位老大都是做概念封装嘛,有能出书而且易懂顺便搞点小钱。
X/PX8ui6o|_b0
@3wuG0I2bW$Di0我想大家早就了解了概念的相对性,例如实时,现在的客户不好蒙哦,但是和他们说实时也不至于让他们如此狂躁,呵呵。
H#@B.] ES"w4^0ITPUB个人空间"~ Qu:c,@;x-j
不说了,到此为止,言语如有不敬之处,innovate511休怪,非我本意,就技术问题讨论讨论而已。
u&Vn!]j3Rst0
YV s8`EE0z0 ITPUB个人空间ddp3wFf5a|
ITPUB个人空间\w8F3ik3YaD#vf9fI

L6JS"MnM0刘庆 ITPUB个人空间5\]'B$W#]fYP
查看个人资料ITPUB个人空间+d(N Qp0m2o`%w
更多选项 2006年2月27日, 下午12时22分
%w@v'~6[v)PR7x%Lk|0发件人:"刘庆" <happys...@gmail.com>
&WEK6` oTW0日期:Mon, 27 Feb 2006 12:22:27 +0800
^B8n^#i+d0当地时间:2006年2月27日(星期一) 下午12时22分
*lwH3f;K @x$Wk0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间E9xp.U,a:u.xp6e*T
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间A+N7xij{r/c[

?Ke1Y5?#| P"x0对于innovate提到的"第四类ODS就是之前提到的DM,并且是面向最终客户应用的"说法,在下不赞同。ITPUB个人空间jE;Z~x l3w(z7e

;G1gCJ LgDl0而对于dumpedjoe说得"第四类ODS是目前我们项目常见的",也不是非常认同。ITPUB个人空间{X;[(b4KO"xJ n
ITPUB个人空间:Yf g?M5H;f?,I-D
这种ODS是一种比较理想化的,但至少在我所经历的项目中从来没有过。但奇怪的是,在我们第一个项目中就考虑到了将分析的结果返回到ODS中,比如客户的信用度评分、价值度评分等。然而这还不能起到作用,所以最后摒弃这种做法。这可以和电信经分里面经常提的"闭环反馈"有些关联吧。然而这不是技术的事,还得看最后分析的结果是否融入业务的流程里面,例如客户真的能够用信用度模型来给每个客户评分,显然,现在还不能做到这一步。ITPUB个人空间'O^)nz*u*PTi

P(At_Y2iJL'{M ~0可以说,BI系统的此类模型被认可的不多。因此,也谈不上将分析结果返回到ODS,那是无用之举。ITPUB个人空间I"M)~a&O`X(j`
ITPUB个人空间O r'oC!@7y(u_?:j
但即便将这些分析结果返回到ODS,并不是说ODS就面向客户应用了。ITPUB个人空间"Z6l9f&qkGl9h

:h9xaGX0数据仓库是干什么的,保存企业活动历史数据的,这些数据反映了企业的生产、销售、财务、市场活动的一举一动,而数据分析显然也是企业活动的一种,当然也有必要记录它们的历史。因此,从DM中将数据返回给ODS,用"返回"这个词有些不准确,此时,DM已经像是一个数据源了,可以将它和ERP、CRM系统同等看待。这些分析结果,例如用户信用度吧,同样是用来作分析用的,可以它们进行聚类,评定A、B、C等级,作为OLAP的维度等等。
3yO/@Jqt9O0
5T+Z#]4Q7uE0看我说的有道理吧,嘿嘿。
$\K$yY};{Y%d0ITPUB个人空间^5[ X,?;S9}.| \ ]
On 2/27/06, innovate511 <innovate...@gmail.com> wrote:ITPUB个人空间]#T5|i ^l!a

}Mr6w [CY G QB%|0- 隐藏被引用文字 -ITPUB个人空间$H(hDF9a0X xg:z5Sc
- 显示引用的文字 -ITPUB个人空间"I:c P(A$dJls [-\&xA

;X4r'WUn0> 所以我对现在很多人对概念的操作深恶痛绝,搞了半天本质的东西还是没变。IV类ODS就是我说的那种形式的DM,非要说成ODS,.....
5g$f*]6] MZ8a]L{0> 还有比较反感的定义就是什么实时数据仓库,无论你怎么设计数据仓库,始终脱离不了"历史的"特性,何来实时之说,蒙客户呢?现在客户懂得可比以前多了。
z3n9W2\J:O A0 ITPUB个人空间 }ACV"X-q

T(Rf/}'X0innovate511
w0Bz,`l0查看个人资料
5T7Xh3oQ exy0 更多选项 2006年2月27日, 下午12时35分ITPUB个人空间0wB#IT-r t
发件人:"innovate511" <innovate...@gmail.com>
hj3N5E#y ?^D0日期:Sun, 26 Feb 2006 20:35:32 -0800ITPUB个人空间Y9N5o}wS5^^
当地时间:2006年2月27日(星期一) 下午12时35分
6Zm|1d0`.|0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
\9b~^8`#ea.W&|0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子
!` g g9`Gqa0呵呵,我说话不是针对某个人,因为很多地方都在炒概念,我比较反感,我和一个业界朋友一样,赞同用最朴实易懂的方法,有层次有序地给出项目方案,做好项目,这才是客户真正想要的,而不是简单的概念炒作。
/A7}/e6SU0 ITPUB个人空间I:FnAH0Z)B6G
ITPUB个人空间(c`'R%n(\n]^
ITPUB个人空间1c9i!\-fAm`
dumpedjoe
6K"Lx~?0查看个人资料ITPUB个人空间gN2cw Jgo
更多选项 2006年2月27日, 下午1时39分ITPUB个人空间mV/xY/bJ
发件人:"dumpedjoe" <dumped...@gmail.com>ITPUB个人空间qXhamJ5q
日期:Mon, 27 Feb 2006 05:39:21 -0000ITPUB个人空间AZJe^*cte?
当地时间:2006年2月27日(星期一) 下午1时39分
:c,gG@`qh'A0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间V3?,E;z3Q!Y4\
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间u6m'V7RiK2B
可以再探讨一下,第四类ods是比较实际的,对于国内的客户来说,因为种种原因,一般都不愿意将dm中的分析结果分享(比返回和回流应该要好理解些,但数据流向不直观,呵呵)给使用ods的操作型业务人员,从技术角度来说实现这一点并不难,主要是应用对象的不同导致了很少采用该方案,而在我经历的一些项目中,客户确实倾向采用该方案,因为组织架构的不同,对于客户信用度以及贡献度等等需要进行主题聚合或跨主题聚合的指标,能够提供给操作型业务人员作为客户评估的一个参照是很重要和必要的,这就类似于SE中的PDCA循环。
A4[5n3Cvh*i+x#bC o0我想此方案应用的差异和组织结构密切相关,组织结构和该组织在业务领域的成熟度又有关系,这应该是当前国内应用较少的一个原因。
j,T'X t|HB7V0ITPUB个人空间p4Xi6Q`WQ1I
ITPUB个人空间bei5Tc#jI
innovate511 ITPUB个人空间O$pC;`(I
查看个人资料ITPUB个人空间 `1E#\v R8w%w
更多选项 2006年2月27日, 下午4时42分ITPUB个人空间Q(gb hW
发件人:"innovate511" <innovate...@gmail.com>ITPUB个人空间g0N j:Yh%B6f
日期:Mon, 27 Feb 2006 00:42:19 -0800ITPUB个人空间"^r [C:\I?EHw
当地时间:2006年2月27日(星期一) 下午4时42分
0t-K` f+d9r+X0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)ITPUB个人空间1UJhx6x*E
答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间/] y2ux \3|
anyway,ITPUB个人空间FC5Bk w-`
如果项目实际情况是,ODS使用的机器有宽裕的负载,而DM的机器很一般,不能给客户足够的支持,ok,
+yns&s/Cv7p0你可以把这部分工作拿到DOS机器上去完成,只要能准确、按时完成客户的需求,就是好的项目。但是把这个层逻辑上归为ODS层太为牵强,别人很可能不知道你想干什么。
!U@%{F+P P0
q.C)Eo TR/^ CA0
c5\a"E jh0 ITPUB个人空间7`_(nR*Y_N6BOn
happy
v[ ]8E,vu#U)r0查看个人资料ITPUB个人空间Soc+X#|
更多选项 2006年2月27日, 下午4时51分
\s!UM2UF4U$i L Q0发件人:"happy" <xiningd...@prient.com>
XG,C3oh0o Ip0日期:Mon, 27 Feb 2006 16:51:2 +0800
mN}2q']r i&y @0当地时间:2006年2月27日(星期一) 下午4时51分
y {ci%^8A;n RN0主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
'Z-u:`K"r0SU0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间/HoZ(yy6HA*ew YPM
我还是老老实实的从41页开始重新看了一遍Kimball关于ODS的描述。看了三位关于ODS的讨论,我也结合自己的经验说两句。
U)P t#{ttU"m)k0我想在项目中我们进行架构设计时,一定会考虑这么几个问题:ITPUB个人空间m$Y"|l k3D3v
a 什么是ODS?ITPUB个人空间,X!_!Gu k7bc
b 针对现在的需求是否需要采用ODS?ITPUB个人空间qa1a[,{8}a%d
c 如果用,ODS将要在架构处于什么角色,要完成什么功能?ITPUB个人空间 L;QI"{0qQ"dQ
第一个问题,大家都已经很了解了,操作型数据存储区,是为了方便数据仓库而存在的。ODS既然是存在于OLTP和DW之间,那么在ODS中的数据就肯定与OLTP和DW的不同。在ODS中是保存一个月的数据,还是二个月、三个月?是只保存原子数据,还是进行一些聚合的处理?这些都应该和你想要ODS完成什么功能有关。ITPUB个人空间} PP(wO%\y7N
什么功能没有ODS就肯定实现不了?当然没有了!ODS只是为了方便DW的实现而存在的,方便ETL的实现,当然也可以让它实现一些数据的展现的功能了。innovate511肯定是从设计角度考虑,每一个层次都要有明确的功能,如果也让ODS来实现后台实现的数据展现功能,从设计上来看就显得混乱。对吧?并且对于ODS身兼ETL、展现、还要加上数据更新(ODS的特点)三职,是否可以很好处理多个数据源的转换、更新、是否保证数据展现的准确性、以及性能如何控制等方面考虑的。从技术这个角度看,ODS确实有些任务不明确,可能由此会导致数据在ODS层上如何存在的问题。作为DW的数据中转站,为了和多个数据源同步,它一定要保存最明细数据;如果要在ODS上实现数据展现(我想应该是从OLTP中分离出来的查询),那么为了性能一定要进行不同粒度的汇总,汇总的粒度应该也和数据仓库中的粒度不同。是有些乱!但是我倒是不反对这么设计。理由:我认为在ODS中实现的查询,很来应该是存在于OLTP中的,应该与在DM中的数据分析不同。因为这是从业务角度考虑的,在实际业务中,这部分业务需求是很频繁的(相对DM中的),所以把这些相对频繁、简单的查询从复杂的关联查询中分离出来也是一种设计方式。
GAR&I"c;fk&E0对于第四类ODS,就是刘庆说的闭环管理需求的实现。但是我有一个不明白的。为什么DM中分析的结果要返回到ODS中呢?为什么不返回到OLTP中呢?我们决策出来的结果,应该是为了影响实际业务的流程的,而不是给ODS操作者看的。不知这样理解对不对?
i0j5PWY{9jX1_0说到实时数据仓库(准确的说应该是near realtime),我想应该也是从业务角度出发的一种设想。innovate511老兄肯定做过很多国外的项目,国外企业本身的管理水平应该比我们高。对于如何使用数据仓库、使用决策分析的结果、并且如何应用到企业日常的管理上应该都有很多的经验。我想还要请innovate511老兄多给我们讲一讲。near realtime data warehouse就是想把从历史数据中分析出来的结果与没有进入到数据仓库中的数据结合在一起使用,比如:在税务行业,每月企业报税就是集中在三、四天,在这几天中数据的变化会很剧烈,没准刚才还没有完成任务,下一分钟就完成。税务的领导就是想实时看这些数据。所以我们在给客户实现准实时数据仓库时,采用EAI和DW相结合的方式。ITPUB个人空间VGff9y8B qWWW

nP#m4hvMe0ODS正如几位所讨论的,在数据仓库架构中是非常重要的,我们这么花精力讨论是很值得的,也希望有更多的话题把我们聚到一起。:)ITPUB个人空间+mUzQ!?(YRa$E

i$DI?J9m Q(sg6|0thanksITPUB个人空间R/cc Y9fS%[
        致
cLW b/w0礼!ITPUB个人空间4] o-G|h'qt
happyITPUB个人空间X(deC0@N
          2006-02-27
`^DZMo0
;P:|d9H5P1Y0 _ _ _ _
W[5g0F7t0 /_/_/_/_/ITPUB个人空间h1IT)ymH-P+X0y
/_/_/_/_//ITPUB个人空间i"UMqt M E_ YV ~
/_/_/_/_///
PLJi*S#p(@0 \_\_\_\_///
Xe N(oB9?X0 \_\_\_\_//
Xi&r @ Rf0 \_\_\_\_/
F0d2`:p j,U0
Pu Fy3D/Ho0丁西宁
KkOFy | Ct8m\0数据仓库咨询顾问ITPUB个人空间YyD9I'pWCF
蓬天信息系统(北京)有限公司
!C c/s1SE]"h0Prient Corporation
DAj |t5s0Power Realtime Intelligent ENTerpriseITPUB个人空间o9}(M7~ L b

q1[v)[q8b0北京市朝阳区东大桥路8号尚都国际中心25层
&sn3r.G U0电话:8610-58700800 ext 843ITPUB个人空间8K\w|Lm.\2Y\gs+q
传真:8610-58700800 ext 808
M)i\P;ko0手机:86-13910959723ITPUB个人空间6v/_ R w L t
E-mail:xiningd...@prient.com
Zq/F~5x)di+r\0MSN:happyj...@hotmail.comITPUB个人空间*x1ZJfnM+N Y#H!j
BLOG:http://java.mblogger.cn/happyjava
V:h pY&v@0http://www.prient.com
X"Z(^$G MUc'[c0
d:XJJ}-ad0
A$N2FSs-zJu e m [0 ITPUB个人空间`!dq1@-rZdz
innovate511
1fij+i6Q0];z%_2K|0查看个人资料ITPUB个人空间m&bv#cK
更多选项 2006年2月27日, 下午5时40分
|)D$Zi!Dy M"c_0发件人:"innovate511" <innovate...@gmail.com>
{Y3@5s;|D0日期:Mon, 27 Feb 2006 01:40:50 -0800
!v9v&h%F{0当地时间:2006年2月27日(星期一) 下午5时40分ITPUB个人空间'g$H:Wa}
主题:Re: 怎样的架构设计才是真正的数据仓库架构(原创)
u\?1k0~ IM3s0答复作者 | 转发 | 打印 | 单个帖子 | 显示原始邮件 | 报告此帖 | 查找此作者的帖子ITPUB个人空间yMps0wK7p
首先我要说明的是,查询功能方面,OLTP系统架构没有经过DW汇总过后的conform
C.KtK;m C0table强,这是很显然的,客户的查询不会简单地按照OLTP系统的逻辑,一个一个得查询,可能是一个复杂的查询,这个时候OLTP要做的事情就是多表关联,而我们的汇总conformITPUB个人空间 q/i,A7Q3} w(D
table是经过聚合的表,不需要关联就可以满足客户的各种复杂的查询需求。这是我不明白为啥要在ODS层做数据展现的原因之一。
&a0UY h6`J6Z)Y[0ITPUB个人空间G2| bG5j7]v{2?,z
其次,既然ODS是OLTP系统到DW之间的一个逻辑层,那就没有经过复杂的ETL,对不?举个很简单的例子,某大客户经理要查某区县欠费100元-200元之间的属于某大型单位的年龄在30岁以上客户详细资料已经最近的消费明细,那是否要在ODS中关联好几个表来达到他们频繁的查询目的呢?
r#d.Lo9q0T!U3Rm Z0
hJd*j ~:} J0我也做过很多国内项目,客户的有的及时性需求是存在的,但是不普遍,没有非要给出个新概念给客户感觉这个新概念肯定ok的必要吧,除非这些客户对数据仓库的了解都比较业余。所谓nearITPUB个人空间*}4B `3k%CZ.s ^
realtime只是针对某个很棘手的分析主题,能快速相应客户信息的变化,这种情况一般为单一主题的情况,完全可以和“传统DW”分开来设计和实施(看具体情况,只是逻辑上至少要分开)。这样的需求一般数据量不会很大,这是能快速相应,接近事实的前提,技术和设计上没有什么需要革新。
kz{-h)x0

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-05  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 22154
  • 日志数: 65
  • 建立时间: 2007-12-07
  • 更新时间: 2008-08-31

RSS订阅

Open Toolbar