(学习笔记)数仓建模

数仓建模

  • OLAP
  • 数仓分层
  • 数据模型
  • 数据模型建设方法
  • 模型建设具体流程
  • 模型数据域
  • 事实表设计
    • 事实表
    • 拉链表
  • 数据模型规范
    • 表命名(采用阿里one-data设计)
    • 字段命名(采用阿里one-data设计)
    • 数据模型标注规范
  • 数据模型发展周期

OLAP

OLTP:概念全称OnLine Transaction Processing,中文名:联机事务处理系统,主要是执行基本日常的事务处理,比如数据库记录的增删查改,例如mysql、oracle

OLAP:全称OnLine Analytical Processing,中文名:联机分析处理系统,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果,例如、ClickHouse、Doris、Kylin

MOLAP:MOLAP将OLAP分析所用到的多维数据物理上存储的形式,形成"立方体"的结构(cube),更注重预计算
Kylin:
优点:支持离线数据规模大、支持标准sql,性能高,查询速度快
缺点:不够灵活,无二级索引、需要cube与计算,后期维护成本大
Druid:
优点:支持大规模数据、高性能,列存压缩,预聚合
缺点:维度之间不能随意组合,不能自由查询、不支持join,sql支持很弱

ROLAP:ROLAP无需预计算,直接在构成多维数据模型的事实表和维度表上进行计算
优点:列式存储,通过数据引擎使得数据存储本地化来提高性能,具有单机版超高性能
缺点:易用性较弱,SQL语法不标准,join的支持不好,维护成本高
ClickHouse
优点:支持的计算数据规模大(非存储引擎)、灵活性高,随意查询数据、
易用性强,支持标准SQL以及多表join和窗口函数、处理方式简单,无需预处理,全部后处理,没有冗余数据
缺点:当查询复杂度高且数据量大时,可能分钟级别的响应。同时其不是存储引擎,因此没有本地存储。

Spark/lmpala/Presto
优点:支持的计算数据规模大(非存储引擎)、灵活性高,随意查询数据、
易用性强,支持标准SQL以及多表join和窗口函数、处理方式简单,无需预处理,全部后处理,没有冗余数据
缺点:当查询复杂度高且数据量大时,可能分钟级别的响应。同时其不是存储引擎,因此没有本地存储。

HOLAP:由于MOLAP和ROLAP有着各自的优点和缺点,为此一个新的OLAP结构——混合型OLAP(HOLAP)被提出,它能把MOLAP和ROLAP两种结构的优点结合起来
Doris
优点:支持高并发场景、秒级/毫秒级查询、支持标准化sql,支持大款表和多表join
缺点:发展不够成熟,稳定度待提升
在这里插入图片描述

数仓分层

数仓为什么分层:
清晰数据结构:数仓每一层都有对应的作用,方便在使用时更好定位与了解
数据血缘追踪:清晰知道表/任务上下游,方便排查问题,知道下游哪个模块在使用,提升开发效率及后期管理维护
减少重复开发:完善数仓好中间层,减少后期不必要的开发,从而减少资源消耗,保障口径、数据统一
把复杂问题简单化:将复杂任务拆解成多个步骤来完成,每一层处理单一步骤,当数据问题出现时候,只需从问题起点开始修复

如何分层:
ODS接入层:全称Operational Data Store,ODS层是最接近数据源的一层,从数据源(api、数据库等)将数据同步数仓中,中间不做任何处理操作
DWD明细层:全称Data Warehouse Detail,是数仓明细数据层,对ODS层的数据进行关联,清洗,维度退化(将维度表中维庶数据放入明细表中),转换,主题域建设等操作
DWM轻度汇总层:全称Data WareHouse Middle,轻度汇总层数据仓库中DWD层和DWS层之间的一个过渡层次,是对DWD层的生产数据进行轻度综合和汇总统计(可以把复杂指标前置处理),提升公共指标的复用性,减少重复加工
DWS汇总层:全称Data WareHouse Servce,按照主题域、颗粒度(例如买家、卖家)划分,按照周期粒度、维度聪合形成指标较多的宽表,用于提供后续的业务查询,数据应用,最重要一点需要在DWS层完成指标口径统一及沉淀
ADS应用层:全称Applacation data service,按照应用域,颗粒度划分(例如买家、卖家)划分,按照应用主题将对应数据标签补充至应用层,最终形成用户画像及专项应用

数据模型

业务模型:也称企业模型,它为企业提供一个框架结构,以确保企业的应用系统与企业经常改进的业务流程紧密四配,它是从纯业务角度对企业进行业务建模,特指某业务具体流程环节例如客服业务-客服评价的数据模型。

概念模型:对业务模型进行抽象处理成一个个业务概念实体,最常见的就是E-R模型,与具体数据库系统无关,必须转化为逻辑或者物理数据模型才能在数据库系统中实现,概念模型就像是er图记录整体概览,包括了每一步操作,像是大图展示。

