数据仓库分层

B-tree在外部存储和数据库索引中的应用 B-tree在外部存储中的应用 大家知道我们在使用数据结构时,常常将其直接放置到内存中。但是大数据量只能放到磁盘中。这里要说的就是,在磁盘存储中,文件系统是如何利用B-tree结构来提高磁盘读取效率的。 首先来说一下内存和磁盘性能上的巨大差别。 大家知道数据在磁盘上存储在特定的扇区。因此要读写特定的数据,需要三步: 1,首先磁头必须移动到正确的磁道上。 2,然后需要等待磁片旋转,使磁 阅读详情

一.数据仓库分层

  • ODS(Operation Data Store)层:原始数据层,存放加载原始日志、数据,数据保持原貌不做处理。
  • DWD(Data warehouse detail)层:对ODS层数据进行清洗(去除空值,超过极限范围的数据)、维度退化、脱敏等。
  • DWS(data warehouse service)层:以DWD为基础,按天进行轻度汇总。
  • DWT(data warehouse Topic)层:以DWS为基础,按主题进行汇总。
  • ADS(Application Data Store)层:为各种统计报表提供数据。

二.数据仓库为什么要分层?

  • 把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题。
  • 减少重复开发:规范数据分层,通过的中间层数据,能够减少极大的重复计算,增加一次计算结果的复用性
  • 隔离原始数据:不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。

三. 作用

ODS:关系建模
DWD:

  • 数据清洗:过滤脏数据(去空值,把不符合要求的数据过滤),把数据分类,给某些数据添加必要字段。
  • 维度建模

DWS:需要按照主题建模,主题是一个分析问题的角度,圈定了一个分析的范围,计算出这个主题各种指标,而我们的指标主要都是汇总,在DWS里面只汇总过去一天的数据,得到以天为粒度的指标。
DWT:实际的工作中,需要计算某个App,过去1天、1周、1月、1个季度、1年,上线以来的新增用户。
ADS:给领导,给产品经理需要各种统计结果,直接从DWS和DWT很快得到。

四.数据集市与数据仓库

区别

  • 数据集市(Data Market):是一种微型的数据仓库,通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级别的,一般只能为某个局部范围内的管理人员服务。
  • 数据仓库是企业级别的,能为整个企业各个部门的运行提供决策支持手段。

五.数据仓库命名规范

表命名

  • ODS层命名为ods_表名 ods_payinfo
  • DWD层命名为dwd_dim/fact_表名(dim指的是维度表,fact指的是事实表)
    dwd_dim_user dwd_fact_pay ----> dwd_表
  • DWS层命名为dws_表名
  • DWT层命名为dwt_表名
  • ADS层命名为ads_表名
  • 临时表命名为xxx_tmp,为了得到一些结果临时数据,随时的删除,一般建的是内部表
  • 用户行为表,以log为后缀。如果不加就是db

六.数仓范式概念

定义:范式可以理解为设计一张数据表的表结构,符合的标准级别,规范和要求
优点
关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性。
为什么要降低冗余性?

  • 为了减少磁盘存储
  • 以前没有分布式系统,都是单机,只能增加磁盘,磁盘的个数也是有限的
  • 一次修改,需要修改多个表,很难保证数据的一致性
  • 方便增删数据

缺点
获取数据时,需要通过Join拼接出最后的数据,主要因为这个业务数据要对单条或者几条数据的随机读写,这样Join成本不会太高,大量的Join就会导致处理速度非常的慢。

七.范式的分类

目前业界范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)。

八.范式的分区

  • 第一范式的核心原则就是:属性不可切割。是所有关系型数据库的最基本要求,如果数据表的设计不符合这个最基本的要求,那么操作一定不能成功。
  • 第二范式的核心原则就是:不能存在“部分函数依赖”
  • 第三范式的核心原则就是:不能存在传递函数依赖

九.关系建模与维度建模(重点)

