数据仓库-数仓架构

news2024/11/26 12:24:30

1 数据仓库建设方法论

1.1 项目背景

数据仓库将建设成为融通全公司数据资产,提供便捷数据分析和数据服务,支持全公司数字化经营与创新。

1.2 数据仓库概述

数据仓库是一个面向主题的、集成的、相对稳定的、反映有历史变化的数据集合,用于支持数字化运营、数字化管理等数据业务。

具有以下特点:

  1. 包含公司生产过程中产生的全量业务数据
  2. 包含结构化与非结构化形式数据
  3. 来自于多个数据源、业务操作系统
  4. 保存一定的时间周期
  5. 按照企业内业务规则决定存储模型

数据仓库项目的建设工作是一项复杂的系统项目,涉及面非常广,实施难度也很大。实现数据与业务的充分融合,发挥数据真实价值并达到最大化,也需要一个过程,因此数据仓库建设需要有系统性的长期规划,在大数据建设的工作上也要有耐心、有恒心,在让设计兼顾完整性的同时,能够尽快的发挥作用,解决实际问题。

数据仓库项目不同于传统的在线交易系统项目,在线交易系统面向过程,需求确认,系统功能驱动项目的建设过程。数据仓库以数据为中心,面向分析。

1.3 建设方法论

为了更好的满足业务对数据模型的使用需求,同时满足企业级数据仓库的需要,采用上层业务驱动以及底层数据驱动相结合的方式,具体如图1-1所示。

在这里插入图片描述

图1-1 数据仓库建设方法论

底层数据驱动可以满足按照主题、系统进行整合数据,其更贴近业务源系统,以公共数据为主,从企业视角进行建设。

上层业务驱动可以满足按照特定应用对数据进行整合,由于其面向上层应用,扩展性较差,带有特定的口径以及维度,以满足业务方便些为主。

2 数据仓库体系架构

2.1 体系架构图

数据仓库分层架构按功能划分成六个区域,分别是数据缓冲层、数据贴源层、维度层、整合明细层、轻度汇总层和应用数据层,整体架构如图2-1所示。

在这里插入图片描述

图2-1 数据仓库架构

其中应用数据层按需建集市,比如:财务集市、供应链集市等。

2.2 数据仓库分层设计优点

数据分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更易理解和使用。具体来说,分层有如下的优点:

1、对不同粒度的数据进行分层存放,实现精细化管理;

2、保留业务数据多种粒度形态,用空间换时间,屏蔽业务需求变更对数仓的稳定性影响,快速响应需求;

3、解耦合分布执行,降低出问题的风险,一旦出现问题可以快速定位;

4、通过开发通用的数据模型,可避免重复开发,大大降低计算资源的使用;

5、把复杂问题简单化:分层也即利用“分而治之”的思想把复杂的问题简单化,更加清晰、易于理解。

2.3 各层设计原则

2.3.1 数据架构-贴源明细层[ODS]

1. 功能定义:即 Operational Data Store,ODS数据采用binlog实时增量同步,对于增量抽取的数据在ODS层至少需2种表,1种和生产保持1:1的全量表,1种是用于存放日增量数据的表。

1. 设计原则

a) 全量表与业务数据库数据完全一致,不做任何处理,对于生产数据先软删除再硬删除的数据(dba规范硬删除前需先软删除保留2天以上),生产硬删除后,数仓表不能同步删除(保留历史),此种场景,数仓ods全量表数据量会多出这部分标识了软删除的数据

b) 日增量表采用binlog同步生成,会记录当天所有的变化

c) ODS层数据原则上不对用户开放

2. 存储策略

a) 日增量表永久保存

b) 全量表保留最近7天并每个月月末最后一天保留一份快照,月末的快照数据永久保存

2.3.2 数据架构-维度层[DIM]

1. 功能定义:即 Dimension,该层按照主题划分对业务中维度类数据进行企业级整合,在保持原有粒度的基础上,完成一致性及标准化操作。

2. 设计原则

a) 以星型模型设计为主,按需采用雪花模型设计

b) 本层开始标准化

c) 本层完成数据清洗

