数据仓库建设-数仓分层

news2025/1/7 7:16:11

数据仓库能够帮助企业做出更好的决策,提高业务效率和效益;在数据仓库建设时,绕不开的话题就是数仓分层。

一、数据分层的好处

1. 降低数据开发成本

通用的业务逻辑加工好,后续的开发任务可以基于模型快速使用,数据需求的响应速度也会更快。

2. 降低任务运维成本

业务发展过程中,数据指标口径、统计逻辑变化是常态,任务失败也屡见不鲜。如果每一次调整都需要对所有的数据任务进行修改,再去回溯数据,那维护起来就比较困难,而且数据还会经常出错。

数仓分层就是希望通过对最基础的、常用的数据进行抽象,找出数据的主干,对主干进行修复后,下游的叶子节点就可以最小变动。例如,当产品改版后,涉及流量统计指标口径需要调整,通过数据分层,只修改最底层的源表的逻辑就可以实现整个链路的数据更新。

img

img

3. 方便共享复用,减少重复建设

不同的开发人员、不同时期开发的模型,如果没有分层管理规范,往往导致后期使用时找不到。需要花费很长时间沟通、翻代码确认,最终耗时反而没有重新写一套逻辑来的快。长此以往,数据复用度低,带来存储和计算资源的浪费。

通过数据分层,将数据有序的管理起来,就像图书馆的书架导航,可以快速帮助使用者找到所需要的书籍在那一层书架中。

img

4. 统一数据口径

同一个指标在数据加工处理时,复用的是同一个数据模型表,这样很大程度可以规避数据统计不统一的问题。

二、数据仓库的分层

img

**ODS层:**源数据层,一般是从各种业务系统、日志数据库将数据汇集到数据仓库中,作为原始数据存储和备份。通过数据同步的方式,将业务从库数据同步到HDFS、Hive等,适合海量数据存储和加工处理的系统中。

**DWD层:**数据明细层,对ODS层数据进行规范化处理,例如脏数据过滤、数据格式化等,但仍以数据明细方式存储,且将数据进行主题、层级划分。

**DIM层:**维度表,在维度建模理论中,可以通过业务主题宽表关联维度表方式,快速输出直观的数据分析结果。

**DM层:**数据集市层,基于对业务的需求的理解和抽象,建立通用的指标和分析维度模型,数据仍以明细为主,部分可以直接累加和汇总的数据指标,可以采用聚合结果的方式呈现。

**APP层:**数据应用层,面向不同业务部门、不同产品需求提供具体业务场景的结果表,通过数据同步方式再从数仓同步到MySQL等查询引擎,供前端数据产品输出使用。定制化程度高。

三、阿里数仓分层

阿里巴巴数仓分层采用了比传统三层架构更为细致的分层结构,具体包括以下六层:

  1. 采集层:该层主要负责数据的采集和传输,从各种数据源(如业务系统、应用日志、社交网络等)中收集数据,并将数据传输到数据仓库中进行存储和处理。在采集层中,数据需要进行格式化、清洗、验证等处理,确保数据的准确性和完整性。
  2. 存储层:该层主要负责数据的存储和管理,包括数据的分区、压缩、索引等操作。
  3. 计算层:该层主要负责数据的计算和分析,包括数据的加工、转换、聚合等操作。
  4. 模型层:该层主要负责数据模型的设计和管理,包括物理模型、逻辑模型、维度模型、事实模型等。
  5. 应用层:该层主要负责数据的展示和可视化,包括BI工具、数据可视化工具、报表系统等
  6. 安全层:该层主要负责数据的安全和保护,包括数据的访问控制、数据加密、数据备份等。

阿里巴巴数仓分层相比传统的三层架构更为细致,每一层的功能更为明确和专业化,从而能够更好地支持企业的数据分析和决策支持工作。这种分层结构的优点在于,可以将数据处理和管理的工作划分为不同的层级,实现各层之间的解耦和协作,从而提高数据处理和管理的效率和准确性。

四、小结

数据仓库是企业决策过程中必不可少的组成部分,通过数据仓库可以有效地提高企业决策的效率和效益。数据仓库的分层架构可以帮助企业更好地管理和维护数据仓库,提高数据仓库的可扩展性、可维护性和可管理性。数据仓库的建设过程需要经过多个步骤,包括需求分析、数据清洗和预处理、数据仓库模型设计、数据集成和管理、元数据管理、数据挖掘和分析、部署和维护。

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

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

相关文章

分布式定时任务组件:XXL-JOB

一、GitHub源码地址 https://github.com/xuxueli/xxl-job 二、部署文档 参考:https://blog.csdn.net/qq798867485/article/details/131415408 三、初始化数据库SQL 1、xxl_job_user XxlJob-用户管理 2、xxl_job_group XxlJob-执行器管理 3、xxl…

vue3+vite+pinia+vue-router+ol项目创建及配置

一、vite (一)、定义 vite官网 (二)、操作步骤 注意:两种方式创建目录结构一致 方式一:vite创建脚手架命令: 命令行:npm create vitelatest 然后选择 方式二:命令行直接声明带上vue 二、pinia (一)、定义 定义&#xf…

TortoiseGit 入门指南12:创建标签

前面的文章不止一次的提到过 标签 (Tag),我们在《TortoiseGit 入门指南08:浏览引用以及在引用间切换》一文中知道,标签 是一种 引用;还知道每个提交都对应着一个 SHA-1 值,而引用就是 SHA-1 的一…

常见面试题之HashMap

1. 二叉树 1.1 二叉树概述 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只有左子节点,有的节…

