数据仓库与ODS的区别

个人总结

目前PM的成本库是从生产库抽取数据,对生产库的压力很大。可以考虑ODS或者数据库的Stanby方式实现

一、数据仓库

数据仓库存储报表,数据仓库是面向主题的、集成的、随时间变化的、非易失的、用于进行战略型决策的数据集合。

二、ODS

ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。ODS常常被作为数据仓库的过渡,也是数据仓库项目的可选项之一

三、数据仓库与ODS的比较

操作型数据存储(Operational Data Store,ODS)用于战术型决策,而数据仓库支持战略型决策。操作型数据存储在某些方面具有类似于数据仓库的特点,但在另一些方面又显著不同于数据仓库:

  • 像数据仓库那样,是面向主题的。
  • 像数据仓库那样,其数据是完全集成的。
  • 数据是当前的——或其数据处理技术允许这样,这与数据仓库存储历史数据的性质显著不同。 ODS具有最少的历史数据,而尽可能接近实时地展示实体的状态。
  • 数据是易失的和可更新的,这是与静态数据仓库的一个很大的区别。** ODS就如同一个事务处理系统,当新的数据流进 ODS时,受其影响的字段被新信息覆盖或更新。**除审计数据外,不保留其他的历史内容。
  • 数据几乎完全是细节数据,仅具有少量的动态聚集或汇总数据。通常将 ODS设计成包含事务级的数据,即包含该主题域最低级别的数据。
  • 在数据仓库中,几乎没有针对其本身的报表(报表均放到数据集市中完成);与此不同,在 ODS中,业务用户频繁地直接访问 ODS。

四、其它关于ODS的说明

ODS的定义

  1. 是操作型系统中的集成,用于当前,历史以及其它细节查询(业务系统的一部分)
  2. 为决策支持提供当前细节数据(数据仓库的一部分)

因此操作数据存储(ODS)是用于支持企业日常的全局应用的数据集合,ODS的数据具有面向主题、集成的、可变的和数据是当前的或是接近当前的4个基本特征。同样也可以看出ODS是介于DB和DW 之间的一种数据存储技术,和原来面向应用的分散的DB相比,ODS中的数据组织方式和数据仓库(DW)一样也是面向主题的和集成的,所以对进入ODS的数 据也象进入数据仓库的数据一样进行集成处理。另外ODS只是存放当前或接近当前的数据,如果需要的话还可以对ODS中的数据进行增、删和更新等操 作,虽然DW中的数据也是面向主题和集成的,但这些数据一般不进行修改,所以ODS和DW的区别主要体现数据的可变性、当前性、稳定性、汇总度上。

由于ODS仍然存储在普通的关系数据库中,出于性能、存储和备份恢复等数据库的角度以及对源数据库的性能影响角度,个人不建议ODS保存相当长周期的数据,同样ODS中的数据也尽量不做转换,而是原封不动地与业务数据库保持一致。即ODS只是业务数据库的一个备份或者映像,目的是为了使数据仓库的处理和决策支持要求与OLTP系统相隔离,减少决策支持要求对OLTP系统的影响。

ODS的作用

为什么需要有一个ODS系统呢?一般在带有ODS的系统体系结构中,ODS都具备如下几个作用:

  • 1) 在业务系统和数据仓库之间形成一个隔离层。
    一 般的数据仓库应用系统都具有非常复杂的数据来源,这些数据存放在不同的地理位置、不同的数据库、不同的应用之中,从这些业务系统对数据进行抽取并不是一件 容易的事。因此,ODS用于存放从业务系统直接抽取出来的数据,这些数据从数据结构、数据之间的逻辑关系上都与业务系统基本保持一致,因此在抽取过程中极 大降低了数据转化的复杂性,而主要关注数据抽取的接口、数据量大小、抽取方式等方面的问题。

  • 2) 转移一部分业务系统细节查询的功能
    在 数据仓库建立之前,大量的报表、分析是由业务系统直接支持的,在一些比较复杂的报表生成过程中,对业务系统的运行产生相当大的压力。ODS的数据从粒度、 组织方式等各个方面都保持了与业务系统的一致,那么原来由业务系统产生的报表、细节数据的查询自然能够从ODS中进行,从而降低业务系统的查询压力。

  • 3) 完成数据仓库中不能完成的一些功能。
    一 般来说,带有ODS的数据仓库体系结构中,DW层所存储的数据都是进行汇总过的数据和运营指标,并不存储每笔交易产生的细节数据,但是在某些特殊的应用中,可能需要 对交易细节数据进行查询,这时就需要把细节数据查询的功能转移到ODS来完成,而且ODS的数据模型按照面向主题的方式进行存储,可以方便地支持多维分析 等查询功能。即数据仓库从宏观角度满足企业的决策支持要求,而ODS层则从微观角度反映细节交易数据或者低粒度的数据查询要求。
    在一个没有ODS层的数据仓库应用系统体系结构中,数据仓库中存储的数据粒度是根据需要而确定的,但一般来说,最为细节的业务数据也是需要保留的,实际上 也就相当于ODS,但与ODS所不同的是,这时的细节数据不是“当前、不断变化的”数据,而是“历史的,不再变化的”数据。这样的数据仓库的存储压力和性能压力都是比较大的,因此对数据仓库的物理设计和逻辑设计提出了更高的要求。

五、ODS如何保持实时性

问题:想了解一下ods在保持实时性方面是怎么实现的,是业务系统完成ods的加载呢,还是做一个接近实时的etl过程,或者其它一些方法?
回答:呵呵,这个问题问得好!保持实时性有很多种办法

  • 1、利用数据库的特性,Oracle的logminer,SQLServer的分发订阅都可以实现,本质上都是通过数据库的日志分析来完成的。许多ETL工具即利用数据库的特性来实现实时操作。
  • 2、Oracle数据库的话有standby方式,也可以认为是一个ODS数据库,即脱离联机在线OLTP的功能,达到数据整合的目的就行了。
  • 3、Oracle的物化视图方式,也可以实现实时性的目的。当然也有一定的延迟!
  • 4、准实时性的,就是普通的ETL抽取,1小时~1天不等的进行数据的定期抽取!