数据仓库【4】:最佳实践

news2025/1/23 3:21:40

数据仓库【4】:最佳实践

  • 1、表的分类
    • 1.1、事实表
    • 1.2、维度表
    • 1.3、事务事实表
    • 1.4、周期快照事实表
    • 1.5、累积快照事实表
    • 1.6、拉链表
  • 2、ETL策略
    • 2.1、全量同步
    • 2.2、增量同步
  • 3、任务调度
    • 3.1、为什么需要任务调度?
    • 3.2、常见任务类型
    • 3.3、常见调度工具

1、表的分类

维度建模中的表类型

  • 事实表
  • 维度表
  • 事务事实表
  • 周期快照事实表
  • 累积快照事实表
  • 拉链表

1.1、事实表

  • 一般是指一个现实存在的业务对象,比如用户,商品,商家,销售员等等
    在这里插入图片描述

1.2、维度表

  • 一般是指对应一些业务状态,代码的解释表。也可以称之为码表
  • 通常使用维度对事实表中的数据进行统计、聚合运算
    在这里插入图片描述

1.3、事务事实表

  • 随着业务不断产生的数据,一旦产生不会再变化,如交易流水、操作日志、出库入库记录
    在这里插入图片描述

1.4、周期快照事实表

  • 随着业务周期型的推进而变化,完成间隔周期内的度量统计,如年、季度累计
  • 使用周期+状态度量的组合,如年累计订单数,年是周期,订单总数是量度
    在这里插入图片描述

1.5、累积快照事实表

  • 记录不确定周期的度量统计,完全覆盖一个事实的生命周期,如订单状态表
  • 通常有多个时间字段,用于记录生命周期中的关键时间点
  • 只有一条记录,针对此记录不断更新
    在这里插入图片描述

1.6、拉链表

  • 拉链表记录每条信息的生命周期,用于保留数据的所有历史(变更)状态
  • 拉链表将表数据的随机修改方式,变为顺序追加
    在这里插入图片描述

实现方式一

  • 使用日期分区表,全量数据记录,每天的分区存储昨天全量数据与当天增量数据合并的结果
  • 数据量大会导致全量表膨胀,存储大量永远不更新的冷数据,对性能影响较大
  • 适用于数据量少的情况
    实现方式二
  • 使用日期分区表,推测数据最长生命周期,存储周期内数据;周期外的冷数据存储到归档表
  • 需要保留多天的分区数据,存储消耗依然很大
    实现方式三
  • 使用日期分区表,以业务实体的结束时间分区,每天的分区存放当天结束的数据;设计一个
    时间非常大的分区,如9999-12-31,存放截止当前未结束的数据
  • 已结束的数据存放到相应分区,存放未结束数据的分区,数据量也不会很大,ETL性能好
  • 无存储浪费,数据全局唯一
  • 业务系统可能无法标识业务实体的结束时间,可以使用其它相关业务系统的结束标志作为此
    业务系统的结束,也可以使用最长生命周期时间或前端系统的数据归档时间

2、ETL策略

2.1、全量同步

  • 数据初始化装载一定使用全量同步的方式
  • 因为业务、技术原因,使用全量同步的方式做周期数据更新,直接覆盖原有数据即可

2.2、增量同步

  • 传统数据整合方案中,大多采用merge方式(update+insert)
  • 主流大数据平台不支持update操作,可采用全外连接+数据全量覆盖方式
    • 如果担心数据更新出错,可以采用分区方式,每天保存最新的全量版本,保留较短周期
      在这里插入图片描述

3、任务调度

3.1、为什么需要任务调度?

  • 解决任务单元间的依赖关系
  • 自动化完成任务的定时执行

3.2、常见任务类型

  • Shell
  • Java程序
  • Mapreduce程序
  • SQL脚本
    在这里插入图片描述

3.3、常见调度工具

  • Azkaban
  • Oozie
    在这里插入图片描述

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

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

相关文章

类的加载顺序问题-demo展示

