数据仓库-维度建模不是万金油

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 写在前面:最近有些抵触写东西,总感觉自己没有清晰的表达思路和专业的知识体系,写的东西都是更偏向个人经验的一家之谈;之前总想着把文章结构做好,图片做好,表达做好,这样能更容易让大家理解,可以让更多的人接受所要表达的观点;但是,这样写太痛苦了,似乎是为了达到某种结果而刻意为之。。。最终还是回归表达的本质,传播思路和想法,把这个说清楚就可以了,不管是三言两语还是长篇大论,让看到的人能知道有这么一种观点和

写在前面:

最近有些抵触写东西,总感觉自己没有清晰的表达思路和专业的知识体系,写的东西都是更偏向个人经验的一家之谈;之前总想着把文章结构做好,图片做好,表达做好,这样能更容易让大家理解,可以让更多的人接受所要表达的观点;但是,这样写太痛苦了,似乎是为了达到某种结果而刻意为之。。。

最终还是回归表达的本质,传播思路和想法,把这个说清楚就可以了,不管是三言两语还是长篇大论,让看到的人能知道有这么一种观点和想法即可,引发思考之后接受与否已经与表达者无关了;特别是一些偏向专业的内容,只需要让有专业背景和思考的受众了解即可;

简短的表达,节约大家的时间也是一种真诚~

从数据仓库的目的说起:

企业建立自身数据仓库的目的最早应该是为了数据分析,将企业各个在线系统的数据内容合并到一个离线数仓中进行大数据量的查询分析,以获得各种业务指标数据,按照行业的各种分析思路和方法,辅助业务做出最佳的决策;

一直到现在,大部分的企业也是以数据分析为目的进行数据仓库相关建设的;

随着信息化、数字化浪潮的到来,企业自身产生的数据量越来越多,数据种类愈加丰富,数据仓库慢慢向数据湖演变,汇聚了企业的所有信息化数据,使用场景也已经不再是单纯的数据分析了;

常规的数据分层理论成为共识:

ods作为采集数据层,保持源头数据的原貌,基本不过任何加工;

cdm作为整合数据层,用数仓的建模方法对数据进行整合加工,方便查找和使用;

adm作为应用数据层,面向具体的数据应用场景,按需加工出结果数据;

我们通常讲的数仓建模也就集中在后面两层,随着从业人员经验的不断积累和丰富,衍生出很多的建模理论,被广为推崇的或者大家接触最多的就是 维度建模 和 实体关系建模,大部分偏向应用数据层开发的同学基本上只用到维度建模,觉得这是一种万金油的建模理论,因为当前80%的应用场景都是面向分析的,所以维度建模理所当然成为首选,然后慢慢成为唯一推崇的选择;

从信息整合的逻辑分析:

信息在源头的组织形式基本都是实体关系建模,符合范式标准,因为当前技术上的限制,呈现为雪花状的模型结构;信息和数据在存储上是分散的,关联关系负责,需要很多的主键、外键进行约束;

因此业务系统在使用中都会有对应的数据中间件或应用框架,来辅助数据库信息的查询,即数据对象的封装;

当这些原始数据同步到数据仓库中后,应为数仓自身的设计,不再有各种约束和中间件对数据进行封装,多级分散的数据对sql查询分析来讲非常不友好,使用成本太高;所以就有了数仓整合数据的概念;

数据的整合目的是信息的整合,最好的结果就是有一个结构清晰的数据集合,能保持源头信息的完整性,又方便进行持续维护;所以就有了 整合数据层 的数据建模,也就是常说的中间层数据模型;

从维度建模的方法分析:

具体维度建模的详细介绍和实践方法,大家可以通过内网搜索到很多,这里就不多说了;最终目的一直都是为了数据分析的使用场景,因为数据分析的逻辑是对某个数据指标进行分析,一切的设计都是围绕指标分析的目的进行的;

维度表:即指标分析的视角,某个省的销售额,某个部门的销售额,某个商品的销售额;

事实表:即指标计算的对象,订单记录中的金额计算出销售额,订单记录中的数量计算出销售量;

从数据分析的场景看是非常简单清晰的,如果放到信息整合的场景中呢?

一个用户的所有信息:归属到维度?

一个用户的所有行为:归属到事实?

这个地方我无法把自己的思路说清楚,个人结论就是不合适:

不是所有的信息都可以归为维度视角

不是所有的计算对象都可以归为事实行为

再说理解上的问题:

我想要找到某个信息或者行为的数据,需要先进行定义上的转换==》是什么维度?什么事实?

这种转换定义唯一吗?不唯一,有几个数据开发同学就有几种定义。。。

所以,真的好使用吗?还是因为好开发?

从实体建模的方法分析:

很多人对ER实体建模方法的认知停留在现实世界中的实体关系上,而在业务系统中实体和关系是非常多样化的,特别是业务系统中的各种业务单据信息,必须以业务实体的形式来定义,即 常规对象实体+业务单据实体+关系 形成对企业完整信息的覆盖;

所以,实体关系模型在实际使用中是一种泛化的概念,即 实体对象+业务单据+关系 的信息模型,在实际的信息分布上,不同种类的对象信息呈现1:N的复杂结构,单据信息因为业务链路也会有很多1:N的发散;

在数据仓库中使用ER模型可以最接近业务系统模型的信息分布,所以更适合与进行企业全局的信息整合,但是对于数据研发人员的能力要求会比较高:需要全面了解企业业务和数据、实施周期非常长;

将各个系统的数据以企业角度按主题进行组合和合并,并进行一致性处理,为企业提供统一的数据服务,个人结论是最适合中大型企业进行全局数据仓库建设的最优解,不能因为对人员能力的要求和投入成本而放弃;

写在后面:

还是那句话,个人水平有限,表达能力有限,大家各取所需;

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
4月前
|
存储 运维 监控
云原生数据仓库使用问题之怎么创建维度表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
5月前
|
存储 SQL 分布式计算
离线数仓(五)【数据仓库建模】(4)
离线数仓(五)【数据仓库建模】
|
5月前
|
SQL 存储 关系型数据库
离线数仓(五)【数据仓库建模】(1)
离线数仓(五)【数据仓库建模】
离线数仓(五)【数据仓库建模】(1)
离线数仓(五)【数据仓库建模】(3)
离线数仓(五)【数据仓库建模】
|
5月前
|
存储 SQL JSON
离线数仓(五)【数据仓库建模】(2)
离线数仓(五)【数据仓库建模】
|
存储 数据挖掘 关系型数据库
数仓学习---6、数据仓库概述、 数据仓库建模概述、维度建模理论之事实表、维度建模理论之维度表
数仓学习---6、数据仓库概述、 数据仓库建模概述、维度建模理论之事实表、维度建模理论之维度表
|
6月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
265 0
|
存储 数据挖掘 BI
数据仓库建模
数据仓库建模
216 0
|
SQL 数据挖掘 HIVE
Hive数据仓库维度分析
Hive数据仓库维度分析
160 0
|
存储 BI 数据库
数据仓库(4)基于维度建模的数仓KimBall架构
基于维度建模的KimBall架构,将数据仓库划分为4个不同的部分。分别是操作型源系统、ETL系统、数据展现和商业智能应用,如下图。
287 1