【数据仓库】数据仓库层次化设计

一、基本概念

**1. RDS(RAW DATA STORES,原始数据存储)**

RDS作为原始数据存储层,用于存储来自各种源头的未经处理的数据。这些数据可能来自企业内部的业务系统、外部数据源或各种传感器等。RDS确保原始数据的完整性和可访问性,为后续的数据处理和分析提供原始素材。

**2. ODS(Operational Data Store,操作数据存储)**

ODS(操作性数据),是数据仓库架构中的重要组成部分。它位于数据源系统和数据仓库的数据集市之间,主要用于存储从各个业务系统抽取的原始数据。作为数据库到数据仓库的一种过渡,ODS的数据结构一般与数据来源保持一致,便于减少ETL的工作复杂性,而且ODS的数据周期一般比较短。ODS的数据最终流入DW。

ODS位于RDS之后,用于存储从RDS中提取出来的、经过初步整合的数据。ODS通常用于存储来自多个操作型系统的数据,如ERP、CRM等。它的主要作用是为数据仓库提供结构化、整合后的数据,作为后续数据处理和分析的基础。

ODS存储的是当前的数据情况,给使用者提供当前的状态,提供即时性的、操作性的、集成的全体信息的需求。ODS作为数据库到数据仓库的一种过渡形式,能提供高性能的响应时间。ODS中的数据是"实时值",而数据仓库的数据却是"历史值"。

2.1 ODS的特点

ODS层的主要特点包括:

  1. 面向主题: 数据按照业务主题进行组织
  2. 粒度细: 保留原始数据的细节级别
  3. 实时性强: 数据更新频率较高,通常为准实时或近实时
  4. 数据冗余: 保留历史数据,支持数据回溯
2.2 ODS系统的作用

一般在带有ODS的系统体系结构中,ODS都具备如下几个作用:

1) 在业务系统和数据仓库之间形成一个隔离层。 
2) 转移一部分业务系统细节查询的功能。在数据仓库建立之前,大量的报表、分析是由业务系统直接支持的,在一些比较复杂的报表生成过程中,对业务系统的运行产生相当大的压力。ODS的数据从粒度、组织方式等各个方面都保持了与业务系统的一致,那么原来由业务系统产生的报表、细节数据的查询自然能够从ODS中进行,从而降低业务系统的查询压力。
3) 完成数据仓库中不能完成的一些功能。 一般来说,带有ODS的数据仓库体系结构中,DW层所存储的数据都是进行汇总过的数据和运营指标,并不存储每笔交易产生的细节数据,但是在某些特殊的应用中,可能需要对交易细节数据进行查询,这时就需要把细节数据查询的功能转移到ODS来完成,而且ODS的数据模型按照面向主题的方式进行存储,可以方便地支持多维分析等查询功能。

**3. TDS(TRANSFORMED DATA STORES,转换后的数据存储)**

TDS在ODS之后,负责对数据进行清洗、转换和整合,以满足特定的业务需求或分析需求。在TDS中,数据经过一系列的处理操作,如去除重复数据、填充缺失值、转换数据类型等,以生成更加准确、一致和有用的数据集。

**4 .数据仓库(DW)

4.1 概述

数据仓库(Data Warehouse),是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。DW保持着所有的从ODS到来的数据,并长期保存,而且这些数据不会被修改。DW中的数据实际存储在分布式文件系统中(如HDFS)。如果想要删除数据,一般会在分布式文件系统中进行操作。而由于效率问题,数据仓库一般只读取数据,不直接对数据进行修改。

(1) 面向主题(Subject Oriented)操作型数据库的数据组织 面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。
(2) 集成的(Integrated)数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
(3) 相对稳定的(Non-Volatile) 数据仓库的数据主要供 企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
(4) 反映历史变化(Time Variant) 数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到各个阶段的信息,通过这些信息,可以对企业的 发展历程和未来趋势做出定量分析和预测。
4.2 数据仓库的特征
特征有:
(1)效率足够高,要对进入的数据快速处理
(2)数据质量高,数据仓库是提供很多决策需要的数据支撑,DW的数据应该是唯一的具有权威性的数据,企业的所有系统只能从DW取数据,所以需要定期对DW里面的数据进行质量审,保证DW里边数据的唯一、权威、准确性。
(3)扩展性,企业业务扩展和降低企业建设数据仓库的成本考虑
(4)面向主题,数据仓库中的数据是按照一定的主题域进行组织的,每一个主题对应一个宏观的分析领域,数据仓库排除对决策无用的数据,提供特定主题的简明视图
(5)数据仓库主要提供查询服务,并且需要查询能够及时响应
(6)DW的数据也是只允许增加不允许删除和修改,数据仓库主要是提供查询服务,删除和修改在 分布式系统