逻辑模型:概念模型中的概念实体以及实体之间的关系在关系型数据库上的逻辑化。

物理模型:面向计算机的,因此与具体的数据库系统、操作系统以及计算机硬件都相关的,是逻辑数据模型在这个物理平台上的物理化,例如存储的元数据信息(表名、字段名、存储信息、路径等等)。

数据模型建设方法

维度模型(新):按照事实表、维表来构建数据仓库模型的方法,称为维度建模。根据维度表与事实表之间的链接方式,分为星型模型和雪花型模型。
星型模型:因为数据的冗余所以很多查询不需要做外部连接,因此一般情况下效率比雪花模型高,设计与实现比较简单。
只需要确定主键
不需要在外部进行连接,大大提高性能实现高度并行化
容易理解,只需要看关联条件和血缘关系就能确定模型
雪花模型:由于去除了冗余,有些统计就需要通过表的连接才能产生,所以效率不一定有星型模型高。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。
需要主外键来确立管理
雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低,不能并行化
过多的连接使得开发和后期维护都增大难度

三范式建模(旧)
遵循三范式建模(第一范式:每个属性都不可再分,第二范式:非主字段都完全依赖于主键,第三范式:非主键字段不能依赖于其他非主键字段)

三范式与维度建模区别
考虑角度不同:
三范式严格遵循每一范式内容,按照范式内容建模
kimball建模(维度维度),按照多个维度进行分析,更多按照星形模型

出发点不一样:
3NF建模(三范式建模),考虑自上而下建模(这里的上指的是上游数据源,先拥有dw层再往上进行设计,瀑布模型,不易于后期扩展)
kimball建模(维度维度),考虑自下而上建模(这里的下指的是数据集市),先拥有数据集市来设计dw层,敏捷模型,易于扩展易于后期维护及使用)

模型精度不一样:
三范式模型由于没有分层概念冗余低数据精度高
kimball建模((维度维度),由于多层建设导致冗余高数据精度低

模型建设具体流程

模型设计基本原则
在这里插入图片描述
维度建模设计大图
在这里插入图片描述
模型建设过程
在这里插入图片描述
总线矩阵:指以一致性维度为列,以业务过程为行,构建业务的数据矩阵,通过标记表示该维度与业务过程的相关性

数据域:对当前业务场景或业务sop进行拆分完成建设
事实表设计:围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。
维度:对当前场景描述及补充
颗粒度:数据域下场景用户再进行细致拆分(例如用户可拆分为买家或卖家),颗粒度必须拆分为不可拆分的状态(例如用户拆分为买家,买家不可拆分)
度量值:对场景下数值类型的数据记录

模型数据域

概念:指面向业务分析,将业务过程或者维度进行抽象的集合。其中业务过程指企业活动中的事件,例如下单、退款、加购等,维度即度量的环境,例如下单事件中的买家。
在这里插入图片描述
跨数据域:背景:例妆DWS、ADS出现跨数据域(例如该模型既用于风控又用于用户画像)情况,需要根据跨的数据域再重新定数据/主题域

事实表设计

事实表

围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。

事务性事实表(更多应用于DWD层):对于单事务事实表,一个业务过程建立一个事实表,只反映一个业务过程的事实对于多事务事实表,在同一个事实表中反映多个业务过程。

累计快照事实表(更多应用于DWD层):累计快照事实表对于类似于研究事件之间时间间隔的需求,采用累计快照事实表可以很好地解决,如在统计买家下单到支付的时长、买家支付到卖家发货的时长等。

周期快照事实表(更多应用于DWS层):在确定的时间间隔内对实体的度量进行抽样,用于研究一段时间内实体的度量值(例如近3O天pv、uv)。
在这里插入图片描述
事实表设计过程:识别业务过程->选择事实表类型->声明颗粒度及维度->补充主题域下度量值->维度退化

拉链表

记录历史数据,记录一个事物从开始一直到当前状态的所有变化的信息
拉链表应用场景:数据量大、表中部分内容会更新、每天保留一份全量数据、维度表的缓慢变化等
拉链表设计:

加行:为明细表添加两个字段一个字段为拉链的开始日期(默认为用户数据出现的日期),另一个字段为拉链的结束日期(默认为9999-99-99),当一个客户a信息变更则添加一条新数据,新数据的拉链日期为更新日期,结束日期为9999-99-99,而原来的结束日期为当天更新日期
在这里插入图片描述

加列:为明细表添加四个字段一个字段为拉链的开始日期(默认为用户数据出现的日期),一个为拉链结束日期,一个为第二个段拉链开始日期(默认9999-99-99),一个为第二个段拉链结束日期(默认9999-99-99),当原数据更新时候,原第一个拉链日期不变,第一个拉链结束日期为数据变更日期,第二个日期开始时间为数据更新时间,第二个结束日期不变
在这里插入图片描述
在这里插入图片描述

数据模型规范

表命名(采用阿里one-data设计)

ODS层(接入层):
全量: ods__业务数据库名}_{业务数据表名}
增量:ods {业务数据库名}{业务数据表名}_delta