d) 支持轻度业务变化的隔离

f) 消除了业务系统间数据的不一致性,保持原子粒度

g) 尽量沉淀出通用的维度属性

h) 维度拆分时兼顾存储空间占用

3. 存储策略

a) 日全量表存储7天

b) 拉链表每天存全量,保存7天,并每月一份全量,每月全量数据永久存储

2.3.3 数据架构-整合明细层[DWD]

1. 功能定义:即 Data Warehouse Detail,该层按照主题划分对业务数据进行企业级整合,在保持原有粒度的基础上,完成标准化以及数据预关联操作。

2. 设计原则

a) 星型模型建模,以逆范式宽表落地,多表整合

b) 保存明细数据

c) 本层开始标准化

d) 本层完成数据清洗

e) 支持轻度业务变化的隔离

f) 支持预关联及适当的预计算操作

g) 围绕核心过程业务数据,分主题进行组织和建设

h) 消除了业务系统间数据的不一致性,保持原子粒度

3. 存储策略

a) 日全量表存储7天

b) 拉链表每天存全量,保存7天,并每月一份全量,每月全量数据永久存储

2.3.4 数据架构-轻度汇总层[DWS]

1. 功能定义:即 Data Warehouse Summary,该层基于应用集市沉淀通用类属性、指标信息,面向应用系统、数据分析与数据挖掘的数据应用层。

2. 设计原则

a) 数据应用层共性轻度汇总需求下沉

b) 时间周期多以日、周、月汇总为主

c) 减少上层对DWD的直接依赖

d) 同时存在粗、细粒度的汇总加工数据

e)同一定义的统计指标不能存在多个表,避免相同定义指标口径不一致

3. 存储策略

a) 日全量表存储7天

b) 汇总表按需设置存储时间,最少不能少于7天

2.3.5 数据架构-数据应用层[ADM]

功能定义:即 Application Data Market,该层以项目或者应用扩展数据 ,细粒度占比低,粗粒度占比高, 侧重点为提供便捷的访问、分析和即席查询,数据应用层分基础层和对业务的应用层。

1. 基础层功能定义:即ADM Base,建立数据缓冲区,针对仓库内DIM、DWD和DWS层暂时无法满足的需求,基于仓库已接入数据或者新接入数据进行预汇总、预连接和预加工,快速响应上层集市数据需求。

2. 基础层设计原则

a) 体现集市数据个性化原则,在集市内部共享数据,集市间共性加工数据需下沉至数仓

b) 禁止跨集市调用,禁止逆向依赖上层数据

3. 基础层存储策略

c) 日全量表存储7天

a) 汇总表按需设置存储时间,最少不能少于7天

4. 应用层功能定义:即Report,该层为应用数据结果存放区。基于仓库维度层、明细汇总层和集市基础层数据聚合计算适用某个特定分析主题的数据,支撑外围应用。比如行长日报,监管报送,业务报表,业务系统调用等。

5. 应用层设计原则

a) 为上层应用提供数据服务

b) 除指标集市应用层数据可以被其他集市引用,原则上禁止跨集市依赖

c) 面向业务,以需求为导向,通常设计为大宽表,方便分析和使用

6. 应用层存储策略

a) 数据保留时间依据实际业务需求而定

数仓各层数据流向

a) ODS层的数据来源为数据平台通过工具直抽业务系统备份库的数据,或者通过数据库binlog同步的数据或者其它源头来源数据。

b) DWD层的数据来源为ODS层和DIM层,当DWD层实时表做维度冗余时需要从DIM层抽取数据,禁止从ODS层抽取,避免造成同一数据来源多处的情况,避免数据不一致。

c) DIM层的数据来源为ODS层。

d) DWS层的数据来源为DIM层和DWD层,不直接访问ODS层。

e) 多个应用集市间禁止数据依赖,除指标集市可以被其他集市引用。

f) 应用集市层的数据来源为DWD层、DIM层、DWS层,需周期性评估是否将DWD层数据加工到DWS层。

g) 应用集市层的基础层禁止逆向依赖应用层数据。

3 数据仓库各层数据库分配及权限管理

