BDCC - 闲聊数据仓库的架构

文章目录

  • 典型数据仓库架构图
  • 数据仓库ETL vs ELT
    • ETL
    • ELT
    • 区别联系
  • 数据仓库分层
    • (1)数据仓库ODS层
    • (2)数据仓库CDM层
      • DWD数据明细层
      • DWS数据汇总层
    • (3)数据仓库ADS层

在这里插入图片描述


典型数据仓库架构图

在这里插入图片描述

按自下而上的顺序,分别为

  • ETL(Extract-Transform-Load)层
  • ODS(Operational Data Store)层
  • CDM(Common Dimensional Model)层
  • ADS(Application Data Store)层。

其中CDM层主要包括DWD层(Data Warehouse Detail)和DWS层(Data Warehouse Summary)两部分。

ODS(Operational Data Store):操作数据存储,主要用于存放实时的、操作性的数据,通常是来自不同源系统的数据,用于支持企业的业务操作和实时查询。

DWD(Data Warehouse Detail):数据仓库明细,是数据仓库中存储的最细粒度的数据,通常是事实表,用于支持企业的报表分析和数据挖掘。

DWS(Data Warehouse Summary):数据仓库汇总,是基于 DWD 事实表进行汇总、聚合生成的数据,通常以主题为单位组织,用于支持企业的决策分析。

ADS(Application Data Store):应用数据存储,主要用于存放为特定应用或业务场景定制的数据,通常包括模型、指标、维度等,用于支持企业的特定分析需求。

这些术语通常用于描述数据仓库和商业智能系统的不同层次和组成部分。在实际应用中,它们可能根据企业的具体需求和实现方式有所不同。

在这里插入图片描述


数据仓库ETL vs ELT

ETL

数据仓库ETL主要用于完成数据接入的过程,即从业务系统或其他数据源中提取数据,并进行数据清洗、转换和加载到目的地系统(如数据仓库)中的过程。该过程中,数据会经历抽取(Extract)、转换(Transform)和加载(Load)三个阶段,最终达到数据从源头流动到目标端的目的。

  • 提取(Extract):从不同的数据源中提取需要的数据,如数据库连接、文件导入、API 调用等。
  • 转换(Transform):对提取出来的数据进行转换和清洗,以满足数据仓库的需求。这包括数据格式转换、数据清洗、数据合并等。
  • 加载(Load):将经过转换和清洗的数据加载到数据仓库中,用于后续的数据分析和挖掘。

在这里插入图片描述

ELT

数据仓库ELT指的是将数据抽取出来后,直接进行加载,最后再进行数据转换的一种数据集成和处理方式。与传统的 ETL不同,ELT将数据的处理和加工过程转移到了数据仓库中,利用数据仓库的数据计算能力和分布式处理能力来处理和转换数据。

  • 提取(Extract):从不同的数据源中提取需要的数据,如数据库连接、文件导入、API 调用等。
  • 加载(Load):将提取出来的数据直接加载到数据仓库中,用于后续的数据分析和挖掘。
  • 转换(Transform):对加载到数据仓库中的数据进行转换和清洗,以满足数据分析的需求。

区别联系

总结来说,ETL 和 ELT 的主要区别在于数据转换和加载的顺序。ETL 方法在将数据加载到数据仓库之前进行数据清洗和转换,而 ELT 方法则在将数据加载到数据仓库之后进行数据清洗和转换。

在实际应用中,选择 ETL 还是 ELT 需要根据具体的业务需求和数据处理需求来决定。一般来说,如果数据质量要求较高,或者需要对数据进行复杂的转换和清洗,ETL 方法可能更为合适;而如果数据质量相对较好,或者需要更快地将数据加载到数据仓库中,ELT 方法可能更为合适。

在这里插入图片描述


数据仓库分层

(1)数据仓库ODS层

数据仓库ODS层也称为操作数据源层,是数据仓库中的一个核心组成部分。该层主要用于保存原始数据,完成数据积存,通常反映了企业业务系统中的最新操作,同时也是进行数据仓库的基础。

数据仓库ODS层通常采用可靠的数据仓库ETL工具为数据仓库提供数据,以此使源数据和数据仓库之间保持同步。

