Kimball和Inmon的区别

yizhihongxing

Kimball和Inmon都是数据仓库领域的重要人物,他们对于数据仓库的设计理念有着不同的观点,具体如下:

Inmon的设计理念

Inmon提出的数据仓库设计理念被称为“企业数据仓库(Enterprise Data Warehouse,简称EDW)”,它是一个面向整个企业的数据仓库,由多个主题区域(Subject Area)组成,通过ETL(Extract, Transform, Load)过程从不同的操作性系统中抽取数据,并进行清洗、整合和质量控制等一系列操作。

Inmon的设计理念强调数据的一致性和标准化,他认为数据应该有一个“真正的”模型,这个模型应该是“第三范式”(Third Normal Form)的。

例如,Inmon的数据模型通常为ER模型,如下图所示:

Inmon的ER模型

Inmon认为,一个数据仓库需要有以下特点:

  1. 数据集中存储,一致性可靠;
  2. 以主题区域划分数据,方便用户访问;
  3. 通过ETL过程进行数据转换和数据清理;
  4. 数据模型是规范化的ER模型,方便维护;
  5. 数据仓库和操作数据库分离,避免性能问题。

Kimball的设计理念

Kimball提出的数据仓库设计理念被称为“维度建模(Dimensional Modeling)”,它的特点是以业务过程为中心,通过维度和事实表来组织数据。

Kimball的设计理念强调快速响应和易于理解,他认为数据应该以“星型模型”(Star Schema)的方式组织,而不是“第三范式”。

例如,Kimball的数据模型通常为星型模型,如下图所示:

Kimball的星型模型

Kimball认为,一个数据仓库需要有以下特点:

  1. 聚焦于业务过程,易于理解;
  2. 以维度和事实表划分数据,易于查询;
  3. 通过ETL过程进行数据转换和数据清理;
  4. 数据模型是星型模型,方便查询和报表;
  5. 数据仓库和操作数据库分离,避免性能问题。

区别对比

总结起来,Inmon的设计理念强调数据的一致性和标准化,数据仓库应该由多个主题区域组成,采用ER模型,通过ETL过程进行数据转换和数据清理,数据集中存储,但不能很好支持业务的快速响应。

Kimball的设计理念则强调业务的快速响应和易于理解,采用了星型模型,通过ETL过程进行数据转换和数据清理,以维度和事实表划分数据,可以很好地支持查询和报表。

以下是两个设计理念的主要区别:

对比项目 Inmon Kimball
模型 ER模型 星型模型
主题区域 多个主题区域 以业务过程为中心
一致性和标准化 强调 不强调
业务响应 不够灵活 灵活
查询和报表 不够方便 方便

例如,如果我们想要实现一个销售数据分析的数据仓库,Inmon的设计理念可能首先考虑数据标准化和细节的处理,例如销售员、客户、订单等细节数据的ER模型建模,然后再通过ETL过程将数据加载至数据仓库。而Kimball的设计理念则会首先考虑业务过程的建模,例如以“销售”业务过程为中心,定义“时间”、“地点”、“客户”等维度,以及“销售额”、“利润”等事实表。

综上所述,Inmon和Kimball两种设计理念的应用场景有所不同,应该根据实际情况选择合适的设计理念。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Kimball和Inmon的区别 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • 如何高效实现 MySQL 与 elasticsearch 的数据同步

    MySQL 自身简单、高效、可靠,是又拍云内部使用最广泛的数据库。但是当数据量达到一定程度的时候,对整个 MySQL 的操作会变得非常迟缓。而公司内部 robin/logs 表的数据量已经达到 800w,后续又有全文检索的需求。这个需求直接在 MySQL 上实施是难以做到的。 原数据库的同步问题 由于传统的 mysql 数据库并不擅长海量数据的检索,当数据量…

    MySQL 2023年4月11日
    00
  • 静态SQL 和动态SQL 的区别

    静态SQL和动态SQL是在数据库编程中经常使用的概念,它们有很大的区别。在本文中,我将详细介绍静态SQL和动态SQL的定义、区别和两个示例。 静态SQL和动态SQL的定义 静态SQL是指在编写代码时,SQL语句的所有部分都是硬编码的,无论数据如何变化,都修改不了。静态SQL语句在执行时会被编译为一组操作序列,并且在每次执行时都会执行相同的操作序列。静态SQL…

    database 2023年3月27日
    00
  • mysql查询获得两个时间的时间差方式

    要查询获得两个时间的时间差,可以使用MySQL内置的时间函数TIMESTAMPDIFF。下面是使用TIMESTAMPDIFF函数获得时间差的详细攻略: 1. 函数格式 TIMESTAMPDIFF(unit,datetime1,datetime2)是MySQL内置的时间函数,它用于计算两个时间之间的间隔。其中,unit参数指定输出结果的单位(秒,分钟,小时,天…

    database 2023年5月22日
    00
  • Golang Redigo连接Redis 简单使用

    func newPool(host string, db int) *redis.Pool { return &redis.Pool { MaxIdle: 50, MaxActive: 100, Dial: func() (redis.Conn, error) { options := redis.DialDatabase(db) c, err :=…

    Redis 2023年4月13日
    00
  • PostgreSQL数据库的基本查询操作

    PostgreSQL数据库的基本查询操作攻略 PostgreSQL是一款功能强大的开源关系型数据库系统,支持多种数据类型和查询操作。在本篇攻略中,我们将介绍PostgreSQL数据库的基本查询操作,包括如何查询表、过滤数据、排序数据、聚合数据等。以下是具体步骤: 1. 创建表格 在开始查询操作之前,需要先创建一个包含数据的表格。使用如下命令创建一个test表…

    database 2023年5月21日
    00
  • com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections

      com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:921) at com.mysql.jdbc.MysqlIO.ch…

    MySQL 2023年4月13日
    00
  • 详谈MySQL和MariaDB区别与性能全面对比

    详谈 MySQL 和 MariaDB 区别与性能全面对比 介绍 MySQL 和 MariaDB 都是开源的关系型数据库管理系统(RDBMS),都具有高性能、可扩展性、可靠性等优点。然而,它们之间还有一些区别,本文将介绍它们的区别并进行性能对比。 区别 以下是 MySQL 和 MariaDB 之间的主要区别: 开发者不同:MySQL 由 Oracle 公司开发…

    database 2023年5月22日
    00
  • vscode内网访问服务器的方法

    下面是详细的“vscode内网访问服务器的方法”的攻略。 什么是vscode内网访问服务器? 通常情况下,我们的电脑和服务器一般都处于同一个局域网,如果我们直接在vscode上连接服务器,即使服务器开了对外映射的端口,也无法直接连接,这就是内网访问。 解决方法 要解决这个问题,我们可以通过在本地电脑与服务器之间建立一个SSH隧道,来实现内网访问。下面我们将具…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部