三范式建模和维度建模,到底该选哪一个?

news2024/9/29 5:36:44

编辑导语:当你需要从头开始设计数据仓库时,你会选择哪种建模方式?也许,你会从三范式建模和维度建模二者中选择。但是这二者有其各自的适用范围,具体选择哪种方法,还需要回归至业务层。本篇文章里,作者对Inmon 方法和Kimball 方法做了对比分析,一起来看一下。

一、两种建模方式的背景

在如何构建数据仓库方面,这两种截然不同的思想流派:Inmon 方法和 Kimball 方法。他们的关键区别在于数据结构如何建模、加载和存储在数据仓库中。这种差异会影响数据仓库的交付时间以及适应 ETL 设计未来变化的能力。

当数据架构师被要求从头开始设计和实现数据仓库时,他或她应该选择哪种架构风格来构建数据仓库?如何帮助架构师在 Inmon 或 Kimball 架构之间做出选择?

Inmon的三范式建模经常被和Kimball 是维度数据经常会被拿来对比,两位大神也一直在秉持着自己的数据建模观点。两位大神有过非常有趣的观点是, Kimball 曾经说过: “数据仓库只不过是所有数据集市的联合体”,对此 Inmon 的回应是:“你可以捕获海洋中的所有小鱼并将它们聚在在一起——但是它们仍然不能成为鲸鱼”。

在典型的数据仓库中,我们从一组 OLTP 数据源开始(关于OLTP的说明可见《秒懂数仓的前世今生:DBMS、DW、OLTP、OLAP到底是啥?(上篇)》)。这些可以是Excel 表格、ERP 系统、文件或基本上任何其他数据源。数据存储在目标环境后,使用 ETL 工具对数据进行处理和转换,然后将其馈入数据仓库。

Inmon 认为数据应该在 ETL 过程之后直接送入数据仓库。Kimball 则坚持认为,在 ETL 过程之后,数据应该被加载到数据集市中,所有这些数据集市的联合创建一个概念性的数据仓库。

二、两种建模方式的定义

从定义上来说,Inmon 构建数据仓库的方法始于企业级别的数据模型。该模型确定了关键主题领域,最关键的是构建业务运营和关心的关键实体,如客户、产品、供应商等。

首先,从这个模型中,为每个主要实体创建了一个详细的逻辑模型。例如,将客户构建一个逻辑模型,其中包含与该实体相关的所有详细信息。

其次,客户下可能有十个不同的实体。实体之间的对应关系是如何建立的,在这一步骤中有很多的体现。包括业务键、属性、依赖关系、参与和关系在内的所有细节都将在详细的逻辑模型中捕获。这里的关键点是实体结构是以规范化形式构建的。尽可能避免数据冗余。这导致业务概念的清晰识别并避免数据更新异常。

最后,是构建物理模型。数据仓库的物理实现也被规范化。这就是 Inmon 所说的“数据仓库”,这里是管理企业真实数据的地方。这种规范化模型使得加载数据不那么复杂,但是使用这种结构进行查询很困难,因为它涉及许多表和连接。

因此,Inmon 构建特定于部门的数据集市。数据集市将专门为财务、销售等设计,数据集市可以包含非规范化数据以帮助报告。任何进入数据仓库的数据都是集成的,数据仓库是不同数据集市的唯一数据源。这可确保数据的完整性和一致性在整个组织中保持完整。(详细内容可参考《数仓界的大神之Inmon数据仓库建设(3范式建模)》)

接着,咱们来看下Kimball。

从定义上来看,Kmiball是维度建模的拥护者,提供一种方法去建立数仓,“对于数据的查询和分析提供一种更为明确的数据结构”。再经过数据处理ETL后,就开始进行核心建模,维度建模中最关注的有两项。

事实表的建设:经常也被成为度量,事实是可以体现业务流程中真实表现的数据。例如:对于销售业务流程,最核心的体现是季度销售金额;对于招聘流程,最核心的体现是招聘人数;对于技术团队,最核心的体现是开发了多少功能。

维度表的建设:维度是经常被大家说道的一个词,其实维度更多的是一个视角,是从不同的角度去观察和分析事实的一个方法。谁在那干啥?例如:以销售流程为例,需要分析的维度有:谁买了商品——客户名称,在哪买了商品——售卖地点,买了啥商品——商品名称 (详细内容可参考《清晰易懂!用5W2H方法进行维度建模,一篇搞定!》)。

