【数据开发】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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