大数据开发-数据仓库简介

文章目录

    • 什么是数据仓库
    • 数据仓库基础知识
    • 数据仓库的建模方式
    • 数据仓库分层
    • 数据仓库的命名规范
    • 典型数仓系统架构

什么是数据仓库

数据仓库(Data Warehouse)是一个面向主题的、集成的、稳定的且随时间变化的数据集合,用于支持管理人员的决策

  • 面向主题:类型或者分类的意思,比如说农贸市场和超市,农贸市场针对里面的一个商贩,有萝卜白菜以及水果,都放在一个摊位上;在超市蔬菜和水果是分开的,在蔬菜里面还会进行细致的分类。农贸市场是按照商贩来分类的,而超市是按照商品也就是同一个主题来分类。
  • 集成:对于传统的数据库而言,一般数据库之间是相互独立的,而数据仓库中的数据是在对原有分散的数据库的数据抽取清洗的基础上,经过系统加工汇总整理得到的,必须消除原数据中的不一致性,保证数据仓库内的信息是关于整个企业的一致的全局信息
  • 稳定:相对稳定,传统数据库中的数据通常是实时更新的,用户做不同的操作,数据会做不同的变化;数据仓库主要供企业决策而指定的,所设计的数据操作主要是数据查询,修改和删除操作很少,像Hive根本就不支持,对于数据仓库而言只需要定时的刷新和加载数据
  • 变化:反应数据历史的变化,传统的数据库主要关心当前某一个时间段内的数据,数据仓库通常包含历史信息,包含某个数据从刚开始到现在的历史信息,通过这些信息可以对企业的发展历程和未来的趋势作出一些分析和预测

数据仓库的建设是以企业业务系统和大量业务数据的积累为基础的,数据仓库不是静态的概念,只有把信息及时交给需要这些信息的使用者,供他们作出改善业务经营的决策,才能发挥出最大的价值。把信息加以整理归纳重组,并及时提供给相应的管理决策人员就是数据仓库的一个根本任务!

数据仓库基础知识

  • 事实表、维度表:事实表指保存了大量业务数据的表或者是保存用户真实行为的表,比如销售商品的时候产生的一些订单数据;维度表指的是一个对象的属性或者特征(时间维度、地理区域维度、年龄维度等等)

image-20240317173527065

  • 数据库三范式
    • ​ 第一范式:数据库的每一列都是不可分割的原子数据项
    • 第二范式:在第一范式的基础上,数据库表中的每一列都和主键相关,不能只和主键的某一部分相关(针对联合主键而言)
    • 第三范式:要求在数据库表中不包含已在其它表中包含的非主键字段

数据仓库的建模方式

  • ER实体模型,这种模型就是满足了数据库第三范式的模型,是数据库设计的一个理论基础,几乎所有的OLTP系统设计都采用这种方式

  • 维度建模模型:雪花模型、星型模型

  • Data Vault模型:是在ER模型上衍生而来的,初衷是有效的组织基础数据层,能灵活、易扩展对业务的变化,同时强调历史性,可追溯性和原子性

  • Anchor模型:设计高度扩展的模型,K-V结构的模型

数据仓库主要是采用维度建模模型:

  • 星型模型

image-20240318100111747

  • 雪花模型(满足第三范式)

image-20240318100647742

两种模型总结:

  • 冗余:雪花模型符合业务逻辑设计,采用第三范式设计,有效降低数据冗余;星型模型的维度表设计不符合第三范式,反规范化,维度表之间不会直接关联,牺牲部分存储空间
  • 性能:雪花模型由于存在维度间的关联,采用第三范式降低冗余,通常在使用过程中,需要关联更多的维度表,导致性能偏低;星型模型采用降维的操作将维度整合,以存储空间为代价有效降低维度表的连接数,性能相对较高

数据仓库分层

为什么要分层

数据仓库在构建的过程当中,通常都是需要分层处理,业务不同,分层的技术手段也是不同的,对数据进行分层的主要原因是希望在管理数据的时候能对数据有更加清晰的掌控,主要有以下原因:

  • 清晰的数据结构,每一个分层的数据都有它的作用域,如此,在使用表的时候能更加方便的定位和理解
  • 数据血缘关系的追踪,我们最终给业务方呈现的是一个能够直接使用的最终的一个业务表,但是这个业务表是由很多其它表计算出来的,如果有一张来源表出问题了,我们希望能够快速准备的定位到问题,并且清楚设计范围,分层之后就可以很好的定位问题
  • 减少重复开发,分层之后可以开发一些通用的中间层数据,减少重复计算
  • 复杂问题简单化,分层之后可以将一个复杂任务分解成多个步骤来完成,每一层值处理单一的步骤,也便于维护数据的准确性
  • 屏蔽业务的影响,分层之后减少因为业务的改动而重新接入数据