jmeter压测过程中,ServerAgent响应异常:Cannot send data to network connection

ServerAgent异常信息: Cannot send data to network connection(无法将数据发送到网络连接) 原因: linux 防火墙 拦截了当前端口 解决方案: Linux 执行以下命令 /sbin/iptables -I INPUT -p tcp --dport 4445 -j ACC…

高压功率放大器应用场合是什么

高压功率放大器是一种能够将低电压信号转换为高电压输出信号的设备。它通常由前置放大器和功率放大级组成,广泛应用于雷达、医疗、半导体测试和工业自动化等领域。下面安泰电子将介绍高压功率放大器的几个主要应用场合。 一、雷达系统 雷达系统需要产生高频、高功率…

【IDEA大项目依赖分析卡死-解决方案】Processing build files for dependencies analysis...

最近一直在研究一个大型项目,在IDEA里面启动调试的时候,IDEA经常会进行Processing build files for dependencies analysis…(处理构建文件进行依赖分析),并且在这个步骤耗时太久甚至直接卡死。经过一些排查找到了解决…

arping命令 ip地址冲突检测 根据ip查mac地址

arping命令介绍 arping 命令主要用来获取ip对应的mac地址,更新本地arp缓存表。平时主要用来探测ip地址是否冲突即同一个网络里,同一个ip不同mac地址的情况。ip地址冲突将导致网络故障。 arping常用命令参数 arping [参数] ip -U 强制更新邻近主机的a…

Android系统开发-入门篇

参见:[视频教程] 写给应用开发的 Android Framework 教程——玩转 AOSP 篇之 Android 系统开发工具推荐 - 掘金 前置条件: android系统源码位于 linux 服务器,ssh 地址假如为:test172.1.10.2本机为windows 1、本机: 下…

leetcode 101.对称二叉树

⭐️ 题目描述 🌟 leetcode链接:对称二叉树 思路: 这道题和 leetcode 100.相同的树 类似,是上一道的变形题。✨leetcode 100.相同的树 代码链接:【往期文章】leetcode 100.相同的树。这道题把根的左子树和右子树看作两…

ROS:动态参数

目录 一、前言二、概念三、作用四、实际用例4.1需求4.2客户端4.2.1流程4.2.2新建功能包4.2.3添加.cfg文件4.2.4配置 CMakeLists.txt4.2.5编译 4.3服务端(C)4.3.1流程4.3.2vscode配置4.3.3服务器代码实现4.3.4编译配置文件4.3.5执行 4.4服务端(Python)4.4.1流程4.4.2vscode配置4…

Spring核心问题解答

1.谈谈对Spring的理解 Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。 Spring是一个开源容器框架&#x…

Python+Qt窗体或Django网页支付宝收款码-扫码付款实例

程序示例精选 PythonQt窗体或Django网页支付宝收款码-扫码付款实例 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonQt窗体或Django网页支付宝收款码-扫码付款实例>>编写代…

智安网络|保护数据资产:不同行业下的数据安全建设策略

在当今数字化时代&#xff0c;数据安全已经成为各行各业无法忽视的重要议题。保持良好网络卫生习惯并及时了解不断变化的网络威胁是企业中每个人的责任。企业、政府机构、医疗机构、金融机构以及其他组织和行业都面临着日益复杂和频繁的网络安全威胁。为了有效应对这些威胁&…

22.代理模式

代理模式 二十三种设计模式中的一种&#xff0c;属于结构型模式。它的作用就是通过提供一个代理类&#xff0c;在调用目标方法的时候&#xff0c;不再是直接对目标方法进行调用&#xff0c;而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥离出来——解耦…

自定义表单设计:办公协同效率提高新工具!

为了提高工作效率和表格制作效率&#xff0c;低代码开发平台成为广大用户喜爱的主流平台。因为它包含了非常多的功能内容&#xff0c;在快节奏发展的社会环境中可以满足日益增长的业务需求&#xff0c;是助力通信业、医疗、高校、物流等众多行业办公效率提质增效的得力助手。其…

解决MySQL中分页查询时多页有重复数据,实际只有一条数据的问题

0 前言 有一个离奇的BUG&#xff0c;在查询时&#xff0c;第一页跟第二页有一个共同的数据。有的数据却不显示。 后来发现是在SQL排序时没用主键排序。 解决&#xff1a;使用主键排序 以下是我准备的举例&#xff0c;可以自己试试。 1 数据准备 SET NAMES utf8mb4; SET FORE…

JVM系列(7)——java内存模型

一、什么是JMM 一种抽象的规范。每个JVM 的实现都要遵守这样的规范&#xff0c;这样才能保证Java程序能够“一次编写&#xff0c;到处运行”。 内存模型描述了程序中各个变量&#xff08;实例域、静态域和数组元素&#xff09;之间的关系&#xff0c;以及在实际计算机系统中将…

华为产品测评官-开发者之声 - ModelArts 真实体验感想

华为产品测评官&#xff0d;开发者之声 - ModelArts 真实体验感想 我先是在6月17日参加了华为在深圳举办的开发者大会&#xff0c;后面看到群里发的"2023华为产品测评官&#xff0d;开发者之声"活动&#xff0c;简单看了一下体验活动的具体事情&#xff0c;感觉好玩…

mysql 第六章

目录 1.子查询 2.exists 3.as 别名 4.视图 5.null 6.连接查询 7.总结 1.子查询 2.exists 3.as 别名 4.视图 5.null 6.连接查询 7.总结 对 mysql 数据库的查询&#xff0c;除了基本的查询外&#xff0c;有时候需要对查询的结果集进行处理。