数据仓库是一个过程而不是一个项目;
数据仓库系统是一个信息提供平台,从业务处理系统获得数据,主要以星型模型和雪花模型进行数据组织,并为用户提供各种手段从数据中获取信息和知识。

从功能结构划分,数据仓库系统至少应该包含数据获取(Data Acquisition)、数据存储(Data Storage)、数据访问(Data Access)三个关键部分。

**5. 数据集市(DM)

数据集市(Data Mart) ,为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据。

面向应用。在数据仓库的实施过程中往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。

需要注意的就是在实施不同的数据集市时,同一含义的字段定义一定要相容,这样再以后实施数据仓库时才不会造成大麻烦。数据集市,以某个业务应用为出发点而建设的局部DW,DW只关心自己需要的数据,不会全盘考虑企业整体的数据架构和应用。

特征有:
(1)DM结构清晰,针对性强,扩展性好,因为DM仅仅是单对一个领域而建立,容易维护修改
(2)DM建设任务繁重,公司有众多业务,每个业务单独建立表
(3)DM的建立更多的消耗存储空间,单独一个DM可能数据量不大,但是企业所有领域都建立DM这个数据量就会增加多倍

6.如何能搭建一个体系,既能支持战略决策使用的数据仓库数据,又能兼容业务快速的变化和运营产品人员日常需求的ODS数据?

数据仓库和ODS并存方案,经过调研,发现大体上有三种解法:

(1)业务数据 - ODS - 数据仓库

(2)DB - ODS

优点:结构简单。一般的初创数据分析团队都是类似的结构,比如我们部门就应该归结到这一范畴
缺点:这样所有数据都归结到ODS,长期数据决策分析能力差,软硬件成本高,模块划分不清晰,通用性差。

(3)数据仓库和ODS并行

引用自:ODS、DW、DM - 知乎 (zhihu.com) 

数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模_ods,dwd,dws,ads-CSDN博客

二、.数据仓库分层

数据分层思想

​数据分层每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想,理论上数据分为三个层,数据运营层、数据仓库层和数据服务层。基于这个基础分层之上添加新的层次,来满足不同的业务需求。 ​

2 数据分层的好处

(1)清晰数据结构: 每个数据分层都具有明确定义的作用范围和职责,使得在使用表时更容易定位和理解。

(2)减少重复开发: 通过规范数据分层,可以开发一些通用的中间层数据,从而极大地减少重复计算的工作。

(3)统一数据口径: 数据分层提供了统一的数据出口,使得对外输出的数据口径更为一致。

(4)复杂问题简单化: 通过将复杂任务分解为多个层次来完成,每一层解决特定的问题,从而简化了整体任务的复杂性。

3 业界常见数仓分层架构

           

简拼

全称    说明
ODSOperation Data Store操作数据存储层,用于存储来自业务系统的原始数据。从数据粒度上看ODS层是粒度最细的数据层。
DWDData Warehouse Detail数据仓库明细层,用于存储经过清洗和加工的明细数据。这层数据粒度通常和ODS的粒度相同,不同的是该层的数据质量更高,字段更适合统计的需要等。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
DWM

Data WareHouse Middle(可选)

数据中间层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。

DWSData Warehouse Summary数据仓库汇总层又称数据集市或宽表用于存储汇总后的数据。从数据粒度来说,这层的数据是轻度汇总级的数据,已经不存在明细数据了。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
ADSApplication Data Service数据应用服务层,为应用系统提供数据服务。从数据粒度来说是高度汇总的数据。面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析
DIMDimension

公共维度层由维度表构成,基于维度建模理念,建立整个企业的一致性维度。

高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。

低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。

TMP(可选)DWTMP层是数据仓库中的一个特定层次,专门用于存储数据仓库各层计算过程中产生的临时表。

                    

 4 案例根据架构设计数据体系

举个例子说明一下,如下图,可以认为是一个电商网站的数据体系设计。我们暂且只关注用户访问日志这一部分数据。

在ODS层中,由于各端的开发团队不同或者各种其它问题,用户的访问日志被分成了好几张表上报到了我们的ODS层。

