数仓模型理论

2023-10-27

1 数仓介绍

在这里插入图片描述

2 建模理论

建模的目标:性能、成本、效率、数据质量中找到平衡点

2.0 三范式

123要求逐渐严格

  1. 每一列不可分割
  2. 属性要完全依赖于主键,不可以只依赖一部分(数据重复很多)案例中主键是学生id和课程,所属系和系主任只依赖学生id

在这里插入图片描述
3. 主键以外的字段没有依赖关系
在这里插入图片描述

2.1 ER(Entity Relationship)实体模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Bill Inom用这个建数仓,不现实,哪有那么多时间梳理所有的实体和关系,而且业务也在飞速变化,完全跟不上趟。
ods dwd 基本跟数据库来的数据是同等粒度的,自然符合er关系模型。

2.2 dataVault模型

初衷是有效的组织基础数据层,不是针对分析场景设计的
在这里插入图片描述
中心表就是实体id,连接表表示关系(两边的id),卫星表就是实体的描述。
在这里插入图片描述

2.3 维度模型

把表抽象成事实表和维度表两种
在这里插入图片描述

2.4 总结

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

3 技术架构

3.1 工种分类

  • 底层开发维护,源码级别
  • 应用开发,写spark
  • 数据开发,数仓

此处有图

3.2 hive相关

3.2.1 数据类型

为了保证数据不失真,从mysql来的数据,整型都用bigint,字符串日期啥的都用string,有小数点的都用decimal

3.2.2 压缩格式

  1. 压缩可以减小io网络负担,但是会增大cpu负担,需要平衡
  2. lzo压缩需要建立索引才支持分割
    在这里插入图片描述

3.2.3 文件格式

ods: textfile可以便于排查问题,当然orc,parquet也ok,这一层字段基本都要清洗,列式存储没啥优势,优势在于空间小。
dw: orc,parquet都没啥问题,如果上层用了impala就只能用parquet,presto最好用orc,因为之前版本不支持parquet不知道现在支持有没有坑。

3.2.4 内部表外部表

根据场景选择:
计算用的临时表就内部表,spark、flume来的数据就用外部表
在这里插入图片描述

3.2.5 hive优化

  1. union只走一个reduce,用union all 再外面group by 比较好
    distinct也是同理
  2. 减少job数:
    给每个表加一个标记字段,union all之后再做聚合统计,这样只有一个job; 先聚合统计完了再union all是多个job
    多表join用同字段关联,reduce相同的key就减少job数了
  3. 并行执行,没啥依赖关系的可以并行
  4. 任务数控制:
    => map端:split最大最小size,小文件合并
    => reduce端:reducer处理的数据量,reduce数量
    => 输出文件数
    在这里插入图片描述
  5. 排序:order by + limit 用的是堆排序,不用非得全局有序,保证topN有序。
  6. map多承担任务,减少reduce计算成本和数据传输成本
    => map端join 、map端聚合(combiner)
  7. 数据倾斜
    => 空值都去了一个reduce,空的单独处理再unionall
    => 本身就倾斜的,加一列随机数,group by 随机数,业务字段,外面再套一层group by 业务字段
  8. 数据裁剪
    => 行数据:分区,where子查询再关联
    => 列数据:没用的字段剔除,列式存储
  9. 减少IO
    在这里插入图片描述

3.3 hbase

3.3.1 rowkey设计原则