数据仓库的分层设计

20201225162217253

  • 基础层:原始数据,数据原样保存

  • 明细层:对基础层进行清洗,解决数据质量以及完整性的问题

  • 主题层:数据的汇总层,对明细层的数据进行轻度聚合汇总,生成一系列的公共表。提升公共指标的复用性

  • 专题层:根据业务的需要,统计前三层的数据,进行业务展示,一般会把这层的数据导出到MYSQL中 ,供线上的系统查询使用

在DWD层会进行数据的清洗,数据清洗的原则:

  • 数据的唯一性校验
  • 数据的完整性校验,采集的数据可能会缺失字段,针对缺失数据的数据,建议直接丢掉;如果可以确定缺失是哪一列,也可以进行补全,可以是默认值,也可以拿前一条数据的列值
  • 数据合法性校验:针对数字列里面出现的null或者-之类的异常值,把这些值全部替换为一个特殊的值(比如0,-1)

数据仓库的命名规范

数据仓库分为4层,我们可以让它包含每一层的标识符,比如针对ODS层我们可以在Hive中去创建一个数据库,以ods_开头跟具体的业务名称,把同一层的这些表都放到这个数据库里面,对应四层就是四个数据库。

  • ODS层命名为ods_
  • DWD层命名为dwd_
  • DWS层命名dws_
  • ADS层命名为ads_
  • 临时表命名为_temp
  • 备份表 _bak

典型数仓系统架构

image-20240318111716756

通过上图可以看到,建立一个数仓需要这么几个功能模块:

  • 数据采集平台(采集各种数据源)
  • 构建数据仓库(数据的存储和管理)
  • 数据报表(数据可视化)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎么做好独立站的SEO优化

随着全球贸易的蓬勃发展,越来越多的企业开始关注外贸市场,并将目光投向了外贸网站。然而,在竞争激烈的外贸市场中,如何写出吸引人的文章,以及如何优化网站以在搜索引擎中脱颖而出,成为了外贸独立网站必须面…

前端 -- 基础 表单标签 -- 表单域

表单域 # 表单域是一个包含 表单元素 的区域 在 HTML 标签中&#xff0c; <form> 标签 用于定义表单域&#xff0c; 以实现用户信息的收集和传递 简单通俗讲&#xff0c; 就是 <form> 会把它范围内的表单元素信息提交给后台&#xff08;服务器) 对于上面讲…

外贸网站文章批量生成器

随着全球贸易的不断发展&#xff0c;越来越多的企业开始关注外贸市场&#xff0c;而拥有高质量的内容是吸引潜在客户的关键之一。然而&#xff0c;为外贸网站生产大量优质的文章内容可能是一项耗时且繁琐的任务。因此&#xff0c;外贸网站文章批量生成软件成为了解决这一难题的…

MATLAB教程

目录 前言一、MATLAB基本操作1.1 界面简介1.2 搜索路径1.3 交互式命令操作1.4 帮助系统 二、MATLAB语言基础2.1 数据类型2.2 MATLAB运算2.2.1 算数运算2.2.2 关系运算2.2.3 逻辑运算 2.3 常用内部函数2.4 结构数据与单元数据 三、MATLAB程序设计3.1 M文件3.2 函数文件3.3 程序控…

1688商品详情API接口采集商品上货

阿里巴巴1688平台并没有直接公开商品详情API接口供普通用户或开发者进行商品采集和上货。1688平台主要服务于批发和采购业务&#xff0c;其API服务通常面向的是有深度合作关系的商家或开发者&#xff0c;且需要经过申请和审核流程。 请求示例&#xff0c;API接口接入Anzexi58 …

【重温设计模式】观察者模式及其Java示例

观察者模式的概念和原理 在编程世界中&#xff0c;设计模式作为一种解决问题的策略&#xff0c;它的存在就如同人类语言中的成语&#xff0c;是一种经过时间考验的有效解决方案。 观察者模式就是其中一种重要的设计模式&#xff0c;它在很多场景中都有着广泛的应用。那么&…

【开发】Redis 的理解与数据存储格式

目录 相关传送门 1. NOSQL和关系型数据库比较 2. 主流的NOSQL产品 3. Redis的理解 4. redis数据存储格式 4.1 String 4.2 Hash 4.3 List 4.4 Set 4.5. sorted_set 注&#xff1a;手机端浏览本文章可能会出现 “目录”无法有效展示的情况&#xff0c;请谅解&#xf…

