数仓系列第8篇:架构规范

浊酒南街 浊酒南街     2022-10-22     375

关键词:

目录

导读:

本文以及后续章节中介绍的非功能性规范均为建议性规范,产品功能无强制,仅供指导。

数据层次的划分

ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。
它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。
其主要作用是把基础数据引入到MaxCompute。

CDM:Common Data Model,公共维度模型层,又细分为DWD和DWS。
它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面向分析和统计的明细事实表以及汇总公共粒度的指标。

DWD:Data Warehouse Detail,明细数据层。

DWS:Data Warehouse Summary,汇总数据层。

ADS:Application Data Service,应用数据层。
具体仓库的分层情况需要结合业务场景、数据场景、系统场景进行综合考虑。

数据分类架构


该数据分类架构在ODS层分为三部分:数据准备区、离线数据和准实时数据区。在进入到CDM层后,由以下几部分组成:

公共维度层:

基于维度建模理念思想,建立整个企业的一致性维度。

明细粒度事实层:

以业务过程为建模驱动,基于每个具体业务过程的特点,构建最细粒度的明细层事实表。

您可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当的冗余,即宽表化处理。

公共汇总粒度事实层:

以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段来物理化模型。

数据处理流程架构

数据划分及命名空间约定

请根据业务划分数据并约定命名,建议针对业务名称结合数据层次约定相关命名的英文缩写,这样可以给后续数据开发过程中,对项目空间、表、字段等命名做为重要参照。

按业务划分:

命名时按主要的业务划分,以指导物理模型的划分原则、命名原则及使用的ODS project。

例如,按业务定义英文缩写,阿里的“淘宝”英文缩写可以定义为“tb”。

按数据域划分:

命名时按照CDM层的数据进行数据域划分,以便有效地对数据进行管理,以及指导数据表的命名。

例如,“交易”数据的英文缩写可定义为“trd”。

按业务过程划分:

当一个数据域由多个业务过程组成时,命名时可以按业务流程划分。

业务过程是从数据分析角度看客观存在的或者抽象的业务行为动作。

例如,交易数据域中的“退款”这个业务过程的英文缩写可约定命名为“rfd_ent”。

数据模型

模型是对现实事物的反映和抽象,能帮助我们更好地了解客观世界。数据模型定义了数据之间关系和结构,使得我们可以有规律地获取想要的数据。例如,在一个超市里,商品的布局都有特定的规范,商品摆放的位置是按照消费者的购买习惯以及人流走向进行摆放的。

数据模型的作用

数据模型是在业务需求分析之后,数据仓库工作开始时的第一步。良好的数据模型可以帮助我们更好地存储数据,更有效率地获取数据,保证数据间的一致性。

模型设计的基本原则

☆ 高内聚和低耦合:一个逻辑和物理模型由哪些记录和字段组成,应该遵循最基本的软件设计方法论中的高内聚和低耦合原则。主要从数据业务特性和访问特性两个角度来考虑:将业务相近或者相关的数据、粒度相同数据设计为一个逻辑或者物理模型;将高概率同时访问的数据放一起,将低概率同时访问的数据分开存储。

☆ 核心模型与扩展模型分离:建立核心模型与扩展模型体系,核心模型包括的字段支持常用核心的业务,扩展模型包括的字段支持个性化或是少量应用的需要。在必须让核心模型与扩展模型做关联时,不能让扩展字段过度侵入核心模型,以免破坏了核心模型的架构简洁性与可维护性。

☆ 公共处理逻辑下沉及单一:底层公用的处理逻辑应该在数据调度依赖的底层进行封装与实现,不要让公用的处理逻辑暴露给应用层实现,不要让公共逻辑在多处同时存在。

☆ 成本与性能平衡:适当的数据冗余可换取查询和刷新性能,不宜过度冗余与数据复制。

☆ 数据可回滚:处理逻辑不变,在不同时间多次运行数据的结果需确定不变。

☆ 一致性:相同的字段在不同表中的字段名必须相同。

☆ 命名清晰可理解:表命名规范需清晰、一致,表命名需易于下游的理解和使用。

补充说明:

一个模型无法满足所有的需求。

需合理选择数据模型的建模方式。

通常,设计顺序依次为:概念模型->逻辑模型->物理模型。

数仓系列第11篇:实时数仓

...的发展3.数据仓库建设方法论4.数据仓库架构的演变5.实时数仓案例6.实时数仓与离线数仓的对比导读:本文将从数据仓库的简介、经历了怎样的发展、如何建设、架构演变、应用案例以及实时数仓与离线数仓的对比六个方面... 查看详情

数仓系列第10篇:数据治理

目录01数据治理、数据管理与数据管控02系统架构、应用架构和数据架构03数据标准、数据模型、数据资产、数据分布04数据仓库、数据湖与数据中台05数据中台是什么,不是什么,为什么06结语01数据治理、数据管理与数据... 查看详情

数仓系列第10篇:数据治理

目录01数据治理、数据管理与数据管控02系统架构、应用架构和数据架构03数据标准、数据模型、数据资产、数据分布04数据仓库、数据湖与数据中台05数据中台是什么,不是什么,为什么06结语01数据治理、数据管理与数据... 查看详情

