数仓--------简单了解

作者前言

🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
​🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂


数仓

  • **作者前言**
  • 什么是数仓
  • 数仓分层
  • 数仓类型
  • 数仓规范
  • 数据走向

什么是数仓

数仓,又称为数据仓库,是一个存放数据的仓库。这些数据需要按照一些结构、规则来组织和存放。作为数据基础,不仅需要满足基础数据的提供,也要允许经过需求计算之后的数据支持。数仓是一套体系,整合了多种技术,为某个项目或团体实现数据支持。

数仓工程师(数仓开发工程师),更加偏向业务与建模思维的结合。对整体的需求框架有清晰的认识,在保证阶段性数据成果的前提下,还能为以后的业务拓展留有空间。不仅需要对当前的数据任务做出判断,也需要紧跟项目发展。随着数据量的增大,同样需要对数仓环境进行升级优化,例如变更计算引擎、迁移数据库、分仓管理运行脚本等等。
在这里插入图片描述
我们可以想象一下,一个仓库里面有许多的小地方,存放不同的东西,数仓就相当于一个仓库,不同的数据存放在不同的地方,如果我们要找到某些数据还要知道在哪个地方,这就要求我们要标明类型了

数仓分层

集群:物理层架构
在这里插入图片描述
我们虚拟机的就相当于是下面一部分
原理就是我们通过客户端输入sql语句,传递到sql服务,然后具体化调度,让调度在数据库里面找数据,并返回,
计算引擎就是我们的cpu和内存,而我们虚拟机的计算引擎就是我们电脑里面的计算引擎
在这里插入图片描述
1、数据库一定是搭建在服务器上,专门的数据库服务器上只会搭建一个数据库
2、计算引擎是搭建在服务器上的,引擎不随调度使用,只用于对应的数据库
3、调度即为调用数据的工具,集群调度是将多个数据库统一管理,但数据库任然是单独运行的
简单的说就是两台服务器的连接要通过集群调度来连接,进行统一的调度
在这里插入图片描述
计算引擎我们还可以理解为是一台独立的服务器,使用其的cpu和内存,进行计算不会使用到服务器1和服务器2,这样就降低了这两个服务器的要求,这两个服务器只要保证能把数据调出去就可以了,至于怎么处理数据就看计算引擎了
4、可以通过统一的SQL服务操作不同调度的数据库,但是不能进行关联查询使用
5、数据库架构中的各个部分是允许单独替换的,在集群中,某一个数据库停止运行,并不会影响其他数据库的使用

总结:sql服务是可以控制多种调度,而调度可以控制数据库,而计算引擎和数据库是搭建在服务器上的,数据 的返回要通过计算引擎进行数据的计算返回

数仓类型

(逻辑层架构)
实时数仓: 通过即时返回的数据进行计算,不断更新数据库。好比是 mysql 中的视图,可以即时展现最新数据。

  • 即时处理,不断增长的、基本无限的数据流,对应到有限的计算资源。通过引擎的快速计算并返回
  • 无边界处理,持续的数据处理,针对每一次(每一个时间段)的新增数据进行合并计算
  • 低延迟,因为计算引擎的强力,可以保证高频的数据更新
    在这里插入图片描述
    看到这里就会有一些小可爱不理解了,为啥离线数据库会存在,因为有一些数据不需要实时更新,如姓名和性别这些,这样就很节约性能,还有可以把计算好的数据进行和未计算的数据保存到离线数据库
    计算引擎
    现在主流的实时计算引擎有Blink、Flink、Kylin,能够一定程度支持快速计算的数据流引擎有Presto、Spark。
    在这里插入图片描述
    这里就是计算引擎的大致结构,计算引擎是搭建在服务器上的
    数据流引擎
    细心的小可爱就会发现数据流引擎是啥,我们先来讲讲我们通过写sql语句把数据拿出来给计算引擎,然后把计算好的数据写入到数据库,如果我们拿出来的数据用不到,计算完才会写入数据库,内存的使用量就增加了,而数据流引擎就是为此产生的,计算是发生在内存中的,数据流引擎会把需要用到的数据再过滤,不需要的数据就写回数据库,然后需要的数据传输到内存,这样内存的空间就会剩余很大
    实时计算引擎
    简单的说就是物理上缩短了硬盘和内存上的传递距离,还会在内存不够用的时,把硬盘转换成内存,内存空间就会变大,处理速度就会变快,比数据流引擎快

