大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
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中的数据保存期限。
ODS设计
1.数据调研
2.确定数据范围
需要把上端应用需求与ODS数据范围进行验证,以确保应用所需的数据都已经从业务系统中抽取出来,并且得到了很好的组织,以ER模型表示数据主题关系
3.根据数据范围进行进一步的数据分析和主题定义
把第一步生成的每个ER图中的实体进行分解,分解的结果仍以ER表示为佳
4.定义主题元素
定义主题、粒度、维、度量、存储期限
a.定义维的概念特性:维名称,名称应该能够清晰表示出这个维的业务含义。维成员,也就是这个维所代表的具体的数据,维层次,维成员之间的隶属与包含的层次关系,每个层次需要定义名称b.定义度量的概念特性:度量名称,名称应该能够清晰标书这个度量的业务含义c.定义主题的概念特性:主题名称和含义,说明该主题主要包含哪些数据,用于什么分析;d.主题所包含的维和度量;主题的事实表,以及事实表的数据。e.定义粒度:主题中事实表的数据粒度说明,这种粒度可以通过对维的层次限制加以说明,也可以通过对事实表数据的业务细节程度进行说明。f. 定义存储期限:主题中事实表中的数据存储周期。
5.迭代,归并维、度量的定义
具体的业务代码所形成的各个维、以及维成员等需要进一步进行归并,把概念统一的维定义成一个维,不允许同一个维存在不同的实体表示
6.物理实现
定义每个主题的数据抽取周期、抽取时间、抽取方式、数据接口,抽取流程和规则
7.对ODS中的各个主题的事实数据进行时间上的汇总
按照时间维进行汇总,以实现初步的信息沉淀
8.按照业务逻辑的规则,对数据进行归并
9.把包含细节过多的交易记录进行拆分
10.汇总、再汇总
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185355.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...