数仓系列第11篇:实时数仓

...的发展3.数据仓库建设方法论4.数据仓库架构的演变5.实时数仓案例6.实时数仓与离线数仓的对比导读:本文将从数据仓库的简介、经历了怎样的发展、如何建设、架构演变、应用案例以及实时数仓与离线数仓的对比六个方面... 查看详情

数仓系列第7篇:数仓olap技术

...SQL)四、结束语导读:数据应用,是真正体现数仓价值的部分,包括且又不局限于数 查看详情

数仓系列第9篇:数据质量

目录导读:01什么是数据质量02数据完整性03数据唯一性04数据有效性05数据一致性06数据准确性07数据及时性08数据可信性导读:随着大数据行业的深入发展,数据质量越来越成为一个绕不开的话题,那当大家在聊数... 查看详情

说说数仓(6)-关于命名规范

参考技术A数仓总结目录:说说数仓(1)-什么是数仓说说数仓(2)-传统数仓与互联网数仓说说数仓(3)-数仓架构说说数仓(4)-指标字典说说数仓(5)-最重要的维度之日期维度说说数仓(6)-关于命名规范说说数仓(7)-浅谈数据治理说说数仓(8)-... 查看详情

中小研发团队架构实践之系列大纲

以下是中小研发团队架构实践系列的大纲,部分已链接,未链接部分我也会持续的更新和发布,期待你的支持与互动。 第一篇开篇——照着做,你也能成为架构师第1章中小研发团队架构实践,附案例和代码  一、框架篇... 查看详情

数仓建设规范指南(代码片段)

本文将全面讲解数仓建设规范,从数据模型规范,到数仓公共规范,数仓各层规范,最后到数仓命名规范,包括表命名,指标字段命名规范等!目录:一、数据模型架构原则数仓分层原则主题域划... 查看详情

最强最全面的数仓建设规范指南(代码片段)

目录一、数据模型架构原则1.数仓分层原则2.主题域划分原则3.数据模型设计原则二、数仓公共开发规范1.层次调用规范2.数据类型规范3.数据冗余规范4.NULL字段处理规范5.指标口径规范6.数据表处理规范7.表的生命周期管理三、数仓... 查看详情

最强最全面的数仓建设规范指南(代码片段)

目录一、数据模型架构原则1.数仓分层原则2.主题域划分原则3.数据模型设计原则二、数仓公共开发规范1.层次调用规范2.数据类型规范3.数据冗余规范4.NULL字段处理规范5.指标口径规范6.数据表处理规范7.表的生命周期管理三、数仓... 查看详情

数仓建模规范--非常全

...个文章与书籍,整合而成。对大中小厂均具有参考意义。数仓开发规范 一.数据模型架构原则 1.数仓分层原则优秀可靠的数仓体系,往往需要清晰的数据分层结构,即要保证数据层的稳定又要屏蔽对下游的影响,并且要避... 查看详情

数仓第一篇:基础架构

目录01.架构演进02.逻辑分层03.数据调研04.主题域划分05.数仓规范06.数据治理07.数仓理念01.架构演进离线数据仓库到实时数据仓库,从lambda架构到kappa架构、再到混合架构。02.逻辑分层数仓分层,一般按ods->dw->dm整体架... 查看详情

数仓第一篇:基础架构

目录01.架构演进02.逻辑分层03.数据调研04.主题域划分05.数仓规范06.数据治理07.数仓理念01.架构演进离线数据仓库到实时数据仓库,从lambda架构到kappa架构、再到混合架构。02.逻辑分层数仓分层,一般按ods->dw->dm整体架... 查看详情

超简单的python教程系列——第8篇:迭代工具

上一节或多或少以悬念结束。我们在Python中发现了循环和迭代器,并体验到了它们提供的一些潜力。“你遗漏了​​zip()​​​和​​enumerate()​​,这些对于任何关于迭代器的讨论肯定都非常重要!” 是的,他们当然很重... 查看详情

淘菜菜:基于flink和hologres的实时数仓架构升级之路

...,从传统多组件的架构升级为现在稳定的高可用实时数仓2.0,承载上千万RPS写入、几百T数据存储和秒级查询响应。在此合作过程中,淘菜菜技术团队不断沉淀出实时数仓场景下的最佳实践、开发实践、开发规范等ÿ... 查看详情

直播预告|8月24日晚19:30,个推实时数仓搭建保姆级教程开课

...算法推荐、系统风险预警等多元业务场景需求。相比离线数仓,实时数仓有哪些特性?如何进行实时数仓的技术选型?个推TechDay“治数训练营”系列直播课第二期来了!8月24日(下周三)晚上19:30-20:30࿰... 查看详情

云原生|k8s系列第1篇:k8s的基础概念组件架构及实战安装(代码片段)

云原生|K8s系列第1篇目录1、先从K8s不是什么讲起2、K8s是什么及核心基础概念2.1Container容器2.2Pod2.3Node2.4Label2.5Annotations2.6Service3、K8s架构3.1K8s的工作方式3.2K8s的组件架构3.2.1控制平面组件kube-apiserveretcdkube-schedulerkube-controller-managerclou 查看详情