在这里插入图片描述
同时,数据仓库ODS层的数据被保存在磁盘中,直接体现了数据仓库的一个特性——非易失性(,即在停机或崩溃的情况下,数据不会丢失。


(2)数据仓库CDM层

CDM层是指公共维度模型层,是数据仓库中最核心和最关键的一层。主要用于提供标准化、共享的维度模型,为数据分析提供便利。CDM层通常包括**数据明细层(DWD)和数据汇总层(DWS)**两个部分。

DWD数据明细层

DWD层指数据明细层,通常接收数据仓库ODS层的原始数据,并进行清洗、标准化、维度退化、异常数据剔除等操作,进行统一处理,为数据分析提供支持。DWD层一般按照业务主题建模,包含多个维度和事实表,维度表可以用来描述业务数据的特征,而事实表则包含了关键数据指标(如销量、价格等)。

DWS数据汇总层

DWS层指数据汇总层,其主要作用是通过聚合和汇总,将DWD层中的数据按照主题进行汇总,形成宽表,进而提升数据分析性能。DWS层通常包含多个宽表,每个宽表都是由多个事实表和维度表经过聚合和分组运算生成的。DWS层中的宽表可以满足特定主题和不同维度的分析需求,减少了对其他表的操作,提升数据分析性能。

在这里插入图片描述


(3)数据仓库ADS层

ADS层也称为数据应用层,其主要功能是保存结果数据,为外部系统提供查询接口,基于数据仓库的数据为企业提供增值应用,并将数据仓库的数据应用于企业决策、报表、分析、控制等领域。ADS层通常采用OLAP(Online Analytical Processing)技术,用于快速访问和查询数据。

ADS层一般包括多个宽表,用于支持与企业应用有关的查询、分析、报告、控制、决策等操作。这些宽表一般可以通过BI工具或自定义应用程序查询和访问,以满足企业的各种数据需求。为了提高访问和查询速度,ADS层通常使用数据索引、缓存和预聚合等技术。

有时为了更好地管理和维护数据仓库,可以将ADS层从数据仓库中独立出去,成为一个独立的数据集市层(Data Mart)。数据集市层专门为某一特定业务需求而建立,可以基于某一个特定的主题或者某个业务领域建模,以满足该领域的数据分析和查询需求。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required问题解决

运行程序的时候出现了如下的报错: 解决方法:去除EnableAutoConfiguration中的(exclude{DataSourceAutoConfiguration.class})

pytest pytest.ini 配置日志输出至文件

创建pytest.ini 文件 [pytest] log_file pytest_log.txt log_file_level INFO log_file_date_format %Y-%m-%d %H:%M:%S log_file_format %(asctime)s | %(filename)s | %(funcName)s | line:%(lineno)d | %(levelname)s | %(message)s import pytest import loggingdef …

研磨设计模式day12命令模式

目录 定义 几个参数 场景描述 代码示例 参数化设置 命令模式的优点 本质 何时选用 定义 几个参数 Command:定义命令的接口。 ConcreteCommand:命令接口的实现对象。但不是真正实现,是通过接收者的功能来完成命令要执行的操作 Receiver&#x…

使用CSS的@media screen 规则为不同的屏幕尺寸设置不同的样式(响应式图片布局)

当你想要在不同的屏幕尺寸或设备上应用不同的CSS样式时,可以使用 media 规则,特别是 media screen 规则。这允许你根据不同的屏幕特性,如宽度、高度、方向等,为不同的屏幕尺寸设置不同的样式。 具体来说,media screen…

SQL地址门牌排序,字典序转为数字序

页面有一批地址数据查询,结果字符排序默认是字典序的,所以造成了门牌3号在30号之前,影响用户体验; id, road_code, road_name, address_fullname, address_name 102 10086 人民一路 北江省南海市西湖区人民一路3号 3号 103 10086…

bug复刻,解决方案---在改变div层级关系时,导致传参失败

问题描述: 在优化页面时,为了实现网页顶部遮挡效果(内容滚动,顶部导航栏不随着一起滚动,并且覆盖),做法是将内容都放在一个div里面,为这个新的div设置样式,margin-top w…

算法通过村第8关【青铜】| 二叉树的经典算法题

二叉树的双指针 1.相同的树 思路:递归的挨个比较是否相同 class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if((p null&&q!null) || (p ! null && q null) || (p!null&&q!null&&p.val ! q.val)){return f…

面试之快速学习STL-迭代适配器

先放一张大图 参考&#xff1a;http://c.biancheng.net/view/7255.html 1. 反向迭代器 例子&#xff1a; std::list<int> values{1,2,3,4,5};auto start_it values.rbegin();const auto end_it values.rend();//start_it end_it std::reverse_iterator<std::lis…

SQL - 开窗(窗口)函数

什么是开窗函数&#xff1f; 开窗函数对一组值进行操作&#xff0c;它不像普通聚合函数那样需要使用GROUP BY子句对数据进行分组&#xff0c;能够在同一行中同时返回基础行的列和聚合列 开窗函数的语法形式为&#xff1a;函数 over(partition by <分组用列> order by …

用Python画出极坐标的基向量

文章目录 极坐标基向量的推导可视化 极坐标基向量的推导 极坐标其实很神奇&#xff0c;一方面&#xff0c;它描述的是平直时空&#xff0c;另一方面&#xff0c;任意两点间的坐标差为 d r , d θ \text dr, \text d\theta dr,dθ时&#xff0c;两点间的距离却是不固定的。极坐…

Leetcode刷题之1658. 将 x 减到 0 的最小操作数

题目: 算法分析: 可以看出,这道题本意是从计算两侧和为x 的数字, 要求数量最少, 那我们可以反向思考, 假如整个数组的和为sum, 那么我们就可以求中间部分和为sum-x的数字(当然必须连续), 当中间部分的数字同时达到和为sum-x以及长度最长两个要求时, 两侧数字也就达到了和为x以…

嵌入式设备应用开发(发现需求和提升价值)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多做技术的同学,都会陷入到技术的窠臼之中。对于如何做具体的产品、实现具体的技术,他们可能很感兴趣。但是做出来的东西做什么用,或者说是有没有竞争力,事实上他们不是很关心…