数据处理大概可以分为两类:

  • 联机事务处理OLTP(on-line transaction processing):是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。
  • 联机分析处理OLAP(on-line analytical processing):数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

区别:

对比属性OLTPOLAP
读写性每次查询只返回少量记录对大量记录进行汇总
写特性随机、低延时写入用户的输入批量导入
使用场景用户,Java EE后端项目内部分析师,为决策提供支持
数据表征最新数据状态随时间变化的历史状态
数据规模GB、分表分库TB到PB

关系建模

在这里插入图片描述
关系建模如图所示,严格遵守第三范式,由于数据分布于众多的表中,这些数据可以更为灵活的被应用,功能性较强,关系模型主要应用与OLAP系统中,为了保证数据的一致性以及避免冗余,大部分业务系统的表都是遵循第三范式的。

在这里插入图片描述
维度建模如图所示,主要应用于OLAP系统中,通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据,大大减少了Join操作,提升了查询的执行效率。
关系模型虽然冗余少,但在大规模数据,跨表分析统计查询过程中,会造成多表类关联,这会大大降低执行效率,所以通常采用维度建模建模,把相关各种表整理成两种:事实表和维度表

维度建模

在维度建模的基础上分为三种:

  • 星型建模:它与雪花建模区别在于维度的层级,标准的星型模型只有一层,而雪花会涉及多层。
  • 雪花建模:比较靠近3NF,但是无法完全遵守,因为遵循3NF的性能成本太高
  • 星座建模:与其他两种区别是事实表的数量,星型模型是基于多个事实表,基本上是很多数据仓库的常态,因为很多数据仓库都是多个事实表的,所以星座不星座知识反应是否有多个事实表,它们之间是否共享一些维度表,并不起冲突

十.维度表和事实表(重点)

维度表:一般是对事实的描述信息。每一张维表对应现实世界中的一个对象或概念。

维表的特征

  • 维度的范围很宽(具有多个属列比较多)
  • 跟事实表相比,行数相对较小:通常<10万条
  • 内容相对固定:编码表

维度是看待事实的角度,在设计的时候并不知道后续的分析业务有哪些,为了减少关联操作(join),提升性能,就会在一个维度表里面搞很多字段。

事实表

事实表中的每行数据代表一个业务事件(一个业务事件对应一个事实表),“事实”这个术语表示的是业务事件的度量值(可统计次数、个数、件数、金额等)
每一个事实表的行包括:具有可加性的数值型的度量值、与维度相连接的外键,通常具有两个或两个以上的外键、外键之间表示维度之间多对多的关系。

特征

  • 非常的大,条数比较多
  • 内容相对的窄:列数较少,具体看场景
  • 经常发生变化,每天会新增加很多

事务性事实表

以每个事务或事件为单位,例如一个销售订单记录,一笔支付记录,作为事实表里的一行数据。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新

周期型快照事实表

周期型快照事实表中不会保留所有数据(不会保留每条数据的明细),只保留固定时间间隔的数据,中间的变化明细不关心,每天做一个全量。(加入购物车是一个典型的周期性快照事实表,后续统计的主要是某个商品被加入了购物车多少件,多少人加入了购物车,我们关心的是用户是怎么把这个加入的购物车)

累积型快照事实表

累计快照事实表用于跟踪业务事实的变化,例如,数据仓库中可能需要累积或者存储订单,从下单开始,到订单商品被打包、运输和签收的各个业务阶段的时间点数据来跟踪订单声明周期的进展情况,当这个业务过程进行时,事实表的记录也要不断更新。

周期快照事实表与 累计快照事实表的区别?

  • 周期快照事实表记录的是重复的可预测到的时间间隔的事实,例如账户月结余事实表,用来记录每个月末的账户结余信息,一般周期快照的数据会按报表需要的周期进行记录,比较适合周期长一点的情况。
  • 累计快照适用于较短周期,有着明确的开始和结束状态的过程,如一个订单执行的过程,并记录过程中每个步骤的执行时间,使分析人员对执行的过程有整体的把握,周期快照事实表记录上每一个步骤的执行时间是逐步建立的,随着执行的过程逐步更新的事实表中
