数据仓库——阿里五层模型架构「建议收藏」

数据仓库——阿里五层模型架构「建议收藏」目录1.ODS数据准备层2.DWD数据明细层3.DW(B/S)数据汇总层4.DM数据集市层5.ST数据应用层解码OneData,阿里的数仓之路1.ODS数据准备层

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

目录

1. ODS 数据准备层

2. DWD 数据明细层

3. DW(B/S) 数据汇总层

4. DM 数据集市层

5. ST 数据应用层

解码OneData,阿里的数仓之路

 

1. ODS 数据准备层

功能:ODS层是数据仓库准备区,为DWD层提供基础原始数据,可减少对业务系统的影响

建模方式及原则:从业务系统增量抽取、保留时间由业务需求决定、可分表进行周期存储、数据不做清洗转换与业务系统数据模型保持一致、按主题逻辑划分

 

2. DWD 数据明细层

功能:为DW层提供来源明细数据,提供业务系统细节数据的长期沉淀,为未来分析类需求的扩展提供历史数据支撑

建模方式及原则:数据模型与ODS层一致,不做清晰转换处理、为支持数据重跑可额外增加数据业务日期字段、可按年月日进行分表、用增量ODS层数据和前一天DWD相关表进行merge处理

 

3. DW(B/S) 数据汇总层

功能:

为DW、ST层提供细粒度数据,细化成DWB合DWS;

DWB是根据DWD明细数据经行清晰转换,如维度转代理键、身份证清洗、会员注册来源清晰、字段合并、空值处理、脏数据处理、IP清晰转换、账号余额清洗、资金来源清洗等;

DWS是根据DWB层数据按各个维度ID进行粗粒度汇总聚合,如按交易来源,交易类型进行汇合

 

建模方式及原则:

聚合、汇总增加派生事实;

关联其它主题的事实表,DW层可能会跨主题域;

DWB保持低粒度汇总加工数据,DWS保持高粒度汇总数据;

数据模型可能采用反范式设计,合并信息等。

数据仓库——阿里五层模型架构「建议收藏」

 

4. DM 数据集市层

功能:

可以是一些宽表,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储;

满足一些特定查询、数据挖掘应用;

应用集市数据存储

建模方式及原则:

尽量减少数据访问时计算,优化检索;

维度建模,星型模型;

事实拉宽,度量预先计算;

分表存储

数据仓库——阿里五层模型架构「建议收藏」

 

 

5. ST 数据应用层

功能:

ST层面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析,面向最终结果用户;

适合作OLAP、报表模型,如ROLAP,MOLAP;

根据DW层经过聚合汇总统计后的粗粒度事实表

 

建模方式及原则:

保持数据量小;

维度建模,星形模型;

各位维度代理键+度量;

增加数据业务日期字段,支持数据重跑;

不分表存储

数据仓库——阿里五层模型架构「建议收藏」

 

 数据仓库——阿里五层模型架构「建议收藏」

 

 数据仓库——阿里五层模型架构「建议收藏」

 

 数据仓库——阿里五层模型架构「建议收藏」

 

 

解码OneData,阿里的数仓之路

 

建立的方法和思路》》》》》》》》

基于这样的问题和挑战,阿里集团规划建设一个全集团的全域数据公共层,将公共的数据、计算沉淀于此,降低数据存储和计算成本,提升数据互通和消费的效率,从而支撑快速数据业务应该的创新。公共层中重要的一环是数据模型的构建,那么我们先从行业看看一些方法体系和经验:

 

1)他山之石——行业内是如何做的?

A、实体关系(ER)模型

数据仓库之父Immon的方法从全企业的高度设计一个3NF模型,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,它与OLTP系统中的3NF的区别,在于数据仓库中的3NF上站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象,它更多的是面向数据的整合和一致性治理,正如Immon所希望达到的:“single version of the truth”。但是要采用此方法进行构建,也有其挑战:

 

  • 需要全面了解企业业务和数据
  • 实施周期非常长
  • 对建模人员的能力要求也非常高

B、维度模型

维度模型是数据仓库领域另一位大师Ralph Kimall所倡导,它的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling》是数据仓库工程领域最流行的数仓建模经典。

 

维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。典型的代表是我们比较熟知的星形模型,以及在一些特殊场景下适用的雪花模型。

 

C、DataVault

DataVault是Dan Linstedt发起创建的一种模型方法论,它是在ER关系模型上的衍生,同时设计的出发点也是为了实现数据的整合,并非为数据决策分析直接使用。它强调建立一个可审计的基础数据层,也就是强调数据的历史性可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合;同时也基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型应对源系统变更的扩展性。它主要由:Hub(关键核心业务实体)、Link(关系)、Satellite(实体属性)三部分组成 。

 

D、Anchor模型