三、两个模型的多视角对比

四、两个模型的适用范围

每种方法都有各自的特点,并且会适用于不同的环境中。具体选择哪种数据仓库设计方法取决于组织的业务目标、业务特性、时间、成本、不同组织单元之间的相互依赖级别。

Inmon 三范式建模的方法适合长期稳定的业务,所谓“长期稳定”是指:

“时间方面,业务整体的数据建设可以经得起长时间的打磨;成本方面,由于inmon建模需要专家团队的支持,所以需要能接受较多的支出。”

Kimball维度建模的方法更加适合快速激进的业务,所谓“快速激进”是指:

“时间方面,业务处于快速扩张要快速看到效果;成本方面,没有较多较为专业的团队来支持相关建设。”

我们可以拿两个例子来解释说明一下。

营销:这是一个专业领域,我们不需要为了分析的目的考虑营销的每个方面。因此,我们不需要企业仓库——几个数据集市就足够了——也就是 Kimball 方法。

保险:为了根据未来的预测管理风险,我们需要对所有投保人形成一个广泛的图景,由一系列数据组成,如盈利能力、历史、人口统计等。所有这些方面都是相互关联的,因此 Inmon 方法从仓库中的所有数据开始,并根据需要对其进行过滤是两者中最合适的。

市场:这是一个小的分支,并且业务场景较为简单,无需进行企业级数仓建设,只需要数据集市就够了。因此,Kimball的方法比较适合。

银行:银行类的业务对于银行产品和客户信息都是非常关注,尤其是两者的交叉分析,哪些人买了啥银行产品。这些数据会有相关的限制,例如:产品和客户的信息不可给市场和财务部门公开,部门与部门之间的数据会有限制,这种情况下只能采用Kimball的方法;如果银行中的整个流程和部门相互关联,这种情况下使用Inmon会更好一些

制造业:会涉及到多个组织单元,且预算比较充裕。这种情况没有系统依赖,因而需要企业模型,这时还是Inmon的方法比较理想。

在设计数据仓库时,首先要先看看业务目标——短期目标和长期目标。看看功能之间哪里有联系,什么是独立的。分析数据源的数量和质量。最后,评估你的资源级别、时间和经费。这能帮助你判断用Inmon方法还是用Kimball方法,或者是两种方法的组合。

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

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

相关文章

day-004-链表-两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II

两两交换链表中的节点 题目建议:用虚拟头结点,这样会方便很多。 题目链接/文章讲解/视频讲解 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* Li…

手麻系统源码,手术麻醉管理系统源码,二次开发方便快捷

手术麻醉管理系统源码,手麻系统源码,C# .net 桌面软件 C/S版 手术麻醉管理系统采用下拉式汉化菜单,界面友好,实用性强,设有与住院、病区、药房等系统的软件接口。 文末获取联系! 开发语言:C# …

4.1 随机变量的数学期望

学习目标: 如果我想学习随机变量的数学期望,我可能会采取以下步骤: 掌握概率论基础知识:在学习随机变量的期望之前,我需要了解概率论的基本概念,例如概率、随机变量、概率密度函数等。 学习数学期望的定义…

算法总结---最常用的五大算法(算法题思路)

一、总结 一句话总结: 【明确所求:dijkstra是求点到点的距离,辅助数组就是源点到目标点的数组】 【最简实例分析:比如思考dijkstra:假设先只有三个点】 1、贪心算法是什么? 当前看来最好的选择 局部最…

第二章(2):从零开始掌握PyTorch基础知识,打造NLP学习利器

第二章(2):从零开始掌握PyTorch基础知识,打造NLP学习利器! 目录第二章(2):从零开始掌握PyTorch基础知识,打造NLP学习利器!1. Pytorch基础1.1 Pytorch安装1.1.…

计算机网络考试复习——第四章 4.1 4.2.1 4.2.2

网络层传输的单位是IP数据报 4.1 网络层的几个重要概念 网络层提供的两种服务:网络层应该向运输层提供怎样的服务?面向连接还是无连接? 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 面向连…

X79G Xeon 2630v2 电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔) 硬件型号驱动情况 主板X79G 处理器Intel Xeon 2630v2已驱动 内存32g (16*2 2666MHZ)已驱动 硬盘Intel 760p 512GB已驱动 显卡RX 470已驱动 声卡瑞昱 英特尔 High De…