离线数仓:不需要实时计算的数仓环境,通常使用的数仓环境。即为通过将历史数据(一般为T+1的数据)计算好后,同意保存在数据库,在对外展示。

  • 数据可靠,因为都是历史数据,只要SQL语句准确,不会出现计算的偏差。
  • 环境友好,就如同是一般的数据库,搭建十分简单。不需要其他优化。
  • 可控性强,即使SQL或者数据计算出错,同样有修改的时间
    在这里插入图片描述

数据库环境

  1. 数据库:数仓的基本环境,包括数据库类型、计算引擎、单独的内存与CPU。这里的ADB是构建在阿里云上的数据库,是专门为阿里云使用者提供的大数据计算的数据库。小型企业或私人,通常会使用hive作为自己的数据库。一般作为数仓使用的数据库,服务器性能最低要求是8核CPU,16G内存和1T硬盘容量。
  2. ODS: 操作性数据。作为数据库到数据仓库的一种过渡,数据结构一般与数据来源保持一致,便于减少ETL的工作复杂性,且数据周期较短。
  3. DW:数据仓库。是结果数据,保存ODS过来的数据,允许报错数据,而且这些数据不会被修改。为分析性报告和决策支持而创建,对多样的业务数据进行筛选与整合。指导业务、改进流程,控制时间、成本、质量。
  4. 同等效果的还会有DM数据集市、DL数据湖,其本质都是对数据的进一步处理与分类。

简单的说就是ODS里面是基础数据,这里会原模原样的输入输出,不会更改,数据在调度环境里通过python代码进行操作并写入回来,保存到ODS,数据仓库拿到数据再进行一系列的操作等

调度环境
6. 服务器:这里的服务器更像是一个容器,承载了脚本和ETL的运行环境。如果牵扯到即时数据和大数据的计算与清洗,需要对服务器的内存和CPU性能有一定要求。一般作为调度环境的服务器,性能基本要求是8核CPU,16G内存和1T硬盘容量。
7. ETL数据库:一般为MySQL,因为通用性强。可以搭建在调度环境上,但不要和数仓在同一环境。
8. 编辑器:以Jupyter为例,本身没有特别限制。主要是针对运行脚本的语言,如果是shell或者其他,也可以使用VScode等其他编辑器进行调试。通常是将代码在编辑器中调试好后再考虑进行部署。
9. ETL:任务调度服务。只是一个服务,理论上可以使用Linux中的crontab进行替代(需要自己写关联)。主要作用是监视任务的运行情况和进程。通过调度已经正常运行的脚本,完成任务。

简单的说就是另起一台服务器用来搭建ETL和python脚本,ETL有一个mysql数据库,是属于他的,我们在jupyterLab里面写脚本,在ETL调度,从数据库环境里的基础数据读数据python代码进行一系列的操作,然后再写入数据库环境

数仓规范

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以很明了的理解清楚了

  1. 从外界收集数据保存至基础数据库
  2. 保存的外界数据在基础数据库不做任何更改,可以通过简单的计算和聚合分成不同维度、不同标签的数据,另行保存到基础数据库
  3. 根据项目需求,从基础数据库取数并进行计算,得到满足业务需要的数据,保存在项目的数仓中
  4. 通过与中心数仓的交互,可以关联到更多维度的数据
  5. 将已经做好的业务数据写入应用层的应用数据库,供后端使用
    SCRM中台,集中展示业务数据的后台,一般只对内部开发。用于将具体的数据图像或表格化展示的平台,方便业务人员读取,根据展示数据进行下一步业务动作
  6. 对外展示,不仅是网页,也可以是移动端

