数仓建设学习路线(二)模型建设(1)

news2024/9/20 20:38:11

OLTP VS OLAP

OLTP

概念

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

OLAP

概念

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

种类

MOLAP

MOLAP将OLAP分析所用到的多维数据物理上存储的形式,形成“立方体”的结构(cube),更注重预计算,常见组件如下

  • Kylin

不够灵活,无二级索引

需要cube与计算,后期维护成本大

支持离线数据规模大

支持标准sql,性能高,查询速度快

  • Druid

维度之间不能随意组合,不能自由查询

不支持join,sql支持很弱

支持大规模数据

高性能,列存压缩,预聚合

ROLAP

ROLAP无需预计算,直接在构成多维数据模型的事实表和维度表上进行计算,常见组件如下

  • ClickHouse

易用性较弱,SQL语法不标准,join的支持不好,维护成本高

列式存储,通过数据引擎使得数据存储本地化来提高性能,具有单机版超高性能

  • Spark/Impala/Presto

当查询复杂度高且数据量大时,可能分钟级别的响应。同时其不是存储引擎,因此没有本地存储。

支持的计算数据规模大(非存储引擎)

灵活性高,随意查询数据

易用性强,支持标准SQL以及多表join和窗口函数

处理方式简单,无需预处理,全部后处理,没有冗余数据

HOLAP

由于MOLAP和ROLAP有着各自的优点和缺点,为此一个新的OLAP结构——混合型OLAP(HOLAP)被提出,它能把MOLAP和ROLAP两种结构的优点结合起来,常见组件如下

  • Doris

发展不够成熟,稳定度待提升

支持高并发场景、秒级/毫秒级查询

支持标准化sql,支持大款表和多表join

OLTP VS OLAP两者对比

对比

数仓分层

为什么要分层?

  1. 清晰数据结构:数仓每一层都有对应的作用,方便在使用时更好定位与了解

  2. 数据血缘追踪:清晰知道表/任务上下游,方便排查问题,知道下游哪个模块在使用,提升开发效率及后期管理维护

  3. 减少重复开发:完善数仓好中间层,减少后期不必要的开发,从而减少资源消耗,保障口径、数据统一

  4. 把复杂问题简单化:将复杂任务拆解成多个步骤来完成,每一层处理单一步骤,当数据问题出现时候,只需从问题起点开始修复

分层具体内容

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建模(维度维度),由于多层建设导致冗余高数据精度低

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

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

相关文章

为什么C语言没有被C++所取代呢?

今日话题,为什么C语言没有被C所取代呢?C的复杂编译器实现和嵌入式平台的限制,使C语言保持了其地位。嵌入式系统多数仅支持C,即使支持C,也会限制某些功能,尤其是异常处理和RTTI。此外,C引入的功能…

k8s的集群调度

scheduler:负责调度资源。把pod调度到node节点。通过算法调度。分为预算策略和优先策略 List-watch 在k8s集群当中通过List-watch的机制进行每个组件的协作。保持数据同步。可以实现每个组件之间的解耦。 通过kubectl来配置文件统一向集群内部的apiserver来发送命…

Unity中在URP下开启深度图

文章目录 前言一、在Unity中打开URP下的深度图二、在Shader中开启深度图1、使用不透明渲染队列才可以使用深度图2、半透明渲染队列深度图就会关闭 三、在Shader中,获取深度图四、URP深度图 和 BRP深度图的区别 前言 URP下的深度图、深度图记录的就是物体离摄像机的…

java基于SSM的二手交易平台设计与开发论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本二手交易平台就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信息&am…

HDFS概述

文章目录 HDFS背景定义HDFS 优缺点HDFS 组成HDFS文件块大小 HDFS背景定义 背景 先给大家介绍一下什么叫HDFS,我们生活在信息爆炸的时代,随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁…

走近阿里巴巴 揭秘阿里文化之旅

一、【项目背景】 看过去:从18人到近3万人,从50万起家,到市值接近5000亿美元,20年间,阿里步步为营,缔造互联网神话。 看发展:阿里将B系纳入新一轮的核心战略,志在打造世界第五大经…

P9 视频码率及其码率控制方式

前言 从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程(概念类)_C…

听GPT 讲Rust源代码--compiler(38)