数据仓库【分层设计】 数据仓库,通过数仓建模更好的组织管理和存储数据,以便在性能、成本、效率和质量之间取得最好的平衡。 阅读详情

相关推荐

数仓分层——ODS、DW、ADS

ODS(Operational Data Store,运营数据存储)是数据仓库体系结构中的一个重要组成部分,通常作为数据仓库架构中的第一个层次或者与原始数据层紧密相关。ODS 层主要用于存储和处理来自业务应用系统的实时、操作性数据,提供给业务用户和决策者进行日常的操作性查询和分析。数据来源: ODS 层的数据主要来自于组织内部的业务应用系统,如企业资源计划(ERP)、客户关系管理(CRM)、销售、采购、库存管理系统等。这些系统产生的数据通常是实时、操作性的,包含了组织的日常业务活动的详细信息。数据存储。

麦当当的博客 1万+

数据仓库分层解析(详细)

数据仓库分层是一种组织和管理数据仓库的结构化方法,它将数据仓库划分为不同的层次或级别,每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问,并提供一种清晰的结构来支持数据管理和分析需求

super_mochi1 1万+

数据仓库详解及分层理论

目录数据仓库定义数据仓库的特点数据仓库的作用数据仓库与传统数据库的区别数据仓库的架构数据仓库的要求什么是数据仓库分层数据仓库分层的原因数据仓库具体的分层说明 数据仓库定义 数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用使用。 数据仓库的特点 面向主题的:数据仓库都是基于某个明确的主题,仅需要与该主题相关的数据,其他的无关细节将会被去掉。 ​ 集成的

有所谓的博客 1982

数据仓库建模和分层

数据仓库的分层,建模理论的选择,事实表的分类,维度表的分类,数据仓库的构建

m0_57697768的博客 1万+

数据仓库常用的分层方法

0 概述 数据分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更易理解和使用。而目前网络中大部分可以被检索到相关文章只是简单地提及数据分层的设计,或缺少明确而详细的说明,或缺少可落地实施的方案,或缺少具体的示例说明。 因此,本文将指出一种通用的数据仓库分层方法,具体包含如下内容: 介绍数据分层的作用 提出一种通用的数据分层设计,以及分层设计的原则 ...

给我一点温度 4357

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 681

【数据仓库】数据库仓库分层

数据中心的用户希望数据是由他们熟悉的术语表现的。数据集市(Data Mart),也叫数据市场,数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。但是,实际情况下,我们所面临的数据状况很有可能是复杂性高、且层级混乱的,我们可能会做出一套表依赖结构混乱,且出现循环依赖的数据体系,比如下面的右图。该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 1240

从Android到鸿蒙:UI框架迁移的实战指南与最佳实践

本文为Android开发者提供了将应用UI框架迁移至鸿蒙系统的实战指南。文章深入对比了Android命令式编程与鸿蒙ArkUI声明式编程的核心差异,详细讲解了从环境配置、布局迁移(如RecyclerView转List)、逻辑处理到多设备适配与性能优化的全流程最佳实践,帮助开发者高效完成迁移工作。

weixin_29208077的博客 434

数据仓库之分层 为什么分层 如何分层 和数据库的区别

数据仓库分层如何理解数仓为什么要设计数据分层通用的数据分层设计每层之间的界限又是什么?数据集市和数据仓库的区别数据库和数据仓库有什么区别? 如何理解数仓 数据仓库就是整合多个数据源的历史数据进行细粒度的、多维度的分析,帮助高层管理者或者业务分析员做出决策。 数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。 为什么要设计数据分层 需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一

cjl的博客 1008

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1767

