数据仓库架构全解析:如何构建高效、有序的数据分层?

图片

1.数仓架构规范

(一)分层架构规范

1.明确分层原则:通常遵循自下而上的 ODS(操作数据存储层)、DWD(明细数据层)、DWS(汇总数据层)、ADS(应用数据层)架构。ODS 近乎原样存储从源系统抽取的数据,起到缓冲和备份源数据作用;DWD 对 ODS 数据初步清洗、标准化,为上层提供统一格式明细数据;DWS 按照主题域聚合 DWD 数据,如按销售、财务等主题汇总,提供分析型数据;ADS 面向具体业务应用,如报表、数据挖掘需求定制数据。

2.数据流向清晰:严格规定各层数据单向流动,禁止跨多层回溯调用,一般只允许相邻层间交互,即 ODS -> DWD -> DWS -> ADS,确保数据处理流程有序,易于维护与追踪。

(二)层间调用规范

1.下层服务上层:下层数据层为直接上层提供数据支撑,上层只能从紧邻下层获取所需数据,不能跨层调用。例如 DWS 层构建的销售主题汇总数据,供 ADS 层销售报表应用直接使用,而不能从 ODS 层跨越 DWD 层直接取用原始销售数据。

2.接口标准化:相邻层间数据交互接口需统一规范,包括数据格式(如日期统一为“YYYY-MM-DD”)、传输协议(常用 HTTP、FTP 等),确保不同层开发团队协作顺畅,数据传输稳定高效。

(三)需求实现方案规范

1.基于分层设计:接到业务需求,首先分析应在数仓哪一层实现,如简单报表需求多在 ADS 层通过关联已有汇总数据快速满足;复杂分析需求可能需从 DWD 层开始重新聚合、加工数据。

2.方案评审:需求实现方案需组织跨团队评审,涵盖业务、开发、运维等人员,确保方案既满足业务目标,又遵循架构规范,不破坏已有数据生态,如评估新方案对数据存储、计算资源的影响。

2.数仓模型规范

(一)模型设计规范

1.主题域划分:依据业务核心流程,划分如客户、产品、订单、财务等主题域,每个主题域独立建模,便于管理与理解。例如在客户主题域,围绕客户基本信息、购买行为、忠诚度等构建实体关系模型。

2.采用星型/雪花型架构:事实表处于中心,关联多个维度表。星型架构维度表直接与事实表连接,简洁高效,适用于快速查询场景;雪花型架构维度表有层级细分,规范化程度高,适合复杂分析,依业务需求权衡选用。

(二)模型命名规范

1.统一前缀:不同层级模型采用特定前缀区分,如 DWD 层模型前缀为“dwd_”,DWS 层为“dws_”,便于识别与管理,像“dwd_sales_detail”表明是明细数据层销售明细模型。

2.表意清晰:名称包含业务主体与关键信息,如“dws_financial_report_monthly”能直观反映是财务主题、月度汇总报表模型,方便开发、运维人员快速定位。

(三)词根管理规范

1.建立词根库:梳理业务常用术语,提炼词根,如“sale”代表销售、“cust”代表客户,所有相关模型、字段命名尽量基于这些词根拓展,保证语义连贯性。

2.定期维护:随着业务发展,新术语涌现,定期更新词根库,确保命名体系与时俱进,同时回溯审查已有模型命名,必要时调整优化。

(四)指标体系建设规范

1.指标定义统一:对业务关键指标,如销售额、利润率、客户留存率等,明确定义计算口径、时间范围、数据来源,确保不同报表、分析场景下指标含义一致。例如,销售额定义为含税订单金额,统计周期为自然月。

2.分层构建:底层指标基于明细数据计算,为上层复合指标提供支撑,像日销售额是基础指标,月销售额可由日销售额汇总得到,构建层次分明的指标体系,满足不同业务深度需求。

3.数仓流程规范

(一)需求承接规范