File: rust/compiler/rustc_parse/src/parser/expr.rs 在Rust的源代码中,rust/compiler/rustc_parse/src/parser/expr.rs这个文件扮演了解析表达式的角色。表达式是Rust中的一种语法结构,用于表示程序中的计算、操作和值。 该文件定义了一个名为ExprPa…

SQL基础知识1

一、基本知识 1、定义 2、语句结构 二、库和表的操作 1、创建、删除库 方法一 在navicat的查询中写 方法二 用mysql命令窗口写 1、用管理员身份运行MySQL的窗口 2、先看一下已经存在的数据库 3、新建数据库 2、导入表 3、表的相关操作 1、创建表 实例 名称不能和系统关…

Java 基础(一)

1.Java 基础概念 Java 是美国Sun 公司于1995 年推出的一门计算机编程语言,2009年被Oracle 公司收购 Java 之父:詹姆斯高斯林(James Gosling) Java语言的产品是 JDK(Java Development Kit :Java开发者工具包) ,必须安…

2024年1月记录(水文遥测站、中心站)

1.水文遥测站、中心站 水文遥测终端|遥测终端机RTU|遥测数传仪|中小河流水文自动监测设备|水雨情自动测报设备-平升电子

Java学习苦旅(二十五)——哈希表

本篇博客将详细讲解哈希表。 文章目录 哈希表概念冲突概念避免冲突哈希函数设计常见哈希函数 负载因子调节解决冲突闭散列开散列(哈希桶) 和java类集的关系 结尾 哈希表 概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关…

结算时间和可组合性助力Sui上DeFi蓬勃发展

结算时间是基于Sui交易处理模型的度量标准,确保DeFi用户几乎立即看到交易结果。可组合性则是深深融入Sui的编程环境,扩展了其对对象和智能合约的影响。Sui深度的可组合性赋予DeFi构建者引入创新产品的能力,使其在其他区块链上的DeFi应用中独树…

【算法提升】LeetCode每五日一总结【01/01--01/05】

文章目录 LeetCode每五日一总结【01/01--01/05】2023/12/31今日数据结构&#xff1a;二叉树的前/中/后 序遍历<非递归> 2024/01/01今日数据结构&#xff1a;二叉树的 前/中/后 序遍历 三合一代码<非递归>今日数据结构&#xff1a;二叉树的 前/中/后 序遍历 三合一代…

加密世界危机四伏,普通用户该如何应对钓鱼陷阱

据区块链安全公司 Scam Sniffer 称&#xff0c;加密货币网络钓鱼活动在 2023 年有所增加&#xff0c;诈骗者利用钱包盗取恶意软件从受害者那里窃取了近 3 亿美元。金额很惊人是不是&#xff1f;只是没想到素以小心谨慎为口号冲浪的我也栽了一回。还原一下事情经过&#xff1a; …

【镜像压缩】linux 上 SD/TF 卡镜像文件压缩到实际大小的简单方法(树莓派、nvidia jetson)

文章目录 1. 备份 SD/TF 卡为镜像文件2. 压缩镜像文件2.1. 多分区镜像文件的压缩&#xff08;树莓派、普通 linux 系统等&#xff09;2.2. 单分区镜像文件的压缩&#xff08;Nvidia Jetson Nano 等&#xff09; 3. 还原镜像文件到 SD/TF 卡参考链接 1. 备份 SD/TF 卡为镜像文件…

NACHI机器人模拟示教器如何切换中文

前言 现在开始学习机器人的编程语言&#xff0c;那么要学习会用首先得用模拟示教器来学习&#xff0c;但是全是英文确实比较难受一些些&#xff0c;没有中文来的直观。所以摸透一下如何给示教器更换语言。 具体步骤 步骤一&#xff1a;将中文的汉化包下载下来。具体的下载链…

iOS调出拨打电话弹窗

只需将手机号填入12345的部分即可 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:"tel://12345"] options:{} completionHandler:^(BOOL success) {}]; 如下图所示

SpringBoot整合sentinel

1、引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 2、 配置文件添加 spring:cloud:sentinel:transport:dashboard: ip:8858 项目重启&#x…

JavaScript数组操作完全手册

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ 目录 ✨ 前言 第一节:数组的定义和创建 1.1 数组字面量 [] 1.2 Array构造函数 1.3 Array.of() …