Kimball和Inmon的区别

  • Post category:database

Kimball和Inmon都是数据仓库建模领域非常著名的两位专家,两位专家虽然都在数据仓库领域有深入研究,但是他们的方法和理念存在很大的差异。以下是Kimball和Inmon区别的详细讲解。

Inmon的理念

Inmon从“企业数据模型”(Enterprise Data Model)出发,采取自上而下的建模方法,从企业级数据仓库的整体出发,分解为较小的细节,最终得到可被多个应用系统共享和使用的关键数据仓库。在Inmon的理念中,关注的不仅是数据仓库的结构和数据,同时还包括数据来源、传输和存储过程中的管理等方面。

Kimball的理念

Kimball从“维度建模”(Dimensional Modeling)出发,采用自下而上的建模方法,从业务流程的角度出发,关注核心业务流程,通过“事实表”(Fact Table)和“维度表”(Dimension Table)的方式建立数据仓库。在Kimball的理念中,关注的不仅是数据仓库的结构和数据,同时还包括如何让即时查询得到最快速度的考虑。

Kimball和Inmon的区别

从上述Inmon和Kimball的理念中,我们可以得出两者在以下方面存在很大的区别。

建模思路区别

Inmon注重的是整体和管理。即通过一个企业级数据模型来建立数据仓库,强调数据的完整性和正确性。而Kimball注重的是业务流程和性能,通过事实表与维度表来展现由业务流程引发的数据变化,强调数据的查询性能。

建模方法区别

Inmon采取自上而下的建模方法,先从高层次的视图开始建模,分解为更小的数据模型。而Kimball采取自下而上的建模方法,即先从业务流程出发,再构建与之匹配的维度模型。

表设计区别

在表的设计上,Inmon对应于数据的归一化,即把重复的数据抽象成一个表,这样可以大大降低冗余数据。而Kimball则主张采用星形或雪花的维度建模方式,通过事实表和多个维度表的相互连接,从而实现面向用户、方便查询的目标。

举例说明

例如,有一个销售数据仓库需要建立,以下是在Inmon和Kimball的建模方法下,如何进行建模的举例说明。

Inmon的建模方法

在Inmon的建模方法下,需要先从企业级数据模型开始建模,把整个销售数据仓库划分成为多个细节数据模型,通过不断的细化,最终得到可供多个应用系统共享的关键数据仓库。具体操作如下:

  1. 从企业级数据模型出发,把整个销售数据仓库划分为多个数据模型,比如说订单数据模型,产品数据模型,客户数据模型等。

  2. 在每个数据模型中,对实体之间的关系进行建模,以确定数据模型之间的数据交换规则。

  3. 对于每个数据模型,进行数据建模和数据归一化。

  4. 最后,将不同的数据模型合并,建立关键数据仓库,最终的数据仓库满足多个应用系统的需求。

Kimball的建模方法

在Kimball的建模方法下,需要先从业务流程出发,通过事实表和维度表建立数据仓库。具体操作如下:

  1. 从业务流程出发,确定本次建模的业务流程,比如说销售数据流程,包括订单、客户、产品信息等。

  2. 针对该业务流程,建立一个事实表,比如说“销售事实表(Sales Fact Table)”,该表包含了销售过程的所有事实数据,比如说订单编号、客户编号、产品编号、销售金额、销售时间等。

  3. 针对事实表中的每个事实,确定对应的维度表,比如说订单维度表、客户维度表、产品维度表等。

  4. 在每个维度表中,列出该维度的特征和相关的细节信息,比如客户维度表中包含客户名称、客户地址、客户国籍等信息。

  5. 最后将每个维度表与事实表相连,建立起维度模型,从而完成数据仓库的建立。

总之,Kimball和Inmon在数据仓库建模层面存在很大差异,每种建模方法都有其优势和劣势。作为数据仓库建立的专家,需要根据不同的业务场景,以及对数据仓库是否需要支持多个应用程序共享等方面的功能需求来选择合适的建模方法。