Happy 20060922

ODS中保存近期的数据,而数据仓库中保存比较长时间的数据。近期的理解应该是根据自身的需求而定,一星期,一个月,三个月,或者一年。当数据量大于我们设定的时间条件后,是不是就删除了?这是问题一。

我们现在一个项目的ODS设计是通过物化视图的方式从数据源把数据刷新过来,每天进行增量刷新的操作。这样以来,ODS中的数据就和数据源中的数据量就是一样的了。

我现在有点想不清楚了:

(1)首先这个项目的ODS,除了作为数据中转区外,没有其他的用途,只保存近期数据和保存全部历史数据好像没什么区别

(2)在什么情况下,在ODS中只保存近期的数据是最佳设计?

(3)因为忘了在ODS中只保存近期的数据说法的出处,所以不知大家有没有曾经这么设计过的?

土包子 20060922

个人认为ODS主要是与业务系统隔离的明细数据库,主要是对明细数据的查询不再依赖于OLTP业务系统,其实ODS本质上仍然是个OLTP系统。只是对多个源OLTP源数据进行整合, 便与企业级整合查询.

为了减少对业务系统的性能影响,ODS不作数据转换,只做数据抽取工作,也就是数据中转区data staging. 之所以保存近期数据,主要是基于性能处理的原因,其次还有物理存储上的原因当然也可以考虑采取把当前数据和历史数据隔离的表存储方式,多存储数据。

ODS可以理解为数据仓库中的原数据层

以上浅见,不吝赐教

Goldenfish 20060922

我的理解: 如果ODS仅仅是作为中转而没有数据处理的话,那叫staging或缓储,就称不上ODS了吧。ODS 会作一些数据的整合与清洗. 便于DW层更容易进行聚合.

ODS 要进行按主题的整合和存放,比如把来自营销的数据和来自客户的数据中的关于客户的收入归拢到一起,做编码的标准化,以便于组织机构、产品类型这样的编码是统一的;查起在北京、A类产品的收入,直接在这两个维度上group by取sum就行了。这样的数据整合对装载进DW也是有好处的。

ODS中的数据详细程度可能比DW细,例如DW中只保留帐户日均余额,但ODS中可能存放帐户的日交易明细,在从ODS进入DW的时候进行一次日均余额的汇总;这样ODS的数据就只能保留3个月这样一段时间的数据。

ODS中的数据可以通过EAI的方式进行更新,而DW中的数据只追加不作更新。

土包子 20060922

在我所在的项目里,还有一个阶段用来处理你的问题。

叫做数据仓库层(姑且这么称呼吧),用来按主题进行数据的整合和存放,主要负责维度数据的清洗转换和标准化工作,为后来的数据聚合做准备工作。然后是数据明细集市层(存放第一层聚合数据),主要是根据主题建模生成相应的指标等等。

我还是这样认为:ODS主要负责业务数据的抽取,且基于性能原因,只做短期数据的存储,长期数据的保存需要通过一张历史表作保存(也可以保存在ODS中),例如短期数据保存3天,长期数据保存2年,定期将短期数据移至历史表。

此外DW中的数据如同ODS等各层的数据不做更新是不太可能的,完全取决于用户的要求了,尽管存在性能和效率上的问题。
 
ODS的一个重要功能是缓解业务数据库的压力,跨系统的、应对常用查询的,所以才会

1. 实时更新以反映数据变化。

2. 是细节的,数据详细程度与源系统是同级的;

3.整合的,因为要处理跨系统的综合查询。

ODS可以不是staging到dw的一个必要环节,而是可选的路径。例如,源系统通过staging到ODS,也可以通过staging到dw,ODS也可以到DW等等。
   
多谢goldenfish与包子兄的指点!

两位由于需要实现的功能不同,所以导致实现的方法不同。

不管是数据缓冲区、ODS、DW还是DM,它们都是为了完成某种功能需求而存在的,数据在从数据源到DW过程中,我们可以实现下面几种应用:

(1)分离业务系统中的查询;
(2)数据的清洗和转换
(3)整合多个数据源中的数据,处理跨系统的综合查询;
(4)提供各种粒度汇总的查询

不同的应用对于数据的结构、数据的粒度、数据的整合程度都有不同要求。我们现在这个项目,数据源只有一个,也没有分离业务系统查询的需求,所以搞得好像连ODS都不用设计了。

posted on 2008-06-19 00:42  Alex.Zhang  阅读(2047)  评论(0编辑  收藏  举报