浅析ODS与EDW关系(转载)
浅析ODS与EDW 关系
刘智琼
(中国电信集团广州研究院广州510630)
摘要
本文重点介绍了企业运营数据仓储(ODS)和企业数据仓库(EDW )的概念,并对ODS与EDW 之间的关系,包括两者相同点与不同点进行了详尽的对比与阐述,文章还对业界公认的ODS和EDW 两种不同建设方法也分别进行了说明,并给出了作者认为合理的建设方法。
1 前言
ODS(运营数据仓储)与EDW(企业数据仓储)都是中国电信企业数据架构的重要组成部分,它们一起构成企业统一数据平台。2007年大多数省级电信公司都陆续启动ODS与EDW的建设。经调查发现,各省电信公司在两个系统的建设过程中对两个系统在企业数据架构中的各自职能与分工存在一定的疑问与困惑,为帮助大家澄清这些疑问与困惑,本文对ODS与EDW在整个企业数据架构中的关系进行详尽阐述,包括对两者相同点的分析、不同点的对比。使读者在对比与分析过程中理解两者的联系与区别。同时本文还对ODS与EDW如何建设的两种观点逐一阐述与分析,并给出了相应的建议。
2 企业数据架构
EDW主要为企业提供分析决策服务。ODS主要实现企业数据整合、共享和准实时运营监控等功能,ODS是EDW的一个有益的补充和扩展。生产系统、ODS及EDW之间的数据关系如图1所示,
其中.ADB为应用数据库;A、B、C表示不同类型的数据流动:A表示操作环境中应用数据库之间的直接数据交换;B表示操作环境中应用数据库之间通过ODS进行数据交换;C表示数据从操作环境被抽取到分析环境。
操作环境下各生产系统中的运营数据通过ETL(抽取、转换、装载)过程进人到ODS中,生产系统之间准实时的数据交换由ODS系统完成,ODS系统同时还将整合好的操作环境下的运营数据通过ETL等方式传送到EDW中.完成运营数据从操作环境进人到分析环境的过程。
各生产系统的应用数据库、ODS、EDW构成了整个企业数据架构的主体。下文重点对企业数据架构中的ODS和EDW这两个实体的概念与作用做详细说明。
2.1 ODS的概念及作用
ODS存储了运营系统(如OLTP(联机事务处理)系统)近实时的详细数据。ODS的概念最早是由“数据仓库之父”——Bill Inmon提出的。ODS最初引入是为了寻找能满足快速加载和数据整合的性能要求,并且减少面向分析需求的变更和扩充对生产系统影响的解决方案,这一解决方案便是在生产系统和EDW之间增加一个数据整合层(也叫做数据缓冲层)即ODS。具有数据整合层的作用,是提出ODS概念的主要出发点。随着技术的发展,近年来ODS被赋予的功能和作用也得到了延伸,目前业界普遍认同的观点是:ODS为企业原始运营数据存储提供了一个整合平台,它的信息来自于不同的运营型应用系统。通过数据接口,在数据整合业务规则作用下,进入ODS的信息是可靠的、可信的。ODS中数据的集成、实时特征决定了ODS主要有以下3个作用。
对运营数据进行清理整合,提高运营数据质量,是EDW的一个主要数据来源。ODS对生产系统产生的数据进行了初步的清洗、过滤和整合,存储了较为详细和全面的企业运营数据,ODS中的数据不仅具有较高的数据质量,而且比OLTP系统更有利于EDW对数据进行获取和进一步的转换、整合等处理,是EDW的主要数据来源之一。
· 实现跨系统的近实时报表和查询统计应用。ODS从不同的运营应用系统中采集数据.整合各个系统的共享交易数据,形成企业级数据的整体视图。ODS最大的价值是集成了跨系统的数据,从而能够实现一些跨系统的报表和查询统计应用。另外,ODS也可以从EDW中获取自身所需的数据.如经过EDW统计分析后的一些结果性的数据,可以提供给统计分析人员和业务人员进行实时调用和备查。
· 作为其他生产系统的数据同步源。ODS捕捉当前和近期的交易数据.数据具有实时性或准实时性,ODS中的数据按照需要可以与运营系统数据定期同步。由于ODS中的数据是“新”的。因而可以通过它使数据与其他生产系统中的数据同步。
2.2 EDW 的概念及作用
EDW依据企业的统一标准和规则对来自于企业内外的分散在不同系统的数据进行消除非一致性的集成和标准化处理(即ETL处理),形成企业数据的全面统一视图。
EDW采用多维分析和数据挖掘等手段。细分市场和客户,支撑市场的经营分析、准确决策和快速反应能力。为各级部门和分析决策人员提供基于部门的和基于企业的全方位的数据和分析服务。通过EDW,从根本上解决了数据分散重复、共享困难和信息孤岛等问题,充分发挥了数据资源的价值,全面提升了企业在经营决策、运营管理、业务拓展和客户服务等方面的支撑能力。EDW中数据面向主题、
集成及非易失的特征决定了EDW主要有以下两个作用。
· 为企业各级的经营决策和市场营销提供及时、精确、全面的数据支持和科学、方便、体系化的分析工具和使用方法,为除生产系统以外的管理、分析等需求提供数据支撑,实现业务数据与分析数据的分离。
解决目前市场等部门信息获取能力和分析决策手段不能适应企业环境变化和精确化管理要求的问题,并通过各种形式的主题,专题分析,支撑针对性营销、上市信息披露、精确化管理.有效降低营销成本,减少客户流失,寻找商机,达到提升企业价值的目的。
3 ODS和EDW 的相同点与不同点
3.1 ODS与EDW的相同点
从ODS与EDW各自的概念与作用可以看出。ODS与EDW具有以下的共同之处。
· ODS与EDW都是企业数据架构中的独立系统,两个系统都不是直接产生运营数据的系统,两个系统中的数据都是由操作环境的数据经过抽取、转换、加载(ETL)的过程而来,还要进行进一步的清理、整合等工作(EDW的数据可由ODS加载装入)。
· ODS与EDW一样都既有细粒度的数据。也有根据不同维度汇总的汇总数据。
· ODS与EDW上均提供基于跨系统整合后数据的报表类应用。
3.2 ODS与EDW之间的差异
虽然ODS与EDW具有一些相似之处.但两者却是完全不同的实体,下面从多个角度对比两者的不同之处。
(1)使用角色
· ODS主要面向营业、渠道等一线生产人员和一线管理人员,为了实现准实时、跨系统的运营细节数据的查询,以获得细粒度的运营数据展现,例如渠道人员查询客户的全视图信息由ODS提供数据支撑。
· EDW主要面向专业分析人员、辅助决策支持人员等,为了实现基于历史数据的统计分析和数据挖
掘,以获得客户深层次的特征和市场发展的规律,例如专业分析人员的经营状况趋势分析由EDW提
供支撑。
(2)数据来源
· ODS需要的大部分运营数据直接来源生产系统。 ODS中的部分分析结果数据来源于EDW,例如客户
洞察信息等。
· EDW需要的运营数据,如果在ODS中已存在,EDW则直接从ODS获取这部分数据。· EDW需要的运营数据,如果在ODS中没有,EDW则直接从生产系统获取这部分数据。
(3)数据获取性能和及时性
· ODS支持OLTP类型的数据更新,数据更新时间短,数据可实现准实时更新,性能与及时性都高于EDW 。
· EDW中的数据一般通过批量加载进入,数据更新速度慢,无法实现准实时更新,数据更新时间不足以支持实时的报表和事件监控需求。
(4)数据架构
ODS以关注生产运营过程的统计与监控为主的生产视角主题域方式来组织数据。
ODS提供操作数据的统计,主要提供应用需要的细粒度运营数据。ODS中也存在部分粗粒度汇总数据,但汇总的维度少且简单。
EDW关注对历史数据的深层次分析与挖掘.从分析与挖掘的需要出发按不同主题维度来汇总与组织数据。
EDW提供历史数据的展示和分析,主要提供多层粗粒度汇总数据.汇总的维度多且复杂。
(5)数据共享能力
ODS为其他生产系统提供运营数据的准实时数据共享服务。
EDW一般不为生产系统提供此类准实时的数据共享服务。系统中的数据只供本系统分析与挖掘应用使用。
(6)系统提供应用数据查询。
ODS提供生产环境下的数据查询,查询的交易量较小,不耗费太多资源,有确定的完成速度。而EDW提供分析环境下的查询,查询单元量较大,消耗的资源很多,完成的速度也不确定。
固定报表。
ODS提供生产环境下实时性较高的生产经营报表,而EDW提供分析环境下的主题分析与挖掘报表。动态报表。
ODS提供面向少量维度的细粒度数据的统计,而EDW提供面向多个维度的多层粗粒度数据的主题统计、分析及深层次的挖掘。
ODS提供绩效管理和统计、数据质量审计和监控管理等功能。
EDW提供趋势分析、客户消费行为分析和评估等功能。
(7)数据存储
客户等关键实体数据。ODS长久保存当前数据,EDW长久保存当前与历史数据。
详单数据。ODS保存1个月到3个月;EDW保存2年。
汇总数据。ODS保存3年;EDW保存5年。
其他数据。ODS保存l3个月;EDW保存3年。
(8)系统技术特征
ODS主要面对大并发用户数、小数据量的访问,EDW主要面对小并发用户数、大数据量的访问。
ODS数据库优化同时侧重索引和分区技术;EDW数据库优化主要侧重分区技术。
ODS支持OLTP类型和OLAP(联机分析处理)类型的数据操作,EDW支持OLAP类型的数据操作。
(9)系统可靠性
ODS参与运营.必须保证可靠性。
相对ODS.EDW可以允许有更多的脱机时间。
(1O)系统开放性
因为需要与大量不同硬件、数据库配置的系统相互交换数据。ODS要求比较高的系统开放性。
EDW一般只获取数据.而不提供给其他应用系统以多种模式直接访问,解决方案上也可采用相对封闭的数据库、软硬件平台。
4 ODS与EDW 建设方案
从上述ODS与EDW 的分析与对比可知,ODS与EDW是两个定位与功能完全不同的实体.但在ODS与EDW的实际建设方式上,业界又有两种不同的声音,一种是以Bill Inmon为代表的认为ODS应该作为一个独立系统单独建设.另一种是以Ralph Kimball为代表的认为ODS应该纳入到EDW中.作为EDW的一部分,在一个独立系统中统一建设。下文对两种方案逐一进行说明。
Bi11 Inmon在1996年写的《建立运营数据仓储》一书中正式提出了ODS的概念。Inmon认为分析决策需要基于越来越实时和细节的运营数据.同时这些数据又必须是集成的和面向主题的.而运营系统和数据仓库均无法满足相应的信息需求,因此提出了ODS的概念,并在整个IT支撑体系(即Inmon所说的企业信息工厂)中增加了独立的ODS组件。Bill Inmon提出的两者建设架构如图2所示。
从图2可以看到.ODS的数据来自于各个分散的运营系统,这些数据在独立的ODS中进行整合.在ODS中形成面向主题的、集成的、易变的、当前值的、详细的运营数据.按照业务需求和性能的要求进行组织存储.并在ODS建立相应的应用以满足业务的要求。ODS中整合好的运营数据通过ETL处理过程进入到EDW中.ODS与EDW作为两个独立的系统分别建设。
而另外一种观点的提出者Ralph Kimball认为在技术发展的情况下.Bill Inmon认为的ODS单独存在的理由(ETL的限制无法实现实时数据加载、大量细粒度数据的存储、高性能的查询和7x24 h可靠性的要求.增加了数据仓库的负载.甚至会引起数据仓库的崩溃)不成立。Kimball认为,支撑EDW的软、硬件技术得到了发展.大数据量存储的数据仓库技术已经不是问题。也就是说数据仓库系统中存储细粒度的数据也是没有问题的,ETL的处理速度越来越快,通过高速的ETL工具已经可实现以所需要的任何频度抽取数据到EDW中;而且随着EDW本身的发展,EDW越变越大.分析更加细节的客户行为和更加具体的操作数据的需求也在增长.在大多数情况下.分析挖掘必须基于细粒度数据进行,细粒度的运营数据越来越多地在EDW中被使用.因而Kimball认为在这样的情况下.ODS已经没必要作为一个单独的系统.可看作是数据仓库系统的“前端边缘”。他将ODS重定义为EDW中的面向主题的、集成的、
经常扩展的细节数据的存储区域。同时Kimball认为把ODS纳入到数据仓库的环境后较其单独建设还会给维护者和使用者带来更大的便利与好处,包括只建立一个单独的抽取系统.减少ETL开发与维护工作量:运营细节数据在一个统一的系统中存储.减少数据的冗余存储等。
Kimball提出的两者建设架构如图3所示。
在ODS与EDW 的实际建设过程中.这两种观点都有不同的追随者.在系统架构设计上都有采用。作者也一度倾向于Kimball的ODS应作为EDW的一部分建设的观点,但是随着对ODS与EDW更进一步的研究。作者发现Kimball之所以建议将ODS作为EDW的一个部分建设,更多考虑的是.单一系统的数据获取频度与大数据量细粒度数据存储能力这两个方面能同时满足ODS与EDW的需要.但是ODS是否单独建设不仅需要考虑单一系统能否实时获取并存储大量运营细节数据。更应该考虑单一系统能否高效地同时支持ODS和EDW上的两种不同类型的前端应用。ODS与EDW上需要承载的应用是截然不同的,为更高效地支撑两种不同类型的应用,系统应采用的硬、软件的技术特点是各不相同的。如果按照Kimball的理论将两者建立在一个系统中.不是绝对不行.但是和它们分开建设相比。混合两种不同类型的工作到同一个系统需要耗费更多的资源和成本,而且更加难以保证服务水平,因此从系统的稳定性、性能、成本等方面综合考虑,原则上作者不建议ODS与EDW建设在一个系统中,两个实体应作为两个独立系统分开建设。但对于数据规模不大,EDW 已经建设完成的个别省,在EDW数据库产品、硬件设备、数据实时性及应用支撑能力等方面能较好地满足ODS应用支撑的功能及性能要求的前提下,作者认为将ODS与EDW合建在一个系统内也是切实可行的。
参考文献
1 lnmon W H著.王志海等译.数据仓库(原书第4版).北京:
机械工业出版社.2006
2 中国电信集团.中国电信CTG-MBOSS EDA分总V1.O规范.2oo5
3 Baragoin C,Marini M,Morgan C.Building the operational data store.DB2 UDB IBM Redbook,2001
4 Kimball R.Relocating the ODS.DBMS Magazine,1997(10)
5 lnmon B.The operational data store.1nfoDB Magazine,1995(2)
浅析ODS与EDW关系(转载)的更多相关文章
- ODS与EDW的区别
http://blog.csdn.net/bitcarmanlee/article/details/51013474 根据自己的理解与实际项目经验,说说ODS与EDW的异同.如果有不对的地方,欢迎大家 ...
- CommonJS, AMD 和 RequireJS之间的关系(转载)
先说说CommonJS CommonJS - 大家是不是觉得JavaScript仅仅是一个客户端的编译语言,其实JavaScript设计之初不仅仅是针对客户端设计的语言.后来只是由于Web的迅速流行, ...
- 浅析Oracle范式的概念(转载)
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中 ...
- 【菜鸟也疯狂UML系列】——浅析UML四种关系
在UML中.关系是很重要的.它抽象出对象之间的联系,让对象构成某个联系起来的结构.以下将简要分析一下UML中的四种关系:关联.依赖,泛化,实现. 一.举例罗列 1.关联(Association) 关联 ...
- http 和 soap 关系 - 转载
http soap关系 HTTP http:是一个客户端和服务器端请求和应答的标准(TCP).http协议其目的是为了提供一种发布和接收htttp页面的方法 一http协议的客户端与服务器的交互:由H ...
- Entity Framework Code First (五)Fluent API - 配置关系 转载 https://www.cnblogs.com/panchunting/p/entity-framework-code-first-fluent-api-configuring-relationships.html
上一篇文章我们讲解了如何用 Fluent API 来配置/映射属性和类型,本文将把重点放在其是如何配置关系的. 文中所使用代码如下 public class Student { public int ...
- Java中JDK,JRE和JVM之间的关系-(转载)
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Envi ...
- 搞不清FastCgi与PHP-fpm之间是个什么样的关系(转载)
刚开始对这个问题我也挺纠结的,看了<HTTP权威指南>后,感觉清晰了不少. 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. ...
- [原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载
问题: 一. 1. Spring 如何处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3. propagati ...
随机推荐
- action属性
action属性 2013年7月8日 14:52 Path: action的访问路径,以"/"开头 Type: action的类型 Name: action使用的actionFor ...
- OpenGL学习笔记之配置OpenGL
OpenGL是计算机图形学领域的一门入门语言,OpenGL开发库的一些文件在官网上可以下载到.里面包含三个文件,如下: 1.把在OpenGL开发库中LIB(库文件)glut.lib和glut32.li ...
- DNS劫持(网页打不开的解决方法)
我们上网,必不可少的就是DNS,在这里先介绍下DNS的相关知识. DNS 是域名系统 (Domain NameSystem) 的缩写,它是由解析器和域名服务器组成的.域名服务器是指保存有该网络中所有主 ...
- Linux C 文件与目录2 文件的打开与关闭
文件的打开与关闭 open和close 文件的打开指的是从磁盘中找到一个文件,返回一个整形的打开文件顺序的编号.打开的文件处于可读.可写状态.文件的关闭指的是释放打开的文件,是文件处于不可读写的状态. ...
- C++设计模式——享元模式
本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...
- Capacity Scheduler 队列设置
先附一个官网地址 Capacity Scheduler是YARN中默认的资源调度器. 相关参数配置: 资源分配相关参数 ``` (1) capacity:队列的资源容量(百分比). 当系统非常繁忙时, ...
- Android -- NDK开发入门
第一步,建立一个普通的Android项目HelloNDK,然后在与src同一级的目录下新建一个jni目录: 第二步,在jni目录下新建一个hello_ndk.c文件,代码如下: #include &l ...
- 团队开发之《极速蜗牛》NABC分析
一.简介 项目名称:极速蜗牛 特点:操作简单,视觉与听觉配合,让用户有最完美的体验. 二.NABC分析 N(need):在人们无时无刻离不开手机的今天,难免有无聊的时候,此刻一款操作简单又能令人们动脑 ...
- 为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048?
这个问题曾经困扰我很久,在了解了MBR之后,我曾认为第一块分区之前为一个block.但是用fdisk查看是2048,一直不了解其中的缘由,今天查了一下资料,大概了解了,其中的细节留着慢慢去了解. 最直 ...
- RobotFramework-关键字
地址:https://github.com/NitorCreations/RobotFramework-EclipseIDE/tree/master/plugin/robot-indices Coll ...