为了方便大家的使用,我们在DWD层做了一张用户访问行为天表,在这里,我们将PC网页、H5、小程序和原生APP访问日志汇聚到一张表里面,统一字段名,提升数据质量,这样就有了一张可供大家方便使用的明细表了。

在DWM层,我们会从DWD层中选取业务关注的核心维度来做聚合操作,比如只保留人、商品、设备和页面区域维度。类似的,我们这样做了很多个DWM的中间表

然后在DWS层,我们将一个人在整个网站中的行为数据放到一张表中,这就是我们的宽表了,有了这张表,就可以快速满足大部分的通用型业务需求了。

最后,在APP应用层,根据需求从DWS层的一张或者多张表取出数据拼接成一张应用表即可。

不同的层次中用到的计算引擎和存储系统

6 如何构建一个高效的数据仓库分层体系

首先, 企业需要明确业务需求和数据特点,确定分层的粒度和层次结构。
其次, 选择合适的存储技术和工具,确保各层次数据的高效存储和访问。
最后, 建立完善的数据管理流程和规范,确保数据的准确性和安全性。

数据分层的划分时,我从以下几个角度进行思考:

对应用的支持: 从这个角度来看,我们期望越靠上层次,越能够友好地支持应用。例如,APP层基本上是为应用专门设计的,易于理解。相较之下,DWS层可能会有一些理解成本,而DWM和DWD层则更加复杂,因为它们可能涉及多个维度,并需要进行复杂的计算才能满足需求。

能力范围: 我们希望80%的需求可以由20%的表来支持。换言之,大部分(80%以上)的需求都可以使用DWS层的表来支持,DWS无法支持的需求可以借助DWM和DWD层的表,而仅有极少部分的数据需求可能需要从原始日志中提取。结合第一点,我们希望以对应用非常友好的方式来支持80%的需求,而不是直接将原始日志暴露给应用方。

数据聚合程度: 我们希望上层数据的聚合程度越高越好。以ODS和DWD的数据为例,它们基本上保留了原始日志的粒度,没有进行任何聚合操作。DWM进行了轻度的聚合,仅保留了通用的维度,而DWS则进行了更高级的聚合操作,可能只保留了一到两个能够完整描述当前主体的维度。从这个角度来看,我们可以理解为我们是根据数据的聚合程度来划分数据层次的。

参考自:数据仓库内容分享(六):数据仓库层次化设计_数据明细层-CSDN博客

三、问题

4.1 DWS 与 DWD?

问答一: dws 和 dwd 的关系

问:dws 和dwd 是并行而不是先后顺序?

答:并行的,dw 层

问:那其实对于同一个数据,这两个过程是串行的?

答:dws 会做汇总,dwd 和 ods 的粒度相同,这两层之间也没有依赖的关系

问:对呀,那这样 dws 里面的汇总没有经过数据质量和完整度的处理,或者单独做了这种质量相关的处理,为什么不在 dwd 之上再做汇总呢?我的疑问其实就是,dws的轻度汇总数据结果,有没有做数据质量的处理?

答:ods 直接到 dws 就好,没必要过 dwd,我举个例子,你的浏览商品行为,我做一层轻度汇总,就直接放在 dws 了。但是你的资料表,要从好多表凑成一份,我们从四五份个人资料表中凑出来了一份完整的资料表放在了 dwd 中。然后在 app 层,我们要出一张画像表,包含用户资料和用户近一年的行为,我们就直接从dwd中拿资料, 然后再在 dws 的基础上做一层统计,就成一个app表了。当然,这不是绝对,dws 和 dwd 有没有依赖关系主要看有没有这种需求。

4.2 ODS与DWD区别?

问:还是不太明白 ods 和 dwd 层的区别,有了 ods 层后感觉 dwd 没有什么用了。

答:嗯,我是这样理解的,站在一个理想的角度来讲,如果 ods 层的数据就非常规整,基本能满足我们绝大部分的需求,这当然是好的,这时候 dwd 层其实也没太大必要。 但是现实中接触的情况是 ods 层的数据很难保证质量,毕竟数据的来源多种多样,推送方也会有自己的推送逻辑,在这种情况下,我们就需要通过额外的一层 dwd 来屏蔽一些底层的差异。

问:我大概明白了,是不是说 dwd 主要是对 ods 层做一些数据清洗和规范化的操作,dws 主要是对 ods 层数据做一些轻度的汇总?

答:对的,可以大致这样理解。

4.3 app层干什么的?

问答三:app 层是干什么的?