数据走向

在这里插入图片描述

从DB到ODS会有简单的预处理,可以是增量数据,也可以是全量数据
ODS:操作数据,存储所有基础数据,简单清洗
dwd:明细数据,将所有维度数据细化,减少事实表与维度表的关联,提高明细表的易用性,相当于未处理的中间数据
dws:汇总数据,通过聚合,形成宽表,构建指标数据
dim:维度数据,不根据日期做区分,作为最基础的展示表
ads:应用数据,存放产品化的数据,主要为前端展现

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

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

相关文章

Leetcode-每日一题【剑指 Offer 37. 序列化二叉树】

题目 请实现两个函数,分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 …

Hadoop学习一(初识大数据)

目录 一 什么是大数据? 二 大数据特征 三 分布式计算 四 Hadoop是什么? 五 Hadoop发展及版本 六 为什么要使用Hadoop 七 Hadoop vs. RDBMS 八 Hadoop生态圈 九 Hadoop架构 一 什么是大数据? 大数据是指无法在一定时间内用常规软件工具对其内…

SpringBoot案例-配置文件-yml配置文件

配置格式 SpringBoot提供了多种属性配置方式 application.propertiesapplication.ymlapplication.yaml常见配置文件格式对比 XML&#xff08;臃肿&#xff09; <configuration><database><host>localhost</host><port>3306</port><use…

【springboot】WebScoket双向通信:

文章目录 一、介绍&#xff1a;二、案例&#xff1a;三、使用&#xff1a;【1】导入WebSocket的maven坐标【2】导入WebSocket服务端组件WebSocketServer&#xff0c;用于和客户端通信【3】导入配置类WebSocketConfiguration&#xff0c;注册WebSocket的服务端组件【4】导入定时…

裂缝检测,只依赖OPENCV,基于YOLO8S

裂缝检测&#xff0c;只依赖OPENCV&#xff0c;YOLOV8S 现在YOLOV8S训练目标非常方便&#xff0c;可以直接转换成ONNX让OPENCV调用&#xff0c;支持C/PYTHON&#xff0c;原理很简单&#xff0c;自己找博客&#xff0c;有兴趣相互交流

Redis使用