硬件外设使用方法——GPIO

【硬件外设使用】——GPIO用法GPIO基本概念GPIO应用pyb与micropython什么是pyb什么是micropythonpyb与micropython关系GPIO在micropython中的用法什么是pyb库pyb库中的GPIO用法micropython下的GPIO用法经过与硬件群的小伙伴商量,决定直接找个板子讲实战了- -。 本部…

qt动态加载qss 更好的推荐方式

1、编写QRC资源文件[window和linux通用] 2、过rcc程序生成rcc资源文件 生成2进制数据: 通过控制台窗口执行以下命令,会把qrc中的资源文件写成二进制数据保存 rcc.exe -binary .\resuorce.qrc -o .\resuorce.rcc 生成16进制数据: 通过控制台窗…

JavaSE学习进阶day03_02 内部类

第二章 内部类(最难的) 2.1 概述 2.1.1 什么是内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。可以把内部类理解成寄生,外部类理解成宿主。 2.1.2 什么时候使用内部类 一个事物内…

STM32驱动SIM900A短信模块

简介:STM32F103C8T6驱动SIM900A短信模块源码介绍。 开发平台:KEIL ARM MCU型号:STM32F103C8T6 传感器型号:SIM900A 特别提示:驱动内可能使用了某些其他组件,比如delay等,在文末外设模板下载…

协议篇之以太网协议基础概念

协议篇之以太网协议基础概念一、写在前面二、什么是以太网三、以太网TCP/IP协议分层四、MAC地址与IP地址五、写在后面一、写在前面 在学习了串口协议后,发现通过串口传输数据,数据传输的速率较慢,无法符合高速率传输场景下的要求,…

PXE+Kickstart自动化安装操作系统

文章目录PXEKickstart 完美自动化部署系统理论知识:1、PXE2、DHCP实践实验:1、DHCP服务器配置2、TFTP服务器配置3、HTTP服务器安装4、PXE配置5、Kickstart实践配置PXEKickstart 完美自动化部署系统 理论知识: 无人值守原理:Kick…

飞行机器人专栏(十一)-- 空中机器人综合健康管理系统

目录 一. 综合健康管理系统架构 1. 系统架构: 2. 故障诊断算法: 3. 预测维护策略: 4. 安全与隐私: 5. 用户友好性: 6. 模块化与可扩展性: 7. 与其他系统集成: 8. 考虑环境因素&#xf…

获取文件内容方法使用说明

一、是什么? sikuli设备新增了一个获取文件内容的方法,该方法可以传入指定路径读取文件内容,方便后续做打印,对比等工作 二、怎么用? 1.文件绝对路径,例如 windows:F:\cn_sonic\sonic-agent…

abbyy finereader15下载安装使用及功能介绍

今天给大家分享一款一款真正的专业OCR,它不仅支持多国文字,还支持彩色文件识别、自动保留原稿插图和排版格式以及后台批处理识别功能,使用者再也不用在扫描软件、OCR、WORD、EXCEL之间换来换去了,处理文件会变的就像打开已经存档的…

RabbitMQ安装教程(Mac)

1、RabbitMQ是采用Erlang语言开发的,所以系统环境必须提供Erlang环境。 brew install rabbitmq前提必须是mac安装了HomeBrew(软件包管理系统),以下都是基于mac版本的。 等大概十几分钟 brew services start rabbitmq;RabbitMQWeb…

第09章_性能分析工具的使用

第09章_性能分析工具的使用 ​ 在数据库调优过程中,我们的目标就是响应时间更快,吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优思路和方式。 1. 数据库服务器的优化步骤 ​ 当我们遇到数据库调优问题的时候,该如…

Rabbitmq学习笔记教程-尚硅谷

Rabbitmq学习笔记 (尚硅谷) 尚硅谷 rabbitmq 教程 1.MQ 的概念 1.1 什么是 MQ? 存放消息的队列,互联网架构中常见的一种服务与服务之间通信的方式。 1.2 为什么要用 MQ? 三大好处,削峰,解耦,异步。…

1小时学会CSS - 中

接第一课, 1小时学会CSS - 上,大家还记得前面说的一个概念,CSS 层叠样式吗?很多小伙伴都无法理解。 这里再详细说说,什么是CSS 层叠样式?CSS 层叠样式指的是上级标签的样式会自动继承给其所有的下级标签。…