Anchor模型是由Lars. Rönnbäck设计的,初衷是设计一个高度可扩展的模型,核心思想:所有的扩展只是添加而不是修改,因此它将模型规范到6NF,基本变成了K-V结构模型。Anchor模型由:Anchors 、Attributes 、Ties 、Knots 组成,相关细节可以参考《Anchor Modeling-Agile Information Modeling in Evolving Data Environments》

 

2)阿里的数仓模型体系要如何构建?

阿里巴巴集团在很早就已经把大数据做为战略目标实施,而且其各个业务也非常依赖数据支撑运营,那么阿里究竟采取何种方法构建自己的体系?阿里的数据仓库模型建设经历的多个发展周期:

 

第一阶段:完全应用驱动的时代,阿里巴巴第一代的数据仓库系统构建在Oracle上,数据完全以满足报表需求为目的出发,将数据以与源结构相同的方式同步到Oracle后,我们叫ODS(Operational Data Store)层,数据工程师基于ODS数据进行统计,基本没有模型方法体系,完全基于对Oralce数据库特性的利用进行数据存储和加工,部分采用了一些维度建模的缓慢变化维方式进行历史数据处理。那时候的数据架构只有两次层ODS+DSS。

 

第二阶段:随着阿里业务的快速发展,数据量也在飞速增长,性能已经是一个较大问题,因此引入了当时MPP架构体系的Greenplum,同时阿里的数据团队也在着手开始进行一定的数据架构优化,希望通过一些模型技术改变烟囱式的开发模型,消除一些冗余,提升数据的一致性。来做传统行业数仓的工程师,开始尝试将工程领域比较流行的ER模型+维度模型方式应用的阿里集团,构建出一个四层的模型架构ODL(操作数据层)+BDL(基础数据层)+IDL(接口数据层)+ADS(应用数据层)。ODL保持和源系统保持一致,BDL希望引入ER模型,加强数据的整合,构建一致的基础数据模型,IDL基于维度模型方法构建集市层,ADL完成应用的个性化和基于展现需求的数据组装。其中我们在构建ER模型遇到了比较大的困难和挑战,互联网业务的快速发展,人员的快速迭代变化,业务知识功底的不够全面导致ER模型设计迟迟不能产出,至此,我们也得到了一个经验,在一个不太成熟,快速变化的业务面前,构建ER模型的风险非常大,不太适合去构建。

 

第三阶段:阿里集团的业务和数据还在飞速发展,这个时候迎来了以hadoop为代表的分布式存储计算平台的快速发展,同时阿里集团自主研发的数加大规模计算服务MaxCompute(原ODPS)也在紧锣密鼓的进行中;我们在拥抱分布式计算平台的同时,也开始建设我们的第三代模型架构,我们需要找到一个核心问题,找打适合阿里集团业务发展,又能充分利用分布是计算平台能力的数据模型方式。

 

我们选择了以Kimball的维度建模为核心理念基础的模型方法论,同时对其进行了一定的升级和扩展,构建了阿里集团的数据架构体系——OneData

 

OneData体系分为:数据规范定义体系、数据模型规范设计、ETL规范研发以及支撑整个体系从方法到实施的工具体系。

 

落地实现》》》》》》

A)数据规范定义

将此前个性化的数据指标进行规范定义,抽象成:原子指标、时间周期、其他修饰词等三个要素。

 

例如,以往业务方提出的需求是:最近7天的成交。而实际上,这个指标在规范定义中,应该结构化分解成为:

原子指标(支付订单金额 )+修饰词-时间周期(最近7天)+修饰词-卖家类型(淘宝)

 

B)数据模型架构

将数据分为ODS(操作数据)层、CDM(公共维度模型)层、ADS(应用数据)层。

其中:

ODS层主要功能

这里先介绍一下阿里云数加大数据计算服务MaxCompute,是一种快速、完全托管的TB/PB级数据仓库解决方案,适用于多种数据处理场景,如日志分析,数据仓库,机器学习,个性化推荐和生物信息等。 

  • 同步:结构化数据增量或全量同步到数加MaxCompute(原ODPS);
  • 结构化:非结构化(日志)结构化处理并存储到MaxCompute(原ODPS);
  • 累积历史、清洗:根据数据业务需求及稽核和审计要求保存历史数据、数据清洗;

CDM层主要功能

CDM层又细分为DWD层和DWS层,分别是明细宽表层和公共汇总数据层,采取维度模型方法基础,更多采用一些维度退化手法,减少事实表和维度表的关联,容易维度到事实表强化明细事实表的易用性;同时在汇总数据层,加强指标的维度退化,采取更多宽表化的手段构建公共指标数据层,提升公共指标的复用性,减少重复的加工。

 

ADS层主要功能

 

  • 个性化指标加工:不公用性;复杂性(指数型、比值型、排名型指标)
  • 基于应用的数据组装:大宽表集市、横表转纵表、趋势指标串

其模型架构图如下,阿里通过构建全域的公共层数据,极大的控制了数据规模的增长趋势,同时在整体的数据研发效率,成本节约、性能改进方面都有不错的结果。 

 