长度不要太长(影响检索速度),唯一,散列(避免热点访问)
经常检索的、高标识度的列放在rowkey靠前的位置
有需要的话可以考虑二级索引

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数仓模型理论 的相关文章

  • 启动httpd服务:SSLCertificateFile: file ‘/var/www/miq/vmdb/certs/server.cer‘ does not exist or is empty

    启动httpd服务 SSLCertificateFile file var www miq vmdb certs server cer does not exist or is empty 启动httpd服务 失败 复制代码 root te
  • Teradata 数据库介绍

    author skate time 2010 03 11 Teradata 数据库介绍 Teradata在整体上是按Shared Nothing 架构体系进行组织的 他的定位就是大型数据仓库系统 定位比较高 他的软硬件都是NCR自己的 其他
  • 数据仓库-数据分层理论详解

    主题 Subject 是在较高层次上将企业信息系统中的数据进行综合 归类和分析利用的一个抽象概念 每一个主题基本对应一个宏观的分析领域 在逻辑意义上 它是对应企业中某一宏观分析领域所涉及的分析对象 例如 销售分析 就是一个分析领域 因此这个
  • 详解用户画像

    01画像简介 用户画像 即用户信息标签化 通过收集用户的社会属性 消费习惯 偏好特征等各个维度的数据 进而对用户或者产品特征属性进行刻画 并对这些特征进行分析 统计 挖掘潜在价值信息 从而抽象出用户的信息全貌 如图1 1所示 用户画像可看作
  • R语言实用教程薛毅清华出版社课后题答案

    有R语言实用教程薛毅课后题答案习题1 5 详情请到我的页面资源查看
  • Flink CDC(2.0) 如何加速海量数据的实时集成?

    原文 Flink CDC 如何加速海量数据的实时集成 知乎 导读 Flink CDC如何解决海量数据集成的痛点 如何加速海量数据处理 Flink CDC社区如何运营 如何参与社区贡献 今天的介绍会围绕下面四点展开 Flink CDC 技术
  • 【Hadoop技术篇】hadoop的使用

    博主介绍 博主介绍 大家好 我是淼淼 喵 很高兴认识大家 主攻领域 大数据开发 数据仓库 ETL 数据分析 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 欢迎评论 作者水平有限 欢迎各位大佬指点 相
  • 数据仓库-日期维度表的设计与实现

    时间维度表的制作 1 需求背景 在大数据分析模块中 我们需要从不同的维度分析主题表 包括常用的公用维度 时间维 地区维度 教育信息维 以及各种各样的业务维度 员工维度 部门维度 业务维度就是我们从哪些角度去分析业务过程 本文就是做一张常用时
  • 数仓知识07:数据增量更新的几种方式

    1 增量更新的几种方式 增量更新的本质 其实是获取源表中数据变化的情况 增 删 改 然后将源表中发生的变化同步至目标表中 不同的方式 获取源表中数据变化的情况不一样 受技术的限制 表结构的限制 某些方式可能无法获取到完整的数据变化情况 因此
  • IIS7解析漏洞复现

    首先我们在win7上安装IIS7 控制面板 程序 打开或关闭windows功能 勾选如下信息 尽量勾选多一点防止实验失败 点击确定 稍等 在windows7虚拟机安装phpstudy2018版本 可先在物理机下载压缩包 然后上传到虚拟机 然
  • Hive 视图和索引

    一 视图 1 1 简介 Hive 中的视图和 RDBMS 中视图的概念一致 都是一组数据的逻辑表示 本质上就是一条 SELECT 语句的结果集 视图是纯粹的逻辑对象 没有关联的存储 Hive 3 0 0 引入的物化视图除外 当查询引用视图时
  • 数据仓库灵魂30问之数仓基础理念理解

    主题 主题是一个抽象概念 是在较高层次上将数据综合 归类并进行分析利用的抽象 每一个主题都对应一个宏观的分析领域 在实际上 每一个主题对应这个分析领域的所有的分析对象 比如销售主题对应所有和销售这个领域有关的数据 主题域 主题域通常是联系较
  • 浅谈我所见识的数据治理项目

    开篇一张图 与正文不一定有关 图片来源于朋友圈 01 写在前面 熟悉笔者的朋友可能知道 笔者之前做的并非纯数据相关工作 产品或项目 笔者属于半路出家的数据人 之前也几乎没有直接接触过数据仓库 数据中台 数据平台等产品或项目 与数据库是一直打
  • 数据仓库进阶 《阿里大数据之路》第二篇 数据模型篇 (完整版)

    第8章 大数据领域建模综述 此文章为学习笔记 有兴趣的小伙伴可以根据以下指引获取更多 学习内容链接如下 视频 一起啃书 阿里大数据之路数据仓库建模基础理论研读 已完结 哔哩哔哩 bilibili 书籍 阿里大数据之路 8 1 为什么需要数据
  • 大数据开发:Hive DDL操作入门

    Hive针对于数据管理操作 提供了类SQL语言HQL 在Hadoop生态当中 Hive定位为数据仓库工具 对于数据的各种操作 也就是使用HQL来完成 而HQL查询 可以分为DDL和DML两个部分来掌握 今天的大数据开发学习分享 我们就先来讲
  • HiveSQL原理和优化详解

    Hive SQL 编译成MapReduce过程 编译 SQL 的任务是在上节中介绍的 COMPILER 编译器组件 中完成的 Hive将SQL转化为MapReduce任务 整个编译过程分为六个阶段 词法 语法解析 Antlr 定义 SQL
  • 数仓面试总结

    2021年5月开始找工作 面试了若干个数仓的岗位 面的差不多也就2个 总结下大致的面试内容 一 字节视频面 上海的一个部门 视频面挂 小伙伴内推的 这个5月份面的 大概视频面试了一个小时 主要面试内容 1 问了mapreduce的具体执行过
  • 头歌—Hive的安装与配置

    第1关 Hive的安装与配置 在修改 conf 下面的 hive site xml 文件这里 题目给的信息是错误的 正确的内容如下
  • 数据仓库与数据挖掘复习资料

    一 题型与考点 第一种 1 解释基本概念 中英互译 解释简单的含义 2 简答题 每个10分有两个一定要记住 考时间序列Time series 第六章 的基本概念含义 解释 作用 序列模式挖掘的作用 考聚类 第五章 重点考密度聚类的定义描述
  • Hive操作命令上手手册

    内容来自于 大数据Hive离线计算开发实战 Hive原理 Hive是一个基于Hadoop的数据仓库和分析系统 用于管理和查询大型数据集 以下是Hive的原理 数据仓库 Hive将结构化的数据文件映射成一张表 并提供类SQL查询功能 用户可以

