数据仓库原理<3>:数据仓库与ODS
1. 引言
本篇主要讲述操作数据存储(ODS)系统产生的背景、定义、特点,以及它与数据仓库的区别。
在前两篇,笔者介绍了什么是数据仓库?为什么需要数据仓库?数据仓库系统的体系结构是什么?因此可能在读者心里已经形成了企业数据存储的DB~DW两层体
系结构的概念,但在实际应用中,并不总是这样,有时候我们可能需要ODS这一系统来搭建DB~ODS~DW三层数据体系,那么什么是ODS?为什么需要
ODS?ODS与DW的区别又是什么?下面将在第2-6节介绍ODS的理论知识,在第7节以电信运营商为例介绍ODS的实际应用。由于是学习心得,如有错
误或者不严谨的地方,希望读者批评指正。
2. ODS产生的背景
人们对数据的处理行为可以划分为操作型数据处理和分析型数据处理,操作型数据处理一般放在传统的数据库(Database,DB
)中进行,分析型数据处理则需要在数据仓库(Data Warehouse,DW
)中进行。但是并不是所有的数据处理都可以这样划分,换句话说,人们对数据的处理需求并不只有这两类,比如,有些操作型处理并不适合放在传统的数据库上完成,也有些分析型处理不适合在数据仓库中进行。这时候就需要第三种数据存储体系,操作数据存储(Operational Data Store,ODS
)系统就因此产生。它的出现,也将DB~DW
两层数据架构转变成DB~ODS~DW
三层数据架构。
那么,什么是ODS?
ODS是用于支持企业日常的、全局应用的数据集合。
(PS:这样定义,可能还是不清楚,看完下面3、4节应该就能明白~)
3. ODS数据的基本特征
ODS中的数据具有以下4个基本特征:
① 面向主题的:进入ODS的数据是来源于各个操作型数据库以及其他外部数据源,数据进入ODS前必须经过 ETL
过程(抽取、清洗、转换、加载等)。
② 集成的:ODS的数据来源于各个操作型数据库,同时也会在数据清理加工后进行一定程度的综合。
③ 可更新的:可以联机修改。这一点区别于数据仓库。
④ 当前或接近当前的:“当前”是指数据在存取时刻是最新的,“接近当前”是指存取的数据是最近一段时间得到的。
4. ODS的功能
(1)实现企业级的OLTP操作:
传统的操作型数据库往往只存放企业某一类业务或者某一个部门的数据,因此无法面向企业全局数据的OLTP,而ODS可以实现。因为ODS的数据是面向整个企业进行集成汇总的,克服了原来面向应用的操作型数据库数据分散的缺陷。
(2)实现即时的OLAP操作:
在数据仓库上进行OALP,往往由于数据量十分庞大而需要较长的时间。而在企业实际应用中,对于一些较低层次的决策,往往并不需要太多的历史数据,可能只需要参考当前的或者接近当前的数据就可以完成,并且要求具有较快的响应时间,因此数据仓库显然无法满足这样的要求,但是ODS可以实现。ODS中不仅有面
向企业全局的细节数据和汇总数据,而且规模比数据仓库小,具有较强的实时响应能力。
小结:通过3、4节的介绍,可以这样解释ODS的概念:
ODS是这样一种数据存储系统,它将来自不同数据源的数据(各种操作型数据库、外部数据源等)通过ETL过程汇聚整合成面向主题的、集成的、企业全局的、
一致的数据集合(主要是最新的或者最近的细节数据以及可能需要的汇总数据),用于满足企业准实时的OLAP操作和企业全局的OLTP操作,并为数据仓库提
供集成后的数据,将数据仓库系统中的ETL过程下沉到ODS中完成以减轻数据仓库的压力。
5. DB~ODS~DW三层体系结构
ODS和DW面向不同的用户,为不同的需求产生,因此都有不可替代的作用,两者相互结合、相互补充。
ODS在三层体系结构中扮演着承上启下的作用。
一方面,ODS在原来独立的各个DB的基础上建立了一个一致的、企业全局的、面向主题的数据环境,使原有的DB系统得到改造。
另一方面,ODS使DW卸去了数据集成、结构转换等一系列负担,对DW的数据追加通过ODS完成,大大简化的DW的数据传输接口和DW管理数据的复杂度。
ODS系统的建设,弥补了DB~DW两层体系结构的不足,但是ODS并不是必需的,当企业并不需要操作型集成信息时,基于DB~DW两层体系结构是较优的,如果需要,那么DB~ODS~DW三层体系结构则是较优的。
6. ODS与DW的区别
ODS在DB~ODS~DW三层体系结构中起到一个承上启下的作用。
ODS中的数据虽然具有DW中的数据的面向主题的、集成的特点,但是也有很多区别。
(1)存放的数据内容不同:
ODS中主要存放当前或接近当前的数据、细节数据,可以进行联机更新。
DW中主要存放细节数据和历史数据,以及各种程度的综合数据,不能进行联机更新。
ODS中也可以存放综合数据,但只在需要的时候生成。
(2)数据规模不同:
由于存放的数据内容不同,因此DW的数据规模远远超过ODS。
(3)技术支持不同:
ODS需要支持面向记录的联机更新,并随时保证其数据与数据源中的数据一致。
DW则需要支持ETL技术和数据快速存取技术等。
(4)面向的需求不同:
ODS主要面向两个需求:一是用于满足企业进行全局应用的需要,即企业级的OLTP和即时的OLAP;二是向数据仓库提供一致的数据环境用于数据抽取。
DW主要用于高层战略决策,供挖掘分析使用。
(5)使用者不同:
ODS主要使用者是企业中层管理人员,他们使用ODS进行企业日常管理和控制。
DW主要使用者是企业高层和数据分析人员。
7. ODS在电信行业的具体应用
(1)运营商为什么要建ODS?
随着市场的不断变化,电信运营商需要以“产品”为中心向以“客户”为中心转型,而这种转型需要建立客户统一视图信息,并实现信息在各渠道、前后端的共享,
但是目前这些数据分布在各个生产系统中,并存在各种数据不一致的现象。因此,提出了以ODS系统来解决这一问题。具体地说,希望通过ODS系统来满足以下
三种需求:
① 建立企业全局的客户统一视图信息,指导客户品牌经营和精确管理;
② 建立统一的数据共享平台,快速支撑跨系统应用,促进企业数据模型的落地,形成企业标准数据;
③ 提升企业数据质量,解决生产系统之间数据不一致、数据质量差的问题。
(2)ODS的系统定位:
ODS系统是一个跨系统的数据共享平台,承接操作环境和分析环境。
企业数据架构建立在统一的数据模型的基础上,由生产系统自有数据库、操作数据存储(ODS)、企业数据仓库(EDW)三个层面组成。其中,ODS存储按主
题分类的面向运营的准实时数据,提供统一的企业数据视图;生产系统自有数据库存储该生产系统内部实时交易数据;EDW存储面向经营决策分析的历史数据和综
合数据。
ODS对生产系统产生的数据进行清洗、过滤、转换、整合,是提供给EDW高质量数据的重要来源之一,同时为各个生产系统提供准实时的运营报表等跨系统共享
数据服务。另外,在企业运营层,对于需要同时利用跨系统的操作型数据和相关分析结果数据的协作性应用需求,ODS也起到关键支撑作用。
(3)ODS的业务目标:
① 统一准实时的数据共享
② 生产经营数据质量检查
③ 统一客户视图的提供与展示
④ 生产经营报表统一的提供与展示
⑤ 关键生产经营绩效指标与经营风险的监控
⑥ 跨系统的批量计算
(4)ODS与生产系统的比较:
相同点:
① 均包含当前的细粒度运营数据;
② 使用者都是一线的生产和管理人员;
③ 都是数据质量管理闭环流程中的一个环节(ODS对所存储的数据进行一致性、完整性、正确性的校验,形成数据校验结果并返回给源系统进行修正);
不同点:
① ODS不产生运营数据,运营数据由各个生产系统产生;
② 在数据质量管理闭环流程中,ODS负责发现数据质量问题,生产系统负责解决数据质量问题;
③ ODS为其他系统提供准实时的数据共享服务,生产系统提供实时的数据共享服务;
④ ODS提供基于跨系统数据的查询应用,生产系统通过与ODS合作提供跨系统的准实时查询应用;
⑤ ODS系统提供基于跨系统数据的固定或者动态报表,生产系统提供基于单系统的、实时性要求高的固定或动态报表;
⑥ ODS负责批量数据的计算,生产系统负责事务驱动的数据计算。
(5)ODS与EDW的比较:
相同点:
① ODS和EDW都不是运营数据的产生系统,都是通过ETL等过程从各种数据源中加载数据;
② ODS和EDW的数据都是分层存储,既有细节数据,又有根据不同维度汇总的综合数据;
③ ODS和EDW都可以提供基于跨系统整合后数据的报表类应用。
不同点:
① ODS中的细节数据时效性高,并提供给其他系统共享,而EDW中的细节数据时效性低,不提供给其他系统共享,只供自身挖掘分析使用;
② ODS中的数据汇总维度较少,EDW中数据汇总维度多。
③ ODS提供的报表内容主要是面向生产运营过程中数据的统计与监控,不做进一步分析和挖掘,而EDW中的报表内容主要是针对跨系统的数据进行深度分析和挖掘,着重趋势分析并提供评估和决策功能;
④ ODS面向一线生产的管理人员,EDW面向专业分析人员和企业中高层管理人员;
⑤ ODS中的运用数据来源是生产系统,EDW运营数据主要从ODS中获取,ODS中没有的才从生产系统中获取;
⑥ ODS中的数据保存期限短于EDW中的数据保存期限。
8. 参考文献
[1] 数据仓库(原书第4版),William H.Inmon著,王志海等译,机械工业出版社,2006.8
[2] 数据仓库与数据分析教程,王珊等编著,高等教育出版社,2012.8
[3] 百度文库:电信ODS规范
[4] 百度文库:中国电信ODS规范培训
数据仓库原理<3>:数据仓库与ODS的更多相关文章
- 数据仓库原理<1>:数据库与数据仓库
updated 2015.8.27 updated 2015.8.26 updated 2015.8.23 0. 说明 <数据仓库原理>系列博文,是笔者在学习数据仓库与商业智能时的读书笔记 ...
- 数据仓库原理<2>:数据仓库系统的体系结构
1. 引言 本篇主要讲述数据仓库系统的体系结构与组成要素.数据集市与数据仓库之间的关系.元数据的定义与作用. 在上一篇,笔者介绍了数据仓库的定义: "数据仓库是一个面向主题的.集成的.不可更 ...
- 数据仓库基础(四)ODS、元数据
本文转载自:http://www.cnblogs.com/evencao/archive/2013/06/14/3135691.html ODS的概念:是一个面向主题的.集成的.可变的.反应当前细节的 ...
- 数据仓库原理<4>:联机分析处理(OLAP)
本文转载自:http://www.cnblogs.com/hbsygfz/p/4762085.html 1. 引言 本篇主要介绍数据仓库中的一项重要分析技术——联系分析处理(OLAP). 在第一篇笔者 ...
- hive数据仓库入门到实战及面试
第一章.hive入门 一.hive入门手册 1.什么是数据仓库 1.1数据仓库概念 对历史数据变化的统计,从而支撑企业的决策.比如:某个商品最近一个月的销量,预判下个月应该销售多少,从而补充多少货源. ...
- OLAP与数据仓库------《Designing Data-Intensive Applications》读书笔记4
由于第三章的内容比较多,这里我们拆分成两篇读书笔记来记录.上一章我们聊了聊如何数据库是如何实现存储和检索的,今天这篇我们继续来看看OLTP与OLAP存储引擎的区别与联系. 1.OLTP与OLAP 联机 ...
- 数据仓库中的Inmon与Kimball架构
对于数据仓库体系结构的最佳问题,始终存在许多不同的看法,甚至有人把Inmon和Kimball之争称之为数据仓库界的“宗教战争”,那么本文就通过对两位提倡的数据仓库体系和市场流行的另一种体系做简单描述和 ...
- 使用ETL构建数据仓库的思考
使用ETL构建数据仓库的思考 背景:公司的数据仓库建设项目启动在即,所谓万事开头难,如何在我们数仓建设规划的前期做好业务数据准备和系统建设规划是我们需要思考的问题,这里根据之前的自己参与过的公司ODS ...
- 大数据开发实战:Hadoop数据仓库开发实战
1.Hadoop数据仓库架构设计 如上图. ODS(Operation Data Store)层:ODS层通常也被称为准备区(Staging area),它们是后续数据仓库层(即基于Kimball维度 ...
随机推荐
- Java虚拟机五 堆的参数配置
堆空间是Java进程的重要组成部分,几乎所有的应用相关的内存空间都和堆有关. 1.最大堆和初始堆的设置 当Java程序启动时,虚拟机就会分配一块初始堆空间,使用参数 -Xms 指定这块空间的大小.一般 ...
- Html5游戏框架createJs组件--EaselJS(二)绘图类graphics
有端友问我是否有文档,有确实有,但没有中文的,只有英文的,先提供浏览地址供大家参考学习createJs英文文档. EaselJS其实主要就是createJ ...
- nginx socket转发设置
1.添加依赖模块,如下 --with-stream --with-stream_ssl_module 2.nginx.conf 配置,参考说明:ngx_stream_core_module user ...
- python转化字符串形式的json
在使用python对字符串形式的json进行 json.loads() 的操作时,遇到了:JSONDecodeError: Invalid \escape,提示\无法excape,可以通过以下方式将字 ...
- 你不可缺少的技能——Markdown编辑
Markdown简介 Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.请不要被「标记」.「语言」所迷惑,Markdown 的语法十分 ...
- win10中强制vs2015使用管理员启动
文章转自: win10中强制vs2015使用管理员启动 首先,和网上流传的版本一样,需要做这下面这两步: 1. 打开VS快捷方式的属性对话框. 2.勾选“用管理员身份运行” 现在,你双击V ...
- POJ 2653 - Pick-up sticks - [枚举+判断线段相交]
题目链接:http://poj.org/problem?id=2653 Time Limit: 3000MS Memory Limit: 65536K Description Stan has n s ...
- 洛谷P4931 情侣!给我!烧了! 数论
正解:数论 解题报告: 传送门 这题,想不到就很痛苦,但是理解了之后还是觉得也没有很难,,,毕竟实现不难QAQ 首先关于前面k对情侣的很简单,就是C(n,k)*C(n,k)*A(k,k)*2k 随便解 ...
- windows平台mysql密码设置
登录mysql默认没有指定账号 查看默认账号是谁 select user(); mysql> select user();+----------------+| user() |+------- ...
- dedecms如何快速删除跳转的文章(记得清空内容回收站)
网站内容更新多了,有些页面修改了,这时其他相关页面也要做相应的调整,不然可能会出现404错误,那么dedecms如何快速删除跳转的文章呢?下面就随ytkah一起操作一下吧 如上图所示,在“核心”(标示 ...