面试的的时候经常会被问到包含静态代码块、实例代码块和构造器等代码结构的加载顺序问题,下面借用一个面试题,回顾一下类的代码加载顺序。 public class AooTest {public static void main(String[] args) {AooTest.f1();}static AooTest test1 new Ao…

操作系统:分页存储管理方式

页式存储管理中,主存空间按页分配,可用一张“位示图”构成主存分配表。假设主存容量为2M字节,页面长度为512字节,若用字长为32位的字作主存分配的“位示图”需要多少个字?如页号从1开始,字号和字内位号&…

【Electron】富文本编辑器之文本粘贴

由于这个问题导致,从其他地方复制来的内容 粘贴发送之后都会多一个 换行 在发送的时候如果直接,发送innerHTML 就 可以解决 Electron h5 Andriod 都没问题,但是 公司的 IOS 端 不支持,且不提供支持(做不了。&#xff…

让你的 Python 代码更快的 9 个技巧

在最近参加的一些技术会议上,我常常听到参会员在会中讨论技术选型时提到“Python太慢了”。然而,这种观点往往没有考虑到Python的众多优点。实际上,如果能够遵循Pythonic的编程风格,Python的运行速度可以非常快。这其中的关键在于掌握一些技术细节上的巧妙技巧。那些经验丰…

十大排序算法归纳

目录 排序算法的分类 插入排序算法模板 选择排序算法模板 冒泡排序算法模板 希尔排序算法模板 快速排序算法模板 归并排序算法模板 堆排序算法模板 基数排序算法模板 计算排序算法模板 桶排序算法模板 排序算法的分类 插入:插入,折半插入&am…

搭建普罗米修斯Prometheus,并监控MySQL

1.简介 prometheus是一种时间序列的数据库,适合应用于监控以及告警,但是不适合100%的准确计费,因为采集的数据不一定很准确,主要是作为监控以及收集内存、CPU、硬盘的数据。 Prometheus生态系统由多个组件组成,其中许…

【Java进阶篇】SimpleDateFormat是线程安全的吗? 使用时应该注意什么?

SimpleDateFormat是线程安全的吗?使用时应该注意什么? ✔️ 典型解析✔️拓展知识仓✔️SimpleDateFormat用法✔️日期和时间模式表达方法✔️输出不同时区的时间✔️SimpleDateFormat线程安全性✔️问题重现✔️线程不安全原因✔️如何解决✔️使用局部变量✔️加同步锁✔️…

基于YOLOv5+Deepsort 的PCB缺陷检测及计数系统

背景: PCB(Printed Circuit Board,印刷电路板)是电子产品中至关重要的组成部分,它承载着电子元器件并提供电气连接。在PCB制造过程中,由于工艺、材料或设备等因素的影响,可能会引入各种缺陷&am…

Seata AT TM->RC->RM一次完整的交互过程

原理 TM两阶段: 阶段1:TM向TC申请全局事务,netty客户端发起了一次记录xid的请求 阶段2:TC协调之后,决定执行RM是否提交或者回滚。 spring公共组件部分 1、SeataAutoConfiguration类 利用springboot自动装配机制从…

Java版商城:Spring Cloud+SpringBoot b2b2c电子商务平台,多商家入驻、直播带货及免 费 小程序商城搭建

随着互联网的快速发展,越来越多的企业开始注重数字化转型,以提升自身的竞争力和运营效率。在这个背景下,鸿鹄云商SAAS云产品应运而生,为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软…

【算法练习】leetcode链表算法题合集

链表总结 增加表头元素倒数节点,使用快慢指针环形链表(快慢指针)合并有序链表,归并排序LRU缓存 算法题 删除链表元素 删除链表中的节点 LeetCode237. 删除链表中的节点 复制后一个节点的值,删除后面的节点&#x…

多环境及SpringBoot项目部署

1、多环境 2、项目部署上线 原始前端 / 后端项目宝塔Linux容器容器平台 3、前后端联调 4、项目扩展和规划 多环境 程序员鱼皮-参考文章 本地开发:localhost(127.0.0.1) 多环境:指同一套项目代码在把不同的阶段需要根据实际…

【Vue2+3入门到实战】(17)VUE之VueCli脚手架自定认创建项目、ESlint代码规范与修复、 ESlint自动修正插件的使用 详细示例

目录 一、本节内容二、VueCli 自定义创建项目三、ESlint代码规范及手动修复1.JavaScript Standard Style 规范说明2.代码规范错误3.手动修正 四、通过eslint插件来实现自动修正 一、本节内容 VueCli脚手架自定认创建项目ESlint代码规范与修复ESlint自动修正插件 二、VueCli 自…

设备健康管理系统助力制造企业实现数字化转型

在当今快速变革的制造业环境中,数字化转型已成为制造企业保持竞争力和实现可持续发展的关键。在这个数字化转型的浪潮中,设备健康管理系统正发挥着重要的作用。设备健康管理系统通过实时监测、预测分析和智能诊断等功能,为制造企业提供了全面…

中医电子处方系统,西医个体诊所门诊卫生室病历记录查询软件教程

中医电子处方系统,西医个体诊所门诊卫生室病历记录查询软件教程 一、软件程序问答 1、电子处方软件如何快速开单? 如下图,软件以 佳易王诊所电子处方管理系统V17.1版本为例说明 在开电子处方的时候可以按单个药品开,也可以直…

动态规划10-多重背包

题目描述 有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。 思路分析 区别于完全背包和简单的01背包问题&…

数据的确权、流通、入表与监管研究(二)数据与流通

附:2023年数据资源入表白皮书下载: 关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光…

牛客网面试题知识点记录-02

1.collection接口 2.在构造方法中调用方法A,若方法A被子类重写,则会先调用子类的方法A。举例如下题: 此时会输出null,调用顺序为:子类初始化,但是子类实现了Base,会先执行Base的构造方法,构造…

golang第五卷---包以及常用内置包归纳

包以及常用内置包归纳 包的概念math包time包sync包 Go 语言官方的包文档网站:包文档 包的概念 Go语言是使用包来组织源代码的,包(package)是多个 Go 源码的集合,是一种高级的代码复用方案。 任何源代码文件必须属于某…

2022–2023学年2021级计算机科学与技术专业数据库原理 (A)卷

一、单项选择题(每小题1.5分,共30分) 1、构成E—R模型的三个基本要素是( B )。 A.实体、属性值、关系 B.实体、属性、联系 C.实体、实体集、联系 D.实体、实体…