问:感觉数据集市层是不是没地方放了,各个业务的数据集市表是应该在 dwd 还是在 app?

答:这个问题不太好回答,我感觉主要就是明确一下数据集市层是干什么的,如果你的数据集市层放的就是一些可以供业务方使用的宽表表,放在 app 层就行。如果你说的数据集市层是一个比较泛一点的概念,那么其实 dws、dwd、app 这些合起来都算是数据集市的内容。

问:那存到 Redis、ES 中的数据算是 app层吗?

答:算是的,我个人的理解,app 层主要存放一些相对成熟的表,能供业务侧使用的。这些表可以在 Hive 中,也可以是从 Hive 导入 Redis 或者 ES 这种查询性能比较好的系统中。

 

四、数据模型的评价标准

数据模型建设的怎么样,极度依赖规范设计,如果代码风格是“千人千面”,那么恐怕半年下来,业务系统就没法看了。没有什么比“数据系统”更看重“法制”了,规范体系不仅能保障数据建设的一致性,也能够应对业务交接的情况,更能够为自动化奠定基础。

  1. 业务过程清晰:ODS就是原始信息,不修改;DWD面向基础业务过程;DIM描述维度信息;DWS针对最小场景做指标计算;ADS也要分层,面向跨域的建设,和面向应用的建设;
  2. 指标可理解:按照一定业务事务过程进行业务划分,明细层粒度明确、历史数据可获取,汇总层维度和指标同名同义,能客观反映业务不同角度下的量化程度;
  3. 核心模型相对稳定:如果业务过程运行的比较久,过程相对固定,就要尽快下沉到公共层,形成可复用的核心模型;
  4. 高内聚低耦合:各主题内数据模型要业务高内聚,避免在一个模型耦合其他业务的指标,造成该模型主题不清晰和性价比低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143983.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux进程间通信——探索共享内存—— 剖析原理, 学习接口应用

前言:本节内容主要讲解进程间通信的, systemV版本下的共享内存。 共享内存,顾名思义, 其实就是一块内存, 它不同于管道是一个文件。 所以它的传输速度是很快的。 因为管道是文件,有缓冲区, 而共…

《深入理解 Java 线程池:高效管理线程的利器》

线程池 1. 什么是线程池? ​ 线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或…

不得不说 Sam‘s Club 的数字化做得挺好

因正好有东西要退货就顺便看了下订单如何退货。 但发现 Sam’s Club 的所有交易都能够从后台查到,同时还提供了个 CSV 文件的下载。 打开下载文件就能看到全部的数字化的交易记录。 就拿加油这个事情来说,能够非常清楚这一年在 Sam’s Club 加油多少加…

【无人机设计与控制】基于粒子群算法的三维无人机航迹规划

摘要 本文研究了基于粒子群算法(PSO)的三维无人机航迹规划问题。通过粒子群优化算法,无人机能够在复杂三维环境中进行路径规划,以避开障碍并实现最优路径飞行。该方法有效结合了无人机的飞行动力学特性与环境约束,能够…

【GlobalMapper精品教程】087:基于DEM的山脊线提取

文章目录 一、山脊线介绍二、加载实验数据三、山脊线提取一、山脊线介绍 山脊线是指沿山脊走向布设的路线,通常也是山脊最高点的连线,它在地形表示和测绘科学技术中具有重要地位。 山脊线是大体上沿分水岭布设的路线,也被称为山脊的最高棱线。在等高线地图上,山脊线表现为…

计算机网络(七) —— https协议与网络安全证书

目录 一,关于https 二,关于加密 2.1 明文,密钥 2.2 对称和非对称加密 2.3 数据摘要,数据指纹,数字签名 三,https过程过程探究 四,证书 4.1 CA认证 4.2 证书大致内容和申请流程 4.3 签…

fastadmin 定义通用搜索默认值,实现datetimerange默认搜索今日的列表数据,列表查询慢解决方案

文章目录 前言实例完结 前言 fastadmin默认会展示全部列表数据,随着数据越来越多,一次性查询出全部的数据会导致列表查询越来越慢 sql优化可以查看我这篇文章:分享最全的sql优化解决方案 除了基本的sql优化查询速度外,我们还可…

网络爬虫到底难在哪里?

如果你是自己做爬虫脚本开发,那确实难,因为你需要掌握Python、HTML、JS、xpath、database等技术,而且还要处理反爬、动态网页、逆向等情况,不然压根不知道怎么去写代码,这些技术和经验储备起码得要个三五年。 比如这几…