随机推荐

  • VS2013编译64位OpenSSL

    安装ActivePerl 这个没什么好说的 直接运行msi即可 编译OpenSSL 1 使用Visual Studio Tool中的 VS2013 x64 本机工具命令提示 来打开控制台 也可以打开一个控制台 然后进到 安装路径 Micro
  • 尚硅谷第四课0722班 java-特殊流程控制 -数组元素的默认初始化-数组操作常见问题-Java内存的结构

    特殊流程控制 Braek public class Text1 public static void main String args for int i 0 i lt 10 i if i 3 break System out printl
  • Spring Boot 引入 easyexcel 最新版本 3.3.2,实现读写 Excel

    EasyExcel是一个基于Java的 快速 简洁 解决大文件内存溢出的Excel处理工具 他能让你在不用考虑性能 内存的等因素的情况下 快速完成Excel的读 写等功能 在 Spring Boot 环境中使用 easyexcel 需要完成
  • Collection -> 集合的同步执行

    using System using System Collections using System Collections Specialized namespace 集合和同步
  • 2023华为OD机试真题Java实现【密室逃生游戏】

    题目描述 小强正在参加 密室逃生 游戏 当前关卡要求找到符合给定密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为1 N 每个箱子中都有一个字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成 需要在这些字符串中
  • 计算机网络的类别

    1 英特威 互联网 internet是同一个概念 在平时使用中有不同的说法 网络不等于internet 2 不管网络怎么分类 最后都要连接到internet 3 网络的分类 一般来说是按照网络的覆盖范围或作用范围来进行划分的 1 第一种类型
  • 【Python爬虫】requests+Beautifulsoup存入数据库

    本次记录使用requests Beautiful pymysql的方法将大学排名的数据存入本地MySQL数据库 这是一篇学习性文章 希望能够分享在学习过程中遇到的坑与学到的新技术 试图用最简单的话来阐述我所记录的Python爬虫笔记 一 爬
  • 操作系统第九讲——线程的实现方式和多线程模型

    用户级线程 1 用户级线程由应用程序通过线程库实现 所有的线程管理工作都由应用程序负责 包括线程切换 2 用户级线程中 线程切换可以在用户态下即可完成 无需操作系统干预 3 在用户看来 是有多个线程 但是在操作系统内核看来 并意识不到线程的
  • Spring Cloud Alibaba微服务第25章之Jenkins

    目录 一 前言 1 领头羊 2 特点 二 Docker安装Jenkins 1 docker search jenkins查询镜像
  • Whitted-Style 光线追踪

    Whitted Style 光线追踪 生成相机光线 定义光线 每条光线相当于一条射线 具有两个固定属性 起点o以及方向d 此外参数t表示光线的长度 本节中所学习的光线类型为摄影机光线或主光线 对图像中的每一个像素 我们需要构造一条相机射线
  • Eggjs笔记:关系型数据库表之间的关系

    关系数据库中表与表的 3 种关系 1 一对一的关系 一个人对应一个唯一的身份证号 一个人对应一个唯一的驾驶证 一篇文章对应一个文章详情 如上图 一篇文章对应一个文章详情 本来可以是一张表 拆分成2张表 文章表用于存储一些通用的字段信息 文章
  • 教妹学Java(二十一):一文带你了解面向对象编程的所有概念

    你好呀 我是沉默王二 是 Web 全栈开发进阶之路 的作者 CSDN 的博客之星 教妹学 Java 是一套非常有趣的付费专栏 除了继续保持幽默风趣的行风风格 我还力求把每一个知识点讲得透彻明白 保证你可以从中受益 成为一名优秀的 Java
  • Request 详解

    1 Request对象 在Servlet中用来处理客户端请求需要用doGet或doPost方法的request对象 2 get和post请求区别 get请求 get提交的数据会放在URL之后 以 分割URL和传输数据 参数之间以 相连 ge
  • 简单易懂的 flex 布局技巧:前面盒子左对齐,后面盒子右对齐

    前言 页面布局的灵活性和效果直接影响着用户的使用体验 而在实现页面布局时 我们通常会使用 css 的布局方式来进行设计 其中 flex 布局作为一种比较新的布局方式 其灵活性和效果备受开发者的青睐 在这里 我将为大家介绍如何使用 flex
  • matlab学习:regress函数、stepwise函数、lasso函数

    做数据量化推理的大作业 考虑了几种回归模型 由于网上的资料并不多 只能借鉴部分信息 再加上自己的尝试 算是学会了matlab中regress stepwise lasso三个函数的一些用法 分享出来 先分享下有关regress函数的内容 g
  • C++模板基础(九)

    完美转发与 lambda 表达式模板 void f int input std cout lt lt void f int input t lt lt input lt lt n void f int input std cout lt l
  • springboot注入第三方jar包的类

    原文链接 https blog csdn net qq 22855003 article details 89843640 比如我们要注入第三方jar包里的CrawlerTask1 CrawlerTask2这个两个类 因为这两个类上没有被
  • JUC并发编程设计模式

    一 保护性暂停 1 1 定义 即Guarded Suspension 用在一个线程等待另一 个线程的执行结果 要点 有一个结果需要从一个线程传递到另一 个线程 让他们关联同一一个GuardedObject 如果有结果不断从一个线程到另一个线
  • Hadoop集群搭建【web端不显示从节点问题】

    系统 CentOS7 环境 jdk8 版本 hadoop 2 7 7 结构 hadoop01 namedata nodedata hadoop02 nodedata hadoop03 nodedata 配置 hadoop 2 7 7 etc
  • 数仓模型理论

    1 数仓介绍 2 建模理论 建模的目标 性能 成本 效率 数据质量中找到平衡点 2 0 三范式 123要求逐渐严格 每一列不可分割 属性要完全依赖于主键 不可以只依赖一部分 数据重复很多 案例中主键是学生id和课程 所属系和系主任只依赖学生