当前位置: 首页 > news >正文

数据仓库基础知识

什么是数据仓库?

数仓,DataWarehouse,是一个 面向主题的、集成的、稳定的、与时间相关的 数据集合。

而这个数据集合的建立,是为了支持管理者的决策过程。

也就是说,我们通过建设数仓,为业务中的流程改进、成本计算,产出收入等环节,提供相应的决策指导及流程监控。

数仓有什么特点?

面向主题性

数仓中的所有数据,都是面向特定的业务域而产生的。

比如,某电商APP,就会有面向用户的数仓,面向订单的数仓,面向商品的数仓

我们在建设数仓时,需要在较高层次上把业务拆分为各个域,我们用数据的方式,去定义了这个域,就有了数仓中的面向主题性。

集成性

面向主题性中我们说到,我们的数据需要对应不同的业务域。

那每个业务域中的每个事件产生的数据,都会有最初的底层数据库。

怎么通过这些数据库,抽取我们想要的业务域,集成一个可描述的,有层级的,完整的数据集合,就是数据仓库的建立过程。

这个过程,其实就是抽取零散业务数据构建集合的过程。

所以,数据仓库具有集成性。

稳定性

物理上,数据存储需要稳定性。

业务上,我们要保证数仓建设的结构清晰,层次分明,从而保证整体数仓结构的稳定性。

通俗来说,就是保证数仓结构不要频繁变更

与时间强相关

从物理存储上说,数据仓库随着时间和业务的变化,会不断往里追加数据内容,也会不断删掉旧的数据内容。数仓中的每个表格,都会有对应的“生命周期”。

从业务意义上说,数据仓库反应的是,某一段历史时间内,业务在数据上的表现情况。

数仓的建设方式有哪些?

• K模式

大家可以去搜索一下 Ralph Kimball 这个大佬,他提出的数据仓库架构中的 key模式(敏捷模式),即:关键个体角色目标驱动。

这种方式总体来说,就是明确短期需求后,直接开干。

因为直接开干,所以前期我们整体投入小,见效快。

但是随着业务的发展和迭代,后期肯定需要重构。而重构的成本往往都很高。

• I模式

这又是另一个大佬提出的架构理论,大家可以搜一下 Bill Inmon,他提出的information模式(瀑布模式),即:领域经验知识驱动。

这个和K模式相反,强调前期强规划,一定要想清楚长期目标和需求,再干活。

这种方式,前期投入的成本会高出很多,我们需要规划业务域,数据域,数据层次,表结构等等。

但是后期,整体效果会比K模式好,只是前期见效慢。

整体来说呢

建议前期业务初步发展阶段,先用K模式,但是也要有一个I模式的规划

即:业务发展到什么节点,我们需要开始I模式的搭建。这个需要有个明确的规划。

笔者曾经就有 跑着K模式,后期重构了3次才全部切换成I模式的经历。所以一定要提前做规划。

数仓的层级有哪些?

开局先上图:

从图中我们可以看出,大致可以分为4层:ODS +  DWD + DWS + ADS

其中,DWD 和 DWS 可以统一至 CDM层。

当然,我们还需要对应的维度数据:DIM层

ODS层:操作数据层(Operational Data Store),基本上是数据的源头,我们在这一层只做简单的数据清洗,不做业务逻辑处理,存储所有我们能够存储且需要存储的数据。

DWD层:明细数据层(Data Warehouse Detail),一般和ODS层一样,但是会采用维度退化的方法,将维度退化至事实表中,减少事实表格和维度表格的关联,提高表格的易用性。

DWS层:汇总数据层(Data Warehouse Summary),按照主题划分,采用宽表化的手段,构建对应主题下的数据,用于后续业务的查询。

ADS层:应用数据层(Application Data Store),主要存放数据需求中的个性化统计指标。这一层一般面向展示使用。不同需求下的,不同粒度的,个性化统计指标数据。

DIM层:维度表,一般会有2种数据。

一是业务相关的业务属性数据,如用户画像,商品价格。

二是数据中的配置属性数据,如在某表格的 类型  字段中存储了A,A代表的具体的含义,可以在这种 配置属性数据 的维度表格中映射出来。

