热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

数据仓库(DW)与操作型数据存储(ODS)

数据仓库(DW)与操作型数据存储(ODS)1概述系统应用集成中一般对各系统中数据分为两类操作型数据:它有细节化,分散化的特点决策型数据:它有综合化,集成化的特点数据仓库概念的提出也把数据处理划分为
数据仓库(DW)与操作型数据存储(ODS) 


1 概述
系统应用集成中一般对各系统中数据分为两类
操作型数据:它有细节化,分散化的特点
决策型数据:它有综合化,集成化的特点
数据仓库概念的提出也把数据处理划分为了操作型处理和分析型处理两种不同类型,从而建立起了DB-DW的两层体系结构。但是有很多情况,DB-DW的两层体系结构并不能涵盖企业所有的数据处理要求,比如有些实时性决策问题,它要求获取数据周期不能太长,而且也需要一定程度的汇总。这样的问题可以借助于DB-DW的中间层ODS(操作数据存储)来解决。它象DW一样是一种面向主题,集成的数据环境,又象操作型DB一样包含着全局一致的,细节的当前的数据。我们看下常用的几种系统应用集成需求:
我要了解企业目前的运转情况!(实时监控)
我要知道某地区近5年内的销售情况以制定未来的发展策略!(决策支持)
我要知道哪些是值得发展的优质的顾客!(预测)
提供企业内部和外部的有用信息以支持中期或远期决策
提供事实的全局信息进行实时监控与临时决策
要满足上面所有的需求,不管是传统的OLTP系统还是已经集成的数据仓库,都是很难完成任务的。由于这些原因,ODS应运而生。ODS可以看做是围绕主题进行动态整合的一种应用型体系结构,它有如下一些特点:
从应用子系统获取数据
提供几乎精确到每秒的企业整体应用状态
数据一旦过期就将转入DW
实时决策与预警提示
使用者多为前端业务人员


2 DW与ODS比较:


数据仓库
ODS
目的
决策支持
接近实时监控
共同点
整合数据
整合数据
 


面向主题


面向主题


不同点


静态数据


(延迟>24小时)


动态数据


(延迟>1秒)


 


历史数据


当前数据


 


概括性数据


细节化数据


 


3 应用集成方案比较


实施方案


实施结果


优势


缺陷


数据仓库(DW)


企业能够分析DW中的历史数据,进行中远期的规划


可以解决企业的决策需求


不能满足企业的实时监控和实时业务需求


 


操作型数据存储(ODS)


企业能够把握ODS中的当前综合数据,对企业的及时运行情况随时掌控


可以满足企业的实时监控和实时业务需求


 


不能满足企业的中远期决策需求


DW+ODS(如下图)


企业能够分析ODS中的当前综合数据,对企业当前运行情况进行宏观控制;能够分析DW中的历史数据,对未来进行合理规划


既能把握实时的企业运作情况,采取及时的应对措施;又能把握历史纵向概况,进行远期战略规划


 


 


 




图1  ODS+DW方案


 


4 三种类型的ODS:


类型一:以几秒为间隔的更新(非常贵、不常用、数据整合能力弱)


类型二:以约1小时为间隔的更新(常用、数据整合能力较强)


类型三:以约1天为间隔的更新(常用、数据整合能力较强)


ODS技术的引入和应用,为企业在日常经营中进行即时OLAP提供了一种解决方案使得企业无须建立一个“臃肿”的DW,就可以进行一些非战略性的的中层决策,来实现对企业的日常管理和控制,同时也能获得较快的响应速度


 


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


根据Bill.Inmon的定义,“数据仓库是面向主题的、集成的、稳定的、随时间变化的,主要用于决策支持的数据库系统”


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


在Kimball的<<数据仓库生命周期工具集The Data WareHouse Liftcycle Toolkit>>,他是这样定义的:


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都具备如下几个作用:


1)在业务系统和数据仓库之间形成一个隔离层。


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


2)转移一部分业务系统细节查询的功能


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


3)完成数据仓库中不能完成的一些功能。


一般来说,带有ODS的数据仓库体系结构中,DW层所存储的数据都是进行汇总过的数据和运营指标,并不存储每笔交易产生的细节数据,但是在某些特殊的应用中,可能需要 对交易细节数据进行查询,这时就需要把细节数据查询的功能转移到ODS来完成,而且ODS的数据模型按照面向主题的方式进行存储,可以方便地支持多维分析 等查询功能。即数据仓库从宏观角度满足企业的决策支持要求,而ODS层则从微观角度反映细节交易数据或者低粒度的数据查询要求。


在一个没有ODS层的数据仓库应用系统体系结构中,数据仓库中存储的数据粒度是根据需要而确定的,但一般来说,最为细节的业务数据也是需要保留的,实际上 也就相当于ODS,但与ODS所不同的是,这时的细节数据不是“当前、不断变化的”数据,而是“历史的,不再变化的”数据。这样的数据仓库的存储压力和性能压力都是比较大的,因此对数据仓库的物理设计和逻辑设计提出了更高的要求。
推荐阅读
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • Oracle 用户锁定问题及解决方法
    本文介绍了如何在 Oracle 数据库中检查和处理用户锁定问题,包括查询被锁定的用户、解锁用户以及调整登录失败次数限制的方法。 ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • Ext JS MVC系列一:环境搭建与框架概览
    本文主要介绍了如何在项目中使用Ext JS 4作为前端框架,并详细讲解了Ext JS 4的MVC开发模式。文章将从项目目录结构、相关CSS和JS文件的引用以及MVC框架的整体认识三个方面进行总结。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 两个条件,组合控制#if($query_string~*modviewthread&t(&extra(.*)))?$)#{#set$itid$1;#rewrite^ ... [详细]
  • 本文详细介绍了DMA控制器如何通过映射表处理来自外设的请求,包括映射表的设计和实现方法。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
author-avatar
岸本瑠可的秘密_344
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有