1.需求收集:主动与业务部门沟通,定期组织需求调研会,通过问卷调查、业务访谈等形式,全方位收集数据需求,包括报表需求、数据分析需求、数据挖掘需求等。

2.需求文档化:将收集到的需求整理成详细规范的文档,涵盖需求背景、目标、详细功能描述、预期交付时间等,便于后续开发、测试、验收环节对照执行,避免需求模糊引发项目风险。

(二)运维机制规范

1.监控体系:建立全方位数据监控,包括数据质量(准确性、完整性、一致性)监控,通过数据校验规则比对;任务执行状态监控,实时查看 ETL 任务、数据处理任务是否成功执行,利用工具如 Zabbix、Prometheus 实现可视化监控。

2.故障应急:制定详细故障应急预案,依据故障影响范围、严重程度分级,不同级别启动相应处理流程,从故障发现、通知责任人到恢复系统正常运行各环节明确时间节点与操作步骤,如数据延迟故障,5 分钟内发现通知,30 分钟内定位修复。

(三)上线流程规范

1.预上线测试:在正式上线前,进行多轮测试,包括单元测试,开发人员自测代码功能;集成测试,模拟真实业务场景,检验不同模块、组件协同工作能力;用户验收测试,邀请业务用户验证是否满足需求,所有测试通过方可进入下一步。

2.灰度上线:对于重大变更或新功能,采用灰度上线策略,先在小部分用户或业务场景试用,收集反馈,确认无误后逐步扩大范围,降低整体上线风险。

(四)模型设计流程规范

1.业务调研:深入了解业务需求、流程,与业务专家沟通,确定模型服务的业务场景、目标,如为精准营销构建客户画像模型,需调研营销流程与客户特征需求。

2.设计文档:依据调研结果,撰写详细模型设计文档,包括模型架构图、实体关系图、字段定义、数据来源、预期性能指标等,作为后续开发依据,并在团队内部评审,确保设计合理性。

4.数仓管理规范

(一)监控告警规范

1.告警阈值设定:针对数据质量、任务执行等监控指标,结合业务容忍度与历史数据波动,设定合理告警阈值。如数据准确性低于 95%、任务延迟超过 10 分钟触发告警,确保问题能及时被发现。

2.告警渠道:利用多种渠道发送告警,如邮件、短信、企业即时通讯工具,优先选择能及时触达责任人的方式,且告警信息包含问题描述、影响范围、紧急程度、建议处理措施等,便于快速响应。

(二)存储管理规范

1.分区策略:根据数据特性,如时间序列数据按年、季、月、日分区;地域数据按地区分区,便于数据查询、管理,减少全表扫描,提高查询效率,如查询某季度销售数据,直接定位季度分区即可。

2.存储介质选型:热数据(近期频繁访问)优先选用高性能关系型数据库,如 Oracle、MySQL;冷数据(历史久远、访问少)考虑分布式存储,如 Hadoop HDFS,平衡存储成本与访问效率。

(三)数据安全管理规范

1.访问权限控制:基于角色的访问控制(RBAC),为不同岗位人员(如业务分析师、开发人员、运维人员)设定不同权限,业务分析师只能查询 ADS 层报表数据,开发人员有权限修改开发层模型数据,防止越权访问。

2.数据脱敏:对敏感数据,如客户身份证号、银行卡号,在非必要场景进行脱敏处理,采用哈希、替换等方法,保证数据可用性同时保护隐私,如身份证号保留前 6 位和后 4 位,中间用星号代替。

5.数仓开发规范

(一)ETL 规范

1.抽取策略:根据源数据特性与更新频率,选择合适抽取方式,如全量抽取适用于数据量小、更新不频繁源数据;增量抽取针对数据量大、实时性要求高的数据,利用时间戳、日志文件等标识新数据,确保抽取高效且数据完整。

2.转换规则:明确数据清洗、转换规则,如去除字符串前后空格、将字符串类型日期转换为日期型,统一编码格式,编写详细转换文档,便于维护与追溯。

(二)数据质量规范