环境配置 代码实现 Java public CoursePublish getCoursePublishCache(Long courseId){//查询缓存Object jsonObj redisTemplate.opsForValue().get("course:" courseId);if(jsonObj!null){String jsonString jsonObj.toString();System.out.println("从缓…

Redis之stream类型解读

目录 基本介绍 数据结构 消息 消费组 消费者 基本使用命令 概述 xadd 命令 xtrim 命令 xdel 命令 xlen 命令 xrange 命令 xread 命令 xgroup 命令 xreadgroup 命令 xack 命令 基本介绍 Redis stream&#xff08;流&#xff09;是一种数据结构&#xff0c;其…

基于React实现无限滚动的日历详细教程,附源码【手写日历教程第二篇】

前言 最常见的日历大部分都是滚动去加载更多的月份&#xff0c;而不是让用户手动点击按钮切换日历月份。滚动加载的交互方式对于用户而言是更加丝滑和舒适的&#xff0c;没有明显的操作割裂感。 那么现在需要做一个这样的无限滚动的日历&#xff0c;前端开发者应该如何去思考…

maven下载不了仓库地址为https的依赖jar,配置参数忽略ssl安全检查

问题原因 私服使用的https地址&#xff0c;然后安全证书过期的或没有&#xff0c;使用maven命令时&#xff0c;可以添加以下参数&#xff0c;忽略安全检查 mvn -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue -Dmaven.wagon.http.ssl.ignore.vali…

慕课网 Go工程师 第三周 package和gomodules章节

Go包的引入&#xff1a; 包名前面加匿名&#xff0c;只引入但不使用&#xff0c;如果对应包有init函数&#xff0c;会执行init函数&#xff08;初始化操作&#xff09; 包名前面加. 把这个包的结构体和方法导入当前包&#xff0c;慎用&#xff0c;你不知道当前包和被引入的包用…

数据库事务四大特性

事务的4大特性&#xff08;ACID&#xff09;&#xff1a; 原子性(Atomicity)&#xff1a; 事务是数据库的逻辑工作单位&#xff0c;它对数据库的修改要么全部执行&#xff0c;要么全部不执行。 一致性(Consistemcy)&#xff1a; 事务前后&#xff0c;数据库的状态都满足所有的完…

基于YOLOV8模型的课堂场景下人脸目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOV8模型的课堂场景下人脸目标检测系统可用于日常生活中检测与定位课堂场景下人脸&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检…

PHP自己的框架cookie()使用(完善篇七)

1、PHP自己的框架cookie() 2、cookie类&#xff08;CookieBase.php&#xff09; <?php class CookieBase {/*** 设置cookie*/public static function set($name, $value, $expire 3600, $path , $domain , $secure false, $httponly false) {setcookie($name, $valu…

字节律动之*你太美, emm 其实是个字符画雪花视频-哈哈哈-将视频转成一张张字符画图片

效果 整体效果 局部图片放大效果 视频转换后带雪花特效,凑合看吧, 视频地址 准备工作 安装FFmpeg 电脑上安装ffpeg处理视频并设置环境变量, windows可以参考FFmpeg的安装教程这篇博客安装 mac可以直接执行brew install ffmpeg安装 安装python依赖包 执行pip3 install -…

2023前端面试笔记 —— CSS3

系列文章目录 内容链接2023前端面试笔记HTML52023前端面试笔记CSS3 文章目录 系列文章目录前言一、CSS选择器的优先级二、通过 CSS 的哪些方式可以实现隐藏页面上的元素三、px、em、rem之间有什么区别&#xff1f;四、让元素水平居中的方法有哪些五、在 CSS 中有哪些定位方式六…

华为手机实用功能介绍

一、内置app介绍 分四块介绍&#xff0c;包括出门款、规划款、工作款和生活款。 出门款&#xff1a;红色框框部分&#xff0c;照镜子化妆/看天气 规划款&#xff1a;黄色框框部分&#xff0c;日程表/计划表/番茄时间/计时 工作款&#xff1a;蓝色框框部分&#xff0c;便笺/录…

基于android的学生公寓后勤系统/学生公寓管理系统APP

摘 要 随着网络科技的发展&#xff0c;移动智能终端逐渐走进人们的视线&#xff0c;相关应用越来越广泛&#xff0c;并在人们的日常生活中扮演着越来越重要的角色。因此&#xff0c;关键应用程序的开发成为影响移动智能终端普及的重要因素&#xff0c;设计并开发实用、方便的应…

快速排序笔记

一、quick_sort方法中如果 il,jr 会死循环的分析 1、示例代码 void quick_sort(int a[],int l,int r){if(l>r) return;int il,jr; //此处设置会导致死循环int x num[(lr)>>1];while(i<j){while(a[i] <x); //死循环的地方while(a[--j] >x);if(i<j) swap(a…

Docker consul的容器服务注册与发现

前言一、服务注册与发现二、consul 介绍三、consul 部署3.1 consul服务器3.1.1 建立 Consul 服务3.1.2 查看集群信息3.1.3 通过 http api 获取集群信息 3.2 registrator服务器3.2.1 安装 Gliderlabs/Registrator3.2.2 测试服务发现功能是否正常3.2.3 验证 http 和 nginx 服务是…

小研究 - JVM 的类装载机制

本文通过对一个类装载实例的分析&#xff0c;阐明了 Java虚拟机的类装载的代理机制和由此定义的命名空间&#xff0c;指出了类装载机制在容器/组件/抽象框架结构中的作用。 目录 1 引言 2 实例 3 分析 3.1 类装载的代理机制 3.2 Java的命名空间 3.3 解决问题 4 应…