旅游行业分析及媒体邀约资源汇总

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 酒店旅游行业分析及媒体邀约资源汇总是两个相对独立但又相互关联的领域。下面将分别对这两个方面进行概述。 酒店旅游行业分析 1. 市场概况 市场规模&#xff1a;评估市场的总价值、增长…

云原生(四)、Docker-Compose

Docker-Compose Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个简单的 YAML 文件来配置应用程序的服务、网络和卷&#xff0c;从而使得在不同环境中轻松部署应用程序变得更加简单和可靠。 Docker Compose 主要由以下几个核心组件组成&#xf…

【SQL】1341. 电影评分(分组求解+合并union all;order by 多字段排序)

前述 知识点回顾&#xff1a;union all和union的区别 Union&#xff1a;对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;同时进行默认规则的排序&#xff1b;Union All&#xff1a;对两个结果集进行并集操作&#xff0c;包括重复行&#xff0c;不进行排序&…

主机与windows虚拟机远程桌面实现方法

目录 一、虚拟机相关配置1. 配置虚拟机网络2. 打开虚拟机远程桌面功能3. 配置虚拟机用户与分组 二、主机相关配置 当无法通过共享文件夹实现主机与windows虚拟机文件共享时&#xff0c;可以通过主机与虚拟机远程桌面的方法实现文件的共享传输。本文主要介绍主机与虚拟机远程桌面…

Django 应用的路由访问

项目url 添加应用访问路径 from django.contrib import admin from django.urls import path, include from app1 import viewsurlpatterns [path(admin/, admin.site.urls),path(app1/, include(app1.urls)), # 在主项目添加应用的所有路由路径 ] 就可以访问app1应用下的ur…

【Python】第十二章_外星人入侵_武装飞船

目录 项目概述&#xff1a; 1 项目需求分析 2 安装Pygame 3 开始游戏项目 3.1 创建Pygame窗口以及响应用户输入 3.2 设置背景色 3.3 创建设置类 4 添加飞船图像 4.1 创建Ship 类 4.2 在屏幕上绘制飞船 5 重构&#xff1a; 模块game_functions 5.1 函数check_even…

osgEarth学习笔记2-第一个Osg QT程序

原文链接 上个帖子介绍了osgEarth开发环境的安装。本帖介绍我的第一个Osg QT程序。 下载 https://github.com/openscenegraph/osgQt 解压&#xff0c;建立build目录。 使用Cmake-GUI Configure 根据需要选择win32或者x64&#xff0c;这里我使用win32. 可以看到include和lib路…

注册个人小程序

访问地址 https://mp.weixin.qq.com/ 立即注册 选择小程序 注册 填写信息 登录邮箱 访问邮箱的链接激活账号 选择个人&#xff0c;填写信息 注册完成&#xff0c;即可登录进入填写信息

数通-OSPF域间路由防环机制

1类LSA&#xff1a;用来描述路由器自身直连接口链路状态信息的&#xff08;也就是路由器连了什么&#xff09;&#xff1b; 2类LSA&#xff1a;用来描述伪节点的信息&#xff08;2类LSA不仅描述了拓扑信息&#xff0c;同时也描述了叶子信息&#xff09;&#xff1b; 3类LSA&a…

后端工程师快速使用axios

文章目录 01.AJAX 概念和 axios 使用模板目标讲解代码解析案例前端后端结果截图 02.URL 查询参数模板目标讲解案例前端后端结果截图 03.常用请求方法和数据提交模板目标讲解案例前端后端结果截图 04.axios 错误处理模板目标讲解案例前端后端结果截图 01.AJAX 概念和 axios 使用…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之一 哈哈镜效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之一 哈哈镜效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之一 哈哈镜效果 一、简单介绍 二、简单哈哈镜实现的原理 1、图像拉伸放大 2、图像缩小 三、哈哈镜 拉伸放大 代码实现 …

uniapp可视范围高度 - 用户屏幕可操作的屏幕高度 - 适用于APP、H5@公众号、纯H5@Chrome

可视范围高度 let heightPx uni.getWindowInfo().windowHeight uni.getWindowInfo().windowTop 官方手册 uni.getWindowInfo() | uni-app官网uni-app,uniCloud,serverless,uni.getWindowInfo()https://uniapp.dcloud.net.cn/api/system/getWindowInfo.html 实测数据 uni.ge…

【目标检测】2. RCNN

接上篇 【目标检测】1. 目标检测概述_目标检测包括预测目标的位置吗?-CSDN博客 一、前言 CVPR201 4经典paper:《 Rich feature hierarchies for accurate object detection and semantic segmentation》&#xff0c;https://arxiv.org/abs/1311.2524, 这篇论文的算法思想被称…