1.数据质量检查点:在 ETL 流程关键节点设置质量检查点,如抽取后、转换后、加载前,通过编写校验函数、比对规则,检查数据准确性、完整性、一致性,发现问题及时修复或告警。

2.质量评估报告:定期生成数据质量评估报告,统计质量问题类型、发生频率、修复情况,向业务部门和管理层汇报,为数据优化提供依据。

(三)代码设计规范

1.命名规则:变量、函数、类等命名遵循统一规则,表意清晰,如变量名采用驼峰式命名,函数名体现功能,“getCustomerData”表明获取客户数据功能,方便代码阅读与维护。

2.代码复用:鼓励代码复用,建立代码库,将常用功能模块(如数据清洗模块、日期处理模块)封装,供不同项目调用,减少重复开发,提高开发效率。

(四)任务清理规范

1.定期清理:对 ETL 任务产生的临时文件、日志文件、冗余数据定期清理,依据数据保留周期,如临时文件保留 1 天,过期日志文件删除,释放存储资源,防止磁盘空间不足。

2.资源回收:任务执行完毕,及时回收占用的内存、CPU 等资源,优化系统性能,确保后续任务顺利执行。

在数仓岗位工作中,严格遵循上述各类规范,才能确保数仓建设有序、高效,持续为企业提供高质量的数据服务,满足业务发展需求。

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

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

相关文章

windows:curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)

目录 1. git update-git-for-windows 报错2. 解决方案2.1. 更新 CA 证书库2.2. 使用 SSH 连接(推荐)2.3 禁用 SSL 验证(不推荐) 1. git update-git-for-windows 报错 LenovoLAPTOP-EQKBL89E MINGW64 /d/YHProjects/omni-channel-…

为何吹订单?因为特斯拉的销量已遥遥领先,掩耳盗铃之举!

从去年以来,多家新造车企业都经常拿大定、小定的数据来说事,而不是如之前说销量领先,原因就在于他们曾对标的特斯拉在销量方面已远远超越,在销量方面无法与特斯拉比拼,就只好用订单 国内媒体一片宣传特斯拉在中国的销量…

【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别

1. 什么是智能体 将大语言模型作为一个推理引擎。给定一个任务, 智能体自动生成完成任务所需步骤, 执行相应动作(例如选择并调用工具), 直到任务完成。 2. 先定义工具:Tools 可以是一个函数或三方 API也…

MC9S12单片机的内存映射机制

地址空间 这是个16位的单片机。CPU的寻址空间最大为2^1664K。 这个64K是包括外设、RAM、EEPROM、和FLASH的。现在程序越来越大,64K的空间肯定是不够用的。因此,需要扩展。 扩展方法就是:分页。 把原来的64K空间,划分一块出来&a…

C++ primier plus 函数探幽第二部分

系列文章目录 C primer plus 第一节 步入C-CSDN博客 C primer plus 第二节 hello world刨析-CSDN博客 C primer plus 第三节 数据处理-CSDN博客 C primer plus 第四节 复合类型-CSDN博客 C primer plus 第五节 循环-CSDN博客 C primier plus 第七节 函数探幽第一部分-CSDN博客 …

单细胞的一组基因或富集分数的高低表达分组差异分析作图教程

单细胞的一组基因或富集分数的高低表达分组计算差异分析和可视化教程 单细胞的一组基因或富集分数的高低表达分组计算 软件分析界面 运行结果 会得到一组基因或通路等富集分数的高低分组的seurat对象rds文件和meta.data文件 包含了指定的一组基因或富集分数的各自的高低表达分…

Qt之QGraphicsView图像操作

QGraphicsView图像操作:旋转、放大、缩小、移动、图层切换 1 摘要 GraphicsView框架结构主要包含三个主要的类QGraphicsScene(场景)、QGraphicsView(视图)、QGraphicsItem(图元)。QGraphicsScene本身不可见,是一个存储图元的容器,必须通过与之相连的QGraphicsView视图来显…

cSpell无法识别词语消除报错