分层咱们知道了,那么如何根据分层来构建规范的命名呢?

笔者抛砖引玉,提供一些参考。

我们在表名中,一般需要以下几个信息:

1. 所属业务域:是什么业务线?是什么产品线?

2. 所属主题域:是业务域中的用户数据?还是订单数据?

3. 数据分层:在ODS/DWD/DWS/ADS/DIM中属于哪一层?

4. 存储粒度:是全量还是增量?增量周期是多少?

5. 自定义标签:当前数据的业务过程定义

... ... 

举个例子(以某淘中的订单优惠券数据为例):

mtao_dwd_orders_coupon_day

业务域 + 数据分层 + 主题域 + 自定义标签 + 存储粒度

当然,这仅是抛砖引玉,大家可以按照自己的业务情况,建设相关的规范,适合自己业务最重要。

相关文章:

数据仓库基础知识

什么是数据仓库? 数仓,DataWarehouse,是一个 面向主题的、集成的、稳定的、与时间相关的 数据集合。 而这个数据集合的建立,是为了支持管理者的决策过程。 也就是说,我们通过建设数仓,为业务中的流程改进、…...

M 芯片的 macos 系统安装虚拟机 centos7 网络配置

centos 安装之前把网络配置配好或者是把网线插好 第一步找到这个 第二步打开网络适配器 选择图中所指位置 设置好之后 开机启动 centos 第三步 开机以后 编写网卡文件保存 重启网卡就可以了,如果重启网卡不管用,则重启虚拟机即可 “ ifcfg-ens160 ” 这…...

AcWing 3708. 求矩阵的鞍点

输入样例&#xff1a; 3 4 1 2 3 4 1 2 3 4 1 2 3 4输出样例&#xff1a; 1 4 4 2 4 4 3 4 4 #include<bits/stdc.h> using namespace std; const int N1010; int n,m,a[N][N],x[N],y[N],flag1; int main(){scanf("%d%d",&n,&m);for(int i1;i<n;i…...

web前端开发工程师的具体职责范本(合集)

web前端开发工程师的具体职责范本1 职责&#xff1a; 1.负责web前端架构的搭建&#xff0c;核心业务功能开发和核心代码编写。 2.配合产品经理&#xff0c;实现产品UI和交互方面的需求&#xff0c;持续界面优化&#xff0c;提升用户体验。 3.参与相关业务需求变更评审。 4.…...

从源程序到可执行文件的四个过程

从源程序到可执行文件的四个过程 预处理编译汇编链接 程序要运行起来&#xff0c;必须要经过四个步骤&#xff1a;预处理、编译、汇编和链接&#xff0c;如下图所示&#xff1a; -E选项&#xff1a;提示编译器执行完预处理就停下来&#xff0c;后边的编译、汇编、链接就先不执…...

C++部署学习

gcc -E src/main.c -o src/main.i gcc -S src/main.c -o src/main.s gcc -C src/main.c -o src/main.o gcc src/main.c -o exec ./exec...

linux下lazarus开发ide里 BGRAControls控件库comboBox示例

下载开发工具 ftp://ftp.freepascal.org/pub/lazarus/releases/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.2.6/https://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%202.2.6/ sourceforge下载可能比较慢&#xff0c;选择 下载有问题&…...

Redis学习路线(9)—— Redis的场景使用

默认做好了其它的前提&#xff0c;只专注于Redis使用 一、短信登录 在没有Redis数据库时&#xff0c;我们会基于Session实现登录&#xff08;利用令牌进行授权&#xff09;&#xff0c;是怎么实现的呢&#xff1f; &#xff08;一&#xff09;基于Session的短信登录功能 1、…...

糟了,数据库主从延迟了!

前言 在实际的生产环境中&#xff0c;由单台MySQL作为独立的数据库是完全不能满足实际需求的&#xff0c;无论是在安全性&#xff0c;高可用性以及高并发等各个方面 因此&#xff0c;一般来说都是通过集群主从复制&#xff08;Master-Slave&#xff09;的方式来同步数据&…...