3.1 数仓各层数据库分配

数据仓库的数据库类型分为:正式库、临时库、开发库、敏感库。其使用场景如下:

Ø 正式库:集群作业日常跑批的操作库

Ø 临时库:集群作业日常跑批中间结果临时存放的操作库

Ø 开发库:上线人员数据验证,数据开发库

Ø 敏感库:集群作业日常涉及敏感数据解密的操作库

数据仓库各层,数据库规划如图3-1所示:

在这里插入图片描述

图3-1 数仓各层库规划

3.2 数据仓库各层用户及其权限控制明细

为了更好的把控数据安全,便捷、高效地对数据进行管理,将数据仓库用户权限类型分成系统级用户限权和个人级用户权限两部分,即将用户分成集群用户和个人用户,如图3-2所示。

在这里插入图片描述

图3-2 用户权限类型分类

两种用户类型针对不同数据库的权限有明确的区分,具体如下:

a) 正式库、临时库开通一个集群用户,集群用户拥有所有数据库操作权限。

b) 敏感库与正式库、临时库区分,单独开通一个集群用户,拥有敏感库的所有数据库操作权限。

c) 开发库开通个人级账号,个人级账号拥有开发库的所有权限,其它库按需设置读或者操作权限。

4 数据仓库存储策略

数据仓库中存在两大类型表,分别为事实表和维度表,这两种表的数据变化情况以及数据使用情况存在很大的差异性,且同一类别的表也有很大的差别。在模型物理化设计阶段,为每张数据模型规划一个合适的存储策略不仅能够保证数据模型的高效使用,也能够为数据平台节省大量的计算资源和存储资源。

4.1 存储策略介绍

在数据仓库中比较典型的存储策略有如下几种类型:

  1. 增量

a) 适用数据类型:日志类型只增不删不改的数据

  1. 全量

a) 适用数据类型:保留全量最新数据,不需要关注历史某一时间状态的数据

  1. 拉链

a) 适用数据类型:保留历史轨迹的数据,需要关注历史某一时间状态的数据。

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

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

相关文章

芸鹰蓬飞:抖店服务分怎么快速升分?

在这个平台上,抖店服务分数的高低直接关系到商家在抖音平台上的曝光和信任度。那么,如何快速提升抖店服务分,成为了广大商家亟需解决的问题。本文将从多个角度,深入探讨提升抖店服务分的有效方法。 一、了解抖店服务分的评估标准 …

高阶数据结构---树状数组

文章目录 楼兰图腾一个简单的整数问题 一个简单的整数问题2谜一样的牛 一、楼兰图腾OJ链接 二、一个简单的整数问题OJ链接 三、一个简单的整数问题2OJ链接 四、谜一样的牛OJ链接

盘点十大免费低/无代码开发软件,数字化转型看这里

在数字化日益普及的当下,低代码开发技术逐渐受到大众的追捧。这种技术让缺乏编程经验的大众也能轻松创建应用程序和网站。通过直观的图形界面和拖拽功能,用户可以无需编写任何代码,轻松实现自己的开发需求。本文将为您介绍十大免费的低代码开…

AI视频检索丨历史视频标签化,助力重要事件高效溯源

随着科技的不断发展,安全监控已成为我们生活中不可或缺的一部分。当发生盗窃、人员走失、安全事故等重要事件时,常常需要通过查看视频回放了解事情经过,为解决问题提供证据或指明查找方向。但是,人工查看视频回放往往费时费力&…

【嵌入式开发学习】__扒一扒单片机串口IAP原理

一、什么是IAP? IAP 是 In Application Programming 的首字母缩写,IAP是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 在重新编程过程…

深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解

深入学习 Android Framework 第三:深入Android S(12.0) 探索 Android Framework 之 SystemServer 进程启动详解 文章目录 深入学习 Android Framework前言一、Android 系统的启动流程1. 流程图2. 启动流程概述 二、源码详解1. 时序图2. 源代码1、ZygoteInit # main…

草图大师SketchUp Pro 2023