10X Genomics数据实战:手把手教你用Seurat处理单细胞PBMC数据(附完整代码)

本文详细介绍了如何使用Seurat处理10X Genomics的单细胞PBMC数据,从数据获取、质控到降维分析和细胞分群的全流程。通过实战代码演示,帮助研究者掌握单细胞RNA测序数据分析的核心技术,提升对细胞异质性的理解。

weixin_29053577的博客 254

浅析数仓分层:DB+ODS+DW+DM

本期将从结构层面了解数据仓库分层的几个名词和简单理解。 文章目录1 理想的数据分层总体结构2 DB层:关系型数据库和非关系型数据库2.1 关系型数据库RDB2.2 非关系型数据库NoSQL3 ODS层:操作数据存储层3.1 ODS产生背景3.2 ODS在企业数据架构中担任的角色3.3 ODS层的特征3.4 ODS层的功能4 DW层:数据仓库 1 理想的数据分层总体结构 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFfRleTt-1607275403838)(C:%5C.

q1042960848的博客 3349

相控阵多功能雷达工作模式识别技术综述

本文综述了相控阵雷达工作模式识别技术的研究进展。首先介绍了相控阵雷达的典型工作模式分类及其信号特征参数,包括搜索模式(VS、RWS、TWS)、跟踪模式(STT、MTT、TAS)和其他模式(SAM、SAR)等。随后重点阐述了基于信号特征的识别方法,包括时域特征(PRI分析、脉冲幅度包络、数据率)、频域特征(载频变化、调制方式)和混合特征分析方法。最后讨论了当前技术面临的挑战与发展趋势,包括复杂信号环境下的识别难题、新型雷达技术的适应需求以及深度学习技术的应用前景。该领域的研究对电子侦察和威胁评估具有重要意义。

Grow into a more wonderful you 1813

数据仓库分层模型

1.为什么分层? 1.空间换时间 2.便于计算 3.逻辑清晰 2.业务数据库(mysql,mongdb,oracle数据源) ODS(可操作数据层) DW(数据仓库层) DWD层 (数据明细层) 负责数据的最细粒度的数据 经过了ODS层清洗(去空),去重,去燥,去除大于或者小于一定阈值的明细数据。 DWM层 (数据中间层) 在DWD层基础上,进行轻度汇总,结合常用...

liminghui4321的博客 1万+

Go游戏服务器开发的一些思考(一):语言层面

Go是比C++更好用的高级语言使用Go作为服务器开发的主语言前,首先需要对Go语言做下定性。在接触Go前,可能给人的印象(至少是我),Go是一门脚本语言。看了 官方文档 ,才知道Go是一门高级语言。与C++相比,它有以下优势: 面向接口的编程没有C++复杂的面向对象语法,如类、继承、多态、虚函数等等。Go中只有结构与接口,从语言层面上,直接指导功能与功能间的解耦。直接且语法简单 提供语言反射机制提供

范安崇的博客 9560

车企自动泊车技术全解|纯视觉/多传感器融合双路线、端到端大模型革新 助力机械车位/无划线车位/极窄车位精准泊车落地

随着智能驾驶技术全面下沉,自动泊车已从高端车型专属配置,普及至十万级家用车型,成为车载核心刚需功能。但市面主流车企的泊车能力差距极大,核心差异源于传感器硬件架构、算法迭代逻辑、场景训练体系的全方位分化。传统规则式泊车算法仅适配标准划线车位,面对地库暗光、标线磨损、机械双层车位、极窄靠墙车位、无划线空地泊车等真实长尾场景极易失效。

getusushu的博客 108

数据仓库的详细分层

数据仓库的详细分层 1.什么是数据仓库 仓库就是用来存储,外界放入数据的,仓库不会生产数据也不会消耗这些数据。 数据仓库:简称DW data warehouse 里面装的都是数据 目的:构建面向分析集成化数据环境,主要职责就是做分析,对仓库里面的数据来做分析,然后数据分析可以支持企业分析人员做决策 2.数据分析的特征 面向主题:数据分析有一定的范围,需要选取一定的主题进行分析 集成性:集成各个其他方面关联的一些数据,比如分析订单购买人的情况,就涉及到牵连用户信息的情况 非易失性:数据分析主要是分析过去已经

a13813972564的博客 2556

【GRASS GIS零基础入门教程】2.1:初识GRASS GIS软件

GRASS GIS是一个强大的计算引擎,用于栅格、矢量和地理空间处理。它支持地形和生态系统建模、水文、数据管理和图像处理。通过内置的时态框架和Python API,它可以进行高级时间序列分析和快速地理空间编程,并针对各种硬件配置的大规模分析进行优化。

智慧空间实验室 848

数据仓库之数仓分层及hive分层

目录。

张伟的专栏 1534

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

3.2 总结 数据仓库,分层设计,和数据库区别,Hive对比和调优

如何理解数仓 为什么要设计数据分层 通用的数据分层设计 分层的原则是什么?为什么要这样分层?每层之间的界限又是什么? 数据集市和数据仓库的区别 数据库和数据仓库有什么区别? 维度建模 HDFS文件读写流程 Hive和HBase的对比区别 Hive内部表和外部表的区别? Hive分区表和分桶表的区别? Hive调优及优化

cjl的博客 937

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数据治理系列:数据仓库物理分层_数据仓库逻辑分层

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

Alex的博客 2396

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据仓库——分层原理

一、数仓建模的意义,为什么要对数据仓库分层? 只有用数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。 1、清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。数据关系条理化:源系统间存在复杂的数据关系,比如客户信息同时存在于核心系统、信贷系统、理财系统、资金系统,取数时该如何决策呢?数据仓库会对相同主题的数据进行统一建模,把复杂的数据关系梳理成条理清晰的数据模型,使用时就可避免上述问题了。 2、数据血缘

weixin_46010244的博客 9436

一种通用的数据仓库分层方法

0x00 概述 数据分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更易理解和使用。而目前网络中大部分可以被检索到相关文章只是简单地提及数据分层的设计,或缺少明确而详细的说明,或缺少可落地实施的方案,或缺少具体的示例说明。 因此,本文将指出一种通用的数据仓库分层方法,具体包含如下内容: 介绍数据分层的作用 提出一种通用的数据分层设计,以及分层设计的原则 ...

木东居士 8560

数据仓库分层 (ODS、DWD、DWS)

数据仓库分层1.数据仓库DW1.1简介1.2主要特点1.3与数据库的对比2.数据分层2.1数据运营层(ODS)2.2数据仓库层(DW)2.3数据服务层/应用层(ADS)3.附录数据库设计三范式 作者:AmyZYX 出处:http://www.cnblogs.com/amyzhu/ 1.数据仓库DW 1.1简介 Data warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它是一整套包括了etl、调度、建模在内的完整的理论体系

qq_42005540的博客 5012

数据仓库的分层,你知道吗?

数据仓库的分层,你知道吗? 数据仓库更多代表的是一种对数据的管理和使用的方式,它是一整套包括了数据建模、ETL(数据抽取、转换、加载)以及作用调度等在内的完整的理论体系流程。 数据仓库在构建过程中通常都需要进行分层处理。业务不同,分层的技术处理手段也不同。分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控。详细来讲,主要有如下几个原因。 清晰的数据结构 每一个数据分层都有它的作用域,在使用表的时候能更方便地定位和理解。 将复杂的问题简单化 将一个复杂的任务分解成多个步骤来完成,每一层只处理单一

gggSam的博客 1万+
上一篇: Sqoop面试题总结
下一篇: Hive——编写自定义UDF函数和UDTF函数
Poolweet_
博客等级 码龄7年 21粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值