VUE,子组件给父组件传递参数,props 自定义属性,ref

<template><div><!-- 子传父 --><!-- 通过父组件给子组件传递函数类型的props实现&#xff1a;子给父传递数据 --><AA :getAAname"getAAname"/><h1>AA&#xff1a;{{aaname}}</h1><!-- 通过父组件给子组件绑定一个自定…...

【Oracle系列】- Oracle数据迁移

【Oracle系列】- Oracle数据迁移 文章目录 【Oracle系列】- Oracle数据迁移一、概述二、数据迁移方案三、模拟迁移方案四、迁移步骤五、迁移方案及其实施细则5.1 exp/imp逻辑备份与恢复5.2 Storage存储迁移5.3 利用data guard迁移 一、概述 最近在做公司软件系统盘点时&#x…...

Linux环境安装MySQL(详细教程)

1、下载MySQL MySQL官网&#xff1a;MySQLhttps://www.mysql.com/ 下载社区版&#xff08;免费&#xff0c;但不提供技术支持&#xff09; 简单说明一下rpm和tar包的区别&#xff1a; tar 只是一种压缩文件格式&#xff0c;所以&#xff0c;它只是把文件压缩打包 rpm&#xf…...

23. Mysql中的排序规则

文章目录 Mysql中的排序规则1. 数据库默认的排序规则2. 查看表的排序规则2.1 查看表排序规则2.2 查看字段排序规则 3.修改排序规则3.1 修改库3.2 修改表3.3 修改字段 Mysql中的排序规则 1. 数据库默认的排序规则 mysql8的默认排序方式是 utf8mb4_0900_ai_ci mysql5的默认排序…...

MongoDB 基础学习记录

MongoDB 基础 mongoDB 是由 C语言编写,基于分布式文件存储的开源数据库系统,是一个 nosql 数据库. 在高负载的情况下,添加更多的节点,保证服务器性能,MongoDB 旨在为 web 引用提供可扩展的高性能存储解决方案,将数据存储为给文档, 数据结构由键值(key,value)对组成,MongoDB 文…...

Visual Studio2022报错 无法打开 源 文件 “openssl/conf.h“解决方式

目录 问题起因问题解决临时解决方案 问题起因 近一段时间有了解到Boost 1.82.0新添加了MySQL库&#xff0c;最近一直蠢蠢欲动想要试一下这个库 所以就下载了源码并进行了编译&#xff08;过程比较简单&#xff0c;有文档的&#xff09; 然后在VS2022中引入了Boost环境&#xf…...

【更新公告】Airtest更新至1.3.0.1版本

1. 前言 本次更新为Airtest库更新&#xff0c;版本提升至1.3.0.1版本&#xff0c;主要新增了一些iOS设备相关的装包等接口&#xff0c;以及封装了一些tidevice常用接口。更多更新详情&#xff0c;详见我们下文的描述。 2. 新增iOS设备接口 1&#xff09;iOS安装接口&#xf…...

SQL语句集锦

题记&#xff1a;SQL语句就是一种编程语言&#xff0c;我们平时项目中我们需要从数据库种调取数据&#xff0c;然后通过增删改查的接口对数据库进行操作&#xff0c;当然我们也可以用数据库自己的编程语言进行数据库里边数据的操作。 1.select * from users&#xff1b; 从use…...

【多线程中的线程安全问题】线程互斥

1 &#x1f351;线程间的互斥相关背景概念&#x1f351; 先来看看一些基本概念&#xff1a; 1️⃣临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源。2️⃣临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区。3️⃣互斥&…...

抖音seo短视频矩阵系统源代码开发技术分享

抖音SEO短视频矩阵系统是一种通过优化技术&#xff0c;提高在抖音平台上视频的排名和曝光率的系统。以下是开发该系统的技术分享&#xff1a; 熟悉抖音平台的算法 抖音平台的算法是通过分析用户的兴趣爱好和行为习惯&#xff0c;对视频进行排序和推荐。因此&#xff0c;开发人员…...

flutter实战(01)windows桌面版 修改应用logo、名称、显示位置、显示大小

