【数据开发】DW数仓分层设计架构与同步策略(ODS、DWD、DWS等字段含义)

2023-10-04 20:04

本文主要是介绍【数据开发】DW数仓分层设计架构与同步策略(ODS、DWD、DWS等字段含义),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 1、什么是数据仓库(DW)
      • 2、DW分层设计架构(ODS,DWD,DWS)
      • 3、数仓同步策略

1、什么是数据仓库(DW)

Data warehouse(可简写为DW或者DWH)数据仓库是什么?

  • 是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它是一整套包括了etl、调度、建模在内的完整的理论体系。数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,听且提供直观易懂的查询结果。比较流行的有:AWS Redshift,Greenplum,Hive等。
    在这里插入图片描述

数据仓库(ETL)的四个操作

  • ETL(extractiontransformation loading)负责将分散的、异构数据源中的数据抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中。ETL 是实施数据仓库的核心和灵魂,ETL规则的设计和实施约占整个数据仓库搭建工作量的 60%~80%。
  • 1)数据抽取(extraction)包括初始化数据装载和数据刷新:初始化数据装载主要关注的是如何建立维表、事实表,并把相应的数据放到这些数据表中;而数据刷新关注的是当源数据发生变化时如何对数据仓库中的相应数据进行追加和更新等维护(比如可以创建定时任务,或者触发器的形式进行数据的定时刷新)。
  • 2)数据清洗主要是针对源数据库中出现的二义性、重复、不完整、违反业务或逻辑规则等问题的数据进行统一的处理。即清洗掉不符合业务或者没用的的数据。比如通过编写hive或者MR清洗字段中长度不符合要求的数据。
  • 3)数据转换(transformation)主要是为了将数据清洗后的数据转换成数据仓库所需要的数据:来源于不同源系统的同一数据字段的数据字典或者数据格式可能不一样(比如A表中叫id,B表中叫ids),在数据仓库中需要给它们提供统一的数据字典和格式,对数据内容进行归一化;另一方面,数据仓库所需要的某些字段的内容可能是源系统所不具备的,而是需要根据源系统中多个字段的内容共同确定。
  • 4)数据加载(loading)是将最后上面处理完的数据导入到对应的存储空间里(hbase,mysql等)以方便给数据集市提供,进而可视化。

数据库设计三范式

  • 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式时符合某一种设计要求的总结。
  • 第一范式:确保每列保持原子性,即要求数据库表中的所有字段值都是不可分解的原子值。
  • 第二范式:确保表中的每列都和主键相关。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。
    作用:减少了数据库的冗余
  • 第三范式:确保每列都和主键列直接相关,而不是间接相关。

2、DW分层设计架构(ODS,DWD,DWS)

为什么要分层?

  • 只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。
  • 1)清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  • 2)数据血缘追踪
  • 3)数据复用,减少重复开发
  • 4)把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤
  • 5)屏蔽原始数据的(影响) ,屏蔽业务的影响。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、数仓同步策略

数据同步过程按照供数的方式可以分为全量和增量两种形式。
按照存储的话又可分为覆盖、交易、快照和拉链等四种形式。
其中,根据数据量大小,可以粗略的制定分层内数据同步加载策略:
在这里插入图片描述

1) 全量
全量是从源表中抽取数据的方式之一,每次同步源表的所有数据进行后续处理。

2) 增量
增量是从源表中抽取数据的方式之一。首次抽取时(初始化)全量抽取,之后每次只同步变更的数据。

3) 覆盖
覆盖是指将数据存放到目标表时的一种同步方式。通过该方式存放数据时,每次先清除目标表中的所有数据,然后将要加载到目标表的数据全部插入到目标表中,即用最新的数据覆盖原来的旧数据。
一般和全量同步一起使用。

4) 交易
交易是指将数据保存到目标表数据的另一种同步方式。每次将最新的数据插入到目标表中。适用于源表数据不会发生修改,值会随着时间增加的表。

5) 快照
快照是指在目标表中添加一个数据的快照时间标识的字段,用于区分数据何时加载。为了介绍方便,后面简称为数据加载时间。
每次加载数据时,根据ETL程序的运行时间作为这一批次数据的加载时间,这样不同时间、不同批次的数据,目标表的数据加载时间也不同。
一般和全量同步配合使用,这样每一批数据的加载时间相同的数据,相当于目标表在该时间的一张照片,根据数据加载时间作为区分,将目标表历史上不同时间的不同版本都保存下来。

6) 拉链
拉链同步也称为历史拉链。通过该方式同步数据,仅当存放到目标表中的数据发生变更时,对应的记录才会发生变动。
通过目标表中记录的开始时间和结束时间来记录数据的历史变化轨迹。这样就能有效保留历史数据的变动信息,也不会浪费存储空间。

参考资料:1, 2 , 3,4,5,6

这篇关于【数据开发】DW数仓分层设计架构与同步策略(ODS、DWD、DWS等字段含义)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

Python处理超大规模数据的4大方法详解

《Python处理超大规模数据的4大方法详解》在数据的奇妙世界里,数据量就像滚雪球一样,越变越大,从最初的GB级别的小数据堆,逐渐演变成TB级别的数据大山,所以本文我们就来看看Python处理... 目录1. Mars:数据处理界的 “变形金刚”2. Dask:分布式计算的 “指挥家”3. CuPy:GPU

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、