VSCode extension: cSpell 使用VSCode时,cSpell可以帮助我们检查拼写错误。但是经常有一些单词会被误报,可以采取以下的方法解决。 1. 手动添加:将鼠标光标放在无法识别的词语上,左键点击Quick Fix,再次选择将未知词…

python的内置函数 - round()

知识点1 - round() 定义/功能 round() 是一个用于四舍五入的内置函数。它可以将一个浮点数或整数四舍五入到指定的小数位数。 知识点2 - round() 语法 round(number, ndigitsNone) number:需要四舍五入的数值(可以是整数或浮点数)。 nd…

SAP服务器进程预警通知

在财务月结,HR薪资核算等系统用户集中使用高峰时期。通过判断判断当前系统可用的并行对话框进程数,用户使用过多给出提示,服务器进程预警通知。 1. 根据配置的进程最大可使用率80%,根据进程数判断:当进程可用数少于20%…

无人机推流/RTMP视频推拉流:EasyDSS无法卸载软件的原因及解决方法

视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外,平台还支持用户自行上传视频文件,也可将上传的点播…

【工具】ProToDeviseR一个自动化的蛋白质拓扑方案生成器

文章目录 介绍代码案例参考 介绍 氨基酸序列表征是几乎任何蛋白质分析的基本组成部分,创建简洁清晰的蛋白质拓扑结构在蛋白质组学研究中具有重要意义。尽管存在许多数据库和预测服务器,但是将来自各种资源(有时是竞争资源)的数据…

数据结构基础(一)

文章目录 1 数据结构基础1.1 什么是程序?1.2 数据、数据元素、数据项、数据对象1.3 基本的逻辑结构 2 算法效率2.1 时间复杂度2.1.1 循环执行次数2.1.2 大O(n)表示法 2.2 空间复杂度 1 数据结构基础 1.1 什么是程序? ​ 程序 数据结构 + 算…

taosd 写入与查询场景下压缩解压及加密解密的 CPU 占用分析

在当今大数据时代,时序数据库的应用越来越广泛,尤其是在物联网、工业监控、金融分析等领域。TDengine 作为一款高性能的时序数据库,凭借独特的存储架构和高效的压缩算法,在存储和查询效率上表现出色。然而,随着数据规模…

RangeError: Maximum call stack size exceeded

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

《白帽子讲 Web 安全》之文件操作安全

目录 引言 (一)文件上传与下载漏洞概述 1.文件上传的常见安全隐患 1.1前端校验的脆弱性与服务端脚本执行危机在文件上传流程中,部分开发者可能会在前端使用 JavaScript 代码对文件后缀名进行简单校验,试图以此阻止非法文件上传…

[FE] React 初窥门径(五):React 组件的加载过程(commit 阶段)

1. 回顾 前一篇文章我们看到,ReactDOM.render 总共包含这些步骤, 然后介绍了 performSyncWorkOnRoot 做的事情,它主要做了两件事, renderRootSync 可称之为 render 阶段:创建了一颗 Fiber Tree(包含 html …

Elastic如何获取当前系统时间

文章目录 1. 使用 _ingest.timestamp 在 Ingest Pipeline 中获取当前时间2. 使用 Painless Script 获取当前时间3. 使用 now 关键字在查询中获取当前时间4. 使用 date 类型字段的默认值5. 使用 Kibana 的 Dev Tools 查看当前时间6. 使用 date 聚合获取当前时间7. 使用 Elastics…

Elasticsearch 2025/3/7

高性能分布式搜索引擎。 数据库模糊搜索比较慢,但用搜索引擎快多了。 下面是一些搜索引擎排名 Lucene是一个Java语言的搜索引擎类库(一个工具包),apache公司的顶级项目。 优势:易扩展、高性能(基于倒排索引…

计算机毕业设计Python+DeepSeek-R1大模型医疗问答系统 知识图谱健康膳食推荐系统 食谱推荐系统 医疗大数据(源码+LW文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…