说明&#xff1a;该系列文章主要为flutter在windows桌面平台实战中遇到的一些坑。 1 修改logo 只需要在flutter项目/windows/runner/resources目录下替换原来的应用图标 app_icon.ico即可。 2 修改应用名称、显示位置、显示大小 修改flutter项目/windows/runner/main.cpp 文…...

ComfyUI-WanVideoWrapper显存优化终极指南:让8GB显卡也能流畅生成高清视频

ComfyUI-WanVideoWrapper显存优化终极指南&#xff1a;让8GB显卡也能流畅生成高清视频 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 还在为视频生成时的显存不足而烦恼吗&#xff1f;ComfyUI-…...

千问3.5-2B在VSCode中的集成应用:基于CodeX的智能编程助手搭建

千问3.5-2B在VSCode中的集成应用&#xff1a;基于CodeX的智能编程助手搭建 1. 引言 作为一名开发者&#xff0c;你是否经常在编码过程中遇到这些问题&#xff1a;记不清某个API的具体用法&#xff1f;需要快速生成重复性代码片段&#xff1f;遇到报错信息却找不到清晰的解释&…...

避开生产计划大坑:不懂MPS和MRP的区别,你的SAP PP模块白学了

避开生产计划大坑&#xff1a;不懂MPS和MRP的区别&#xff0c;你的SAP PP模块白学了 在制造业数字化转型的浪潮中&#xff0c;SAP PP模块作为生产计划的核心枢纽&#xff0c;常常成为企业运营的"隐形战场"。许多实施顾问和计划专员在MD41和MD02这两个相似的事务码前陷…...

vscode如何添加ollama本地模型-实现token自由

vscode一直支持的都是云端闭源的模型&#xff0c;例如 GPT Claude等等&#xff0c;当这些闭源模型的免费额度用完之后&#xff0c;则需要付费继续使用。本文介绍的是vscode接入ollama的本地模型&#xff0c;从而实现token自由。 ollama 首先需要到ollama的官网下载ollama应用…...

DFRDisplayKm 实用指南:Apple Touch Bar Windows支持常见问题全解析

DFRDisplayKm 实用指南&#xff1a;Apple Touch Bar Windows支持常见问题全解析 【免费下载链接】DFRDisplayKm Windows infrastructure support for Apple DFR (Touch Bar) 项目地址: https://gitcode.com/gh_mirrors/df/DFRDisplayKm DFRDisplayKm 是一款专为 Windows…...

窗口效率革命:WindowResizer重构数字空间管理新范式

窗口效率革命&#xff1a;WindowResizer重构数字空间管理新范式 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 问题诊断&#xff1a;被忽视的数字空间效率黑洞 现代办公的隐形枷…...

QMC解码器终极指南:3步实现加密音乐格式转换的高效解决方案

QMC解码器终极指南&#xff1a;3步实现加密音乐格式转换的高效解决方案 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder QQ音乐下载的加密音频文件格式限制跨平台播放&#…...

WarcraftHelper:让魔兽争霸3重获新生的兼容性增强工具

WarcraftHelper&#xff1a;让魔兽争霸3重获新生的兼容性增强工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否曾在现代电脑上尝试重温魔兽争…...

CVPR 2025新秀OverLoCK上手实测:在COCO数据集上跑目标检测,比MogaNet-B高1% AP是怎么做到的?

OverLoCK实战指南&#xff1a;如何在COCO目标检测任务中超越MogaNet-B 1% AP 计算机视觉领域的主干网络架构正在经历一场静默革命。2025年CVPR最新收录的OverLoCK网络以其创新的"先概览再聚焦"设计理念&#xff0c;在多个视觉任务中展现出惊人的性能突破。本文将带您…...

激光+视觉+IMU+RTK融合实战:如何用多传感器打造厘米级三维重建系统?

激光视觉IMURTK融合实战&#xff1a;如何用多传感器打造厘米级三维重建系统&#xff1f; 在自动驾驶和机器人领域&#xff0c;三维重建技术正经历着从实验室走向工业落地的关键转折。传统单一传感器方案已无法满足复杂场景下的精度需求&#xff0c;而多传感器融合正成为突破性能…...