C)研发流程和工具落地实现

将OneData体系贯穿于整个研发流程的每个环节中,并通过研发工具来进行保障。 

 

实施效果》》》》》》

 

  1. 数据标准统一:数据指标口径一致,各种场景下看到的数据一致性得到保障
  2. 支撑多个业务,极大扩展性:服务了集团内部45个BU的业务,满足不同业务的个性化需求
  3. 统一数据服务:建立了统一的数据服务层,其中离线数据日均调用次数超过22亿;实时数据调用日均超过11亿
  4. 计算、存储成本:指标口径复用性强,将原本30000多个指标精简到3000个;模型分层、粒度清晰,数据表从之前的25000张精简到不超过3000张。
  5. 研发成本:通过数据分域、模型分层,强调工程师之间的分工和协作,不再需要从头到尾每个细节都了解一遍,节省了工程师的时间和精力。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167035.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月5日 下午9:46
下一篇 2022年8月5日 下午10:00


相关推荐

  • 微端传奇怎么架设_架设

    微端传奇怎么架设_架设1.首下载gmqd引擎包。解压出来,找到里面(微端服务器),里面有两个文件夹,一个是微端程序,一个是微端网关,接下来,把微端程序文件里面的四个文件,复制到微端服务器电脑上面的,热血传奇客户端里面}。见下图2.然后运行updateserver.exe这个程序,等运行完后,看看里面是否加载到补丁文件3.如果都加载到客户端里面的补丁文件。那么微端程序已经运行成功了,要注意的是,PAK格式补丁。如果你的服有要用到PAK格式补丁,那么就要微端程序里面设置PAK补丁密码。见下图4.记住只要在明文密码处,输入PAK补

    2022年10月6日
    3
  • 超详细分析Bootloader(Uboot)到内核的启动流程(万字长文!)

    超详细分析Bootloader(Uboot)到内核的启动流程(万字长文!)文章目录 Bootloader 启动流程分析 Bootloader 第一阶段的功能硬件设备初始化为加载 Bootloader 的第二阶段代码准备 RAM 空间 初始化 nandflash 复制 Bootloader 的第二阶段代码到 SDRAM 空间中 重定位 设置好栈跳转到第二阶段代码的 C 入口点 Bootloader 第二阶段的功能 初始化本阶段要使用到的硬件设备检测系统内存映射 memorymap 将内核映象和根文件系统映象从 Flash 上读到 SDRAM 空间中为内核设置启动参数调用内核 uboot 启动内核详解 uboot 与 Lin

    2026年3月26日
    1
  • 深度学习—2.常见的神经网络结构

    深度学习—2.常见的神经网络结构

    2021年10月5日
    49
  • 详解Android中AsyncTask的使用

    详解Android中AsyncTask的使用在 Android 中实现异步任务机制有两种方式 Handler 和 AsyncTask Handler 模式需要为每一个任务创建一个新的线程 任务完成后通过 Handler 实例向 UI 线程发送消息 完成界面的更新 这种方式对于整个过程的控制比较精细 但也是有缺点的 例如代码相对臃肿 在多个任务同时执行时 不易对线程进行精确的控制 关于 Handler 的相关知识 前面也有所介绍 不清楚的朋友们可以参照一下

    2026年3月19日
    2
  • Java集合篇:HashMap 与 ConcurrentHashMap 原理总结

    Java集合篇:HashMap 与 ConcurrentHashMap 原理总结一、HashMap原理总结:1、什么是HashMap:(1)HashMap是基于Map接口的非同步实现,线程不安全,是为了快速存取而设计的;它采用key-value键值对的形式存放元素(并封装成Node对象),允许使用null键和null值,但只允许存在一个键为null,并且存放在Node[0]的位置,不过允许存在多个value为null的情况。(2)在JDK7及之前的版本,HashMap的数据结构可以看成“数组+链表”,在JDK8及之后的版本,

    2022年6月24日
    24
  • 最全QQ盗号手法分析,全面防御QQ盗号[通俗易懂]

    最全QQ盗号手法分析,全面防御QQ盗号[通俗易懂]你的QQ是否被盗过号,或者你身边的朋友、同学是否有过被盗号的经历。如今的安全机制真的没有效吗?盗号真的这么简单吗?本期将彻底解决这一问题。本期是上一期的姊妹篇,建议先看上一期,这样对于攻击者的手法才有更好的理解:传送门常见的盗号手法1、诱导链接以及二维码  这种情况在QQ群里面见的多。通常是发送一些具有诱惑性的链接诱导你去点击。也可能会是一些二维码,如下图。为了做这期,能更好的了解其盗号的手段,我把凡是我看到的盗号链接都点了个遍,那些恶意二维码我也扫了个遍。这是我在了解其原理并做了相应的安全措施.

    2022年7月26日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号