Cursor免费 GPT-4 IDE 工具的保姆级使用教程

Cursor免费 GPT-4 IDE 工具的保姆级使用教程 简介 Cursor 是一款基于人工智能技术的代码生成工具。 它利用先进的自然语言处理和深度学习算法,可根据用户的输入或需求,自动生成高质量代码。 不管是初学者,还是资深开发者,Curs…

低代码技术:简化应用开发的未来

近年来,低代码技术作为一种新兴的应用开发方法,受到了广泛关注。低代码平台通过图形化的界面和预设的模块,使得用户能够以较少的代码编写工作创建应用程序。这一技术的发展,标志着软件开发过程中的一个重要变革。 低代码技术的基…

Koa (下一代web框架) 【Node.js进阶】

koa (中文网) 是基于 Node.js 平台的下一代 web 开发框架,致力于成为应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石; 利用 async 函数 丢弃回调函数,并增强错误处理,koa 没有任何预置的中间件,可快速…

二叉树的前中后序遍历(迭代法)( 含leetcode上三道【前中后序】遍历题目)

文章目录 前序遍历(迭代法)中序遍历(迭代法)后序遍历(迭代法)总结 为什么可以用迭代法(非递归的方式)来实现二叉树的前后中序遍历呢? 在队列与栈专题我们就感受到了&…

KeyCode及KeyCode分发机制

文章目录 需求场景纯KeyCode 快捷操作KeyCode 按键响应操作、拦截 一、工作中常用KeyCode二、KeyCode大全三、KeyCode 响应事件事件输入流程事件响应源码分析源码举例说明 需求场景 纯KeyCode 快捷操作 经常在代码中实现返回、Home 、音量加减、截屏 等功能实现,代…

SpringBoot(40) — SpringBoot整合MyBatis-plus

前言 在上节中我们对MyBatis-plus特性有了一个整体的认识,然后也大致讲了些MyBatis与MyBatis-plus的不同之处。大家感兴趣的话,可参考以下文章 SpringBoot(39) — MyBatis-plus简介 这节我们来讲讲SpringBoot项目如何快速接入MyBatis-plus框架。 今天涉及…

开源网安多城联动、多形式开展网安周公益活动,传播网络安全知识

9月9日至15日,以“网络安全为人民,网络安全靠人民”为主题的2024年国家网络安全宣传周将在全国范围内统一开展,通过多样的形式、丰富的内容,助力全社会网络安全意识和防护技能提升。开源网安今年继续为各地企业、群众带来了丰富的…

BOE(京东方)领先科技赋能体育产业全面向新 以击剑、电竞、健身三大应用场景诠释未来健康运动新生活

巴黎全球体育盛会虽已闭幕,但世界范围内的运动热潮并未消退。9月12日,在北京恒通国际商务园(UBP)的之所ICC,BOE(京东方)开启了以“屏实力 FUN肆热爱”为主题的“科技赋能体育”互动体验活动。活…

esp32 wifi 联网后,用http 发送hello 用pc 浏览器查看网页

参考chatgpt Esp32可以配置为http服务器,可以socket编程。为了免除编写针对各种操作系统的app。完全可以用浏览器仿问esp32服务器,获取esp32的各种数据,甚至esp的音频,视频。也可以利用浏览器对esp进行各种操作。但esp不能主动仿…

vue3前端开发-小兔鲜超市-本地购物车列表页面的统计计算

vue3前端开发-小兔鲜超市-本地购物车列表页面的统计计算!这一次,实现了一些本地购物车列表页面的,简单的计算。 代码如下所示: import { computed, ref } from vue import { defineStore } from pinia export const useCartStor…

web基础—dvwa靶场(八)SQL Injection(Blind)

SQL Injection(Blind)(SQL注入之盲注) SQL Injection(Blind),SQL盲注,相比于常规的SQL注入,他不会将返回具体的数据信息或语法信息,只会将服务器包装后的信息返回到页面中。 常规SQL注入与SQL盲注详细对比…

css 样式简单学习(一)

目录 1. css 介绍 1.1 css 样式 1.2 css代码风格 1.2.1 书写格式 1.2.2 样式大小写​编辑 1.2.3 空格规范 2. 基础选择器 2.1 选择器的作用​编辑 2.2 选择器的分类 2.3 基础选择器 2.3.1 标签选择器​编辑 2.3.2 类选择器​编辑 2.3.3 类选择器-多类名​编辑 2.…