SketchUp Pro 2023 for Mac(草图大师)是一款三维建模软件,由Trimble Inc.开发。它可以用于创建、修改和分享3D模型,包括建筑、家具、景观等。 SketchUp Pro 2023 for Mac提供了简单易学的用户界面和强大的工具集,使用…

数据库表数据类型datetime 和 timestamp区别,以及优缺点

datetime和timestamp都是用于表示日期和时间的数据类型,但它们在存储和使用上有一些区别。 数据范围:datetime数据类型的有效范围是从1000年到9999年,精度为秒。timestamp数据类型的有效范围是从1970年到2038年,精度为秒。存储空…

element-china-area-data插件vue3做省市区的下拉选择,用3个独立的el-select实现

第1版,选择下拉没有优化 第2版,选择下拉时,做了优化

<蓝桥杯软件赛>零基础备赛20周--第6周--数组和队列

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周(读者可以按…

SystemVerilog学习 (10)——线程控制

一、概述 在实际硬件中,时序逻辑通过时钟沿来激活,组合逻辑的输出则随着输人的变化而变化。所有这些并发的活动在Verilog 的寄存器传输级上是通过initial和 always块语句、实例化和连续赋值语句来模拟的。为了模拟和检验这些语句块,测试平台使用许多并发执行的线程。在测试平台…

Python 集成 Nacos 配置中心

Python 集成 Nacos 配置中心 下载 Nacos 官方 pyhton 库 pip install nacos-sdk-python # 指定国内阿里云镜像源 pip3 install nacos-sdk-python -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com配置 Nacos 相关信息 Global:nacos:port: 8848…

线下保薪班开启

大家都知道我们有线上班,对于想技能提升的同学来说,线上足以满足技能提升需求,对于想转行找工作,或者学生想就业的同学来说,线上却并不是一个好的选择,担心的可能有:担心自身基础较弱怕学不懂,担…

一文搞懂 Prompt 编程

大家好,我是木川 一、什么是 Prompt 编程 Prompt 编程是一种基于自然语言处理的编程方式,属于一种创新的编程范式,通过向大模型提供 Prompt(提示词),引导其生成特定的文本输出。 与传统的编码方式相比&…

开发知识点-Git

团队协作-Git Giteegitee 创建仓库打开项目所在目录,右键选择Git Bush Here(你要确定电脑上已经安装了Git)初始化本地仓库配置验证信息。 完美解决github访问速度慢介绍Git 与 SVN 区别IDEA 添加 gitee Gitee Git Gitee 大家都知道国内访问 Github 速度…

简单认识泛型【java】

目录 1.什么是泛型 2.引出泛型 2.1语法 3. 泛型类的使用 3.1 语法 4 泛型如何编译的 4.1 擦除机制 5.泛型的上下界 5.1 语法 6.注意 1.什么是泛型 一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于…

PS 吸管工具基本使用方法

这里 我们先打开PS软件 我们 在左侧 导航来中 找到 有吸管工具的这一组工具 这边 我们先选择这个 吸管工具 选择之后呢 左上角 属性配置 第一个是 取样大小 这个 我们之前学魔棒工具时 是有接触过的 这里 我们选择 取样点 然后 后面一个是样本 这个 用的最多的是 所有图层 …

postgresql:记录表膨胀引起的io问题的处理

文章目录 1. io异常2.查看profile报告2.1 生成事发时间段的pgprofile2.2 查看报告 3.检查table是否膨胀4.执行vacuum full5.总结 1. io异常 iostat -x 1 20 Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq…

【环境准备】NodeJs(压缩包版本)安装与配置

一、NodeJs(压缩包版本)安装与配置 1、下载、解压 访问 NodeJs官网,选择Window版本的.zip格式进行下载,下载完成后进行解压(ps: 本人解压路径为D:\nodejs) 2、 环境变量配置 配置环境变量,找到系统变量下的path并选中&#xf…

009.网络配置

Rocky Linux的定位是提供服务的网络型操作系统,所以为其配置完整的网络参数至关重要。通常,Linux可以通过两种方式为系统配置网络参数:一种是通过命令行配置,另一种是通过修改系统配置文件来配置。下面分别介绍这两种配置网络参数…