DWD层(明细层):
dwd_{(事业部名(适用大厂多事业部情况)上数据域)钛二级数据域)Af业务过程(不清楚或没有写detail)L_df/di(df为全显数据, di为增量数据
全量数据(对源数据全部覆盖)
增星数据(对源数据进行分区式覆盖,例如昨天存储10O0条订单数据,今天存储100条订单数据)

DWS层(汇总层):
dws (事业部名(适盱大厂多事业部情况)上(数据域)二级数据域)〉乂(颗粒度}(例如买家/卖家)(业务过程)X周期粒度)(例如近30天写30d、90天写m)

ADS层(应用层):
ads_{应用类别}(例如风控叫risk)_{应用主题/应用场景) {颗粒度}(例伽如买家/卖家)业务过程)(调度周期)(例如\天调度一次写
ld)

dim表(维度表):
dim_{事业部名(适用于大厂多事业部情况)}_(维度定义}(例如日期写date)

tmp表(临时表):
tmp_{表名}{临时表编号}

view(视图):
[表名}_view

字段命名(采用阿里one-data设计)

是否xxxxx用户,类型字段命名规范 : is_{内容}
枚举值类型字段命名规范 : xxxx_type
时间戳类型字段命名规范 :xxx_date,xxx_time
周期指标命名 :{内容)时间描述}(如最近一次last1,最近两次last2,历史his,最近第二次last2nd)_date、最近180天6m
百分比命名 :{内容}_rate
数值类型(整型)命名 :{内容}cnt{周期(周期看情况加)
数值类型(小数)金额命名 :{内容}amt{周期(周期看情况加)
两个时间段之间统计命名 :xxx(时间段1内行为)_xxx(时间段2内操作)_dur

数据模型标注规范

owner
表中文名+使用说明
每个开发字段中文名(中文名需要包含该字段内容,例如是否为xxxx用户,需要写出包含内容(VN)
每个模型的颗粒度
每个模型的主键(联合主键)

数据模型发展周期

在这里插入图片描述
在这里插入图片描述
作为数据产品/平台该如何思考本次讲的内容
可以从图中这几处想到能做的平台内容,例如数仓建设标准功能,对应的数据域内容,表中每个宁段具体信息等

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

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

相关文章

实验七、创建小型实验拓扑《计算机网络》

早检到底是谁发明出来的。 一、实验目的 完成本实验后,您将能够: • 设计逻辑网络。 • 配置物理实验拓扑。 • 配置 LAN 逻辑拓扑。 • 验证 LAN 连通性。 二、实验任务 在本实验中,将要求您连接网络设备并配置主机实现基本的网络…

【YOLO系列】YOLOv10论文超详细解读(翻译 +学习笔记)

前言 研究AI的同学们面对的一个普遍痛点是,刚开始深入研究一项新技术,没等明白透彻,就又迎来了新的更新版本——就像我还在忙着逐行分析2月份发布的YOLOv9代码,5月底清华的大佬们就推出了全新的v10。。。 在繁忙之余&#xff0…

第101天:权限提升-Win 本地用户进程注入令牌窃取ATSCPS 服务命令

目录 思维导图 案例一: WIN-本地用户-AT&SC&PS 命令 AT命令 sc PS 案例二:WIN-本地用户-进程迁移注入获取 msf 案例三:WIN-本地&Web-令牌窃取&土豆溢出 令牌窃取 土豆溢出 案例四: uac原理与绕过 思维…

【Qt】Frame和Widget的区别

1. 这两个伙计有啥区别? 2. 区别 2.1 Frame继承自Widget,多了一些专有的功能 Frame Widget 2.2 Frame可以设置边框

C51学习归纳4 --- 矩阵键盘

一、开发板原理图 我们可以看到这个键盘是4*4的,行可以由4个数据接口接收(P1_4~7),列可以由4个数据接口接收(P1_0~3)。 所以我们可让行作为扫描方向,或者列作为扫描方向,进行按键扫描。如何扫描…

VS2017配置OpenCV4.5.1

VS2017配置OpenCV 一、下载OpenCV二、配置OpenCV的电脑环境变量三、配置visual Studio添加路径复制文件到C盘 四、如何使用注意运行时选择Debug x64 五、报错:VSOpencv出现:xxx处有未经处理的异常: Microsoft C 异常: cv::Exception,位于内存…

@vue-office/excel遇到的问题 error in ./src/components/gem-histogram.base.vue?vuetype=templateid=691572

下载后一直抱这个错误 10:39:39 - Building for production... 10:40:36 ERROR Failed to compile with 41 errors2:40:31 AM 10:40:36 10:40:36 error in ./src/components/gem-histogram.base.vue?vue&typetemplate&id691572bb&scopedtrue 10:40:36 …

GaussDB的数种形态

GaussDB作为一种新兴的关系型数据库产品,似乎有点让人摸不着头脑。有朋友问我GaussDB单机版怎么样,有人说GaussDB是分布式数据库,还有人说它是云数据库,还有人会把GaussDB和华为的数据仓库GaussDB DWS混为一谈。确实,公…

算法学习笔记——时间复杂度和空间复杂度

时间复杂度和空间复杂度 常数操作: 固定时间的操作,执行时间和数据量无关 位运算 > 算数运算 > 寻址 > 哈希运算,都是常数操作,哈希运算操作时间最慢 链表的get(i)方法不是常数操作,因为链表不是连续的存储…

颠沛流离学二叉树(完结撒花篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

MT2083 屠龙勇者

思路&#xff1a; 跟上题类似&#xff0c;贪心策略&#xff1a;w从小到大排序&#xff0c;每个头找到第一个>d的w 代码&#xff1a; #include <bits/stdc.h> using namespace std; #define ll long long const int N 1e5 10; int n, m; int d[N]; int w[N]; int …

Spring Security 注册过滤器关键点与最佳实践

在 Spring Security 框架中&#xff0c;注册过滤器是实现身份验证和授权的关键组件。正确配置和使用注册过滤器对于确保应用程序的安全性至关重要。以下是一些关于 Spring Security 注册过滤器的注意事项和最佳实践。 过滤器链顺序&#xff1a; 注册过滤器通常位于过滤器链的末…

[next.js]pwa缓存

配置Next.js (v14 App Router模式) 使其支持PWA缓存&#xff0c;配置server worker和mainfest.json&#xff0c;让项目支持离线访问和可安装。 安装依赖next-pwa npm i next-pwa配置next.config.js const path require(path);const withPWAInit require(next-pwa);// 判断…

想要成长就要持续地学习,而如何学习更有效率呢

为什么很多人学了知识&#xff0c;但是总感觉记不住&#xff0c;用不上呢&#xff1f; 在学习的过程中&#xff0c;为什么总感觉没什么进步呢&#xff1f; 看了很多书&#xff0c;为什么总感觉没什么用呢&#xff1f; 要说明这些问题&#xff0c;首先我们要知道一个好的、完整的…

Chrome跳转新的标签页自动打开控制台设置方法

Chrome跳转新的标签页自动打开控制台设置方法 文章目录 Chrome跳转新的标签页自动打开控制台设置方法1. 首先打开控制台2. 点击设置3. 选择Preferences -> Global -> 选中 Auto-open DevTools for popups4. 回到控制台勾选 preserve log保留日志![请添加图片描述](https:…

图像背景去除工具:removebg

文章目录 简介面向不同用户价格 简介 removebg&#xff0c;就是remove background&#xff0c;是一款智能图片背景去除工具。 在免费使用时&#xff0c;用到的是本地的CPU。我第一次试用时&#xff0c;图片刚上传之后&#xff0c;电脑的帧率便直线下降&#xff0c;鼠标都拖不…

硬件26、EDA绘制板框

1、放置-板框-矩形 2、在pcb上绘制出需要大小的板框 3、设置板框四个角为圆弧状&#xff0c;在右侧属性栏设置圆角半径

计算机网络—交换机综合实验

一、实验内容 交换机基本配置设置虚拟局域网VLAN跨交换机实现VLAN2台交换机间用2条链路连接&#xff0c;实现2条链路聚合 二、实验环境 Cisco Packet Tracer 三、实验拓扑 1、 设置虚拟局域网VLAN 2、跨交换机实现VLAN 3、2台交换机间用2条链路连接&#xff0c;实现2条链…

像图一样交流:为大语言模型编码图

译者 | 高永祺 单位 | 东北大学自然语言处理实验室 原文链接&#xff1a;https://blog.research.google/2024/03/talk-like-graph-encoding-graphs-for.html 1.作者介绍 Bahare Fatemi&#xff0c;谷歌蒙特利尔研究部门的研究科学家&#xff0c;专门从事图表示学习和自然语言…

智能推荐算法应用:如何提升淘宝在线扭蛋机用户购物体验

在淘宝的在线扭蛋机平台上&#xff0c;用户的购物体验至关重要。为了提升这一体验&#xff0c;我们引入了智能推荐算法&#xff0c;帮助用户发现他们可能感兴趣的扭蛋产品。这一技术的应用不仅提高了用户的购物效率&#xff0c;还大大增强了用户的购物乐趣。 一、智能推荐算法…