hwyzw 发表于 2025-1-14 17:12:04

探索数仓模型设计:从IBM BDWM到NCR FS-LDM的行业应用与启发

    本文是我在写中台系列时在整理自己的历史文档时发现的关于数据仓库模型的设计文档。

    本文最初由时任 IBM 信息技术专家Bao 于 2008 年在 IBM 网站上发表。这篇文档当时给了我很大的启发。

    俗话说,水无定势,兵无常法。不同的行业有不同的特点。因此,从业务角度来看,它们对应的数据模型有很大不同。目前业界比较主流的数据仓库厂商是IBM和NCR。这两家公司除了提供比较强大的数据仓库平台之外,还拥有自己针对某个行业的数据模型。

    例如,在银行业,IBM有自己的BDWM(数据模型),NCR有自己的FS-LDM模型。在电信行业,IBM有TDWM(数据模型),NCR有自己的TS-LDM模型。所以我们看到不同的企业对于某个行业有自己的理解,所以针对某个行业就会有不同的企业模式。对于不同的行业,同一家公司也会有不同的模式,这主要取决于不同行业的不同业务特点。

    例如IBM的TDWM模型总共包含以下9个概念,如下图:

    图 1. IBM 的 TDWM 概念模型

    很多人可能会问,为什么你的模型有9个概念,而不是10个或11个?您的数据仓库模型的基础是什么?事实上,这是我们在向客户介绍我们的数据模型时经常被问到的问题。希望读者读完本文后能找到自己的答案。

    虽然每个行业都有自己的模型,但我们发现不同行业的数据模型在数据建模方法上有共同的基本特征。

    本文的一个主要目的是希望读者通过阅读本文的同时,结合自己在数据仓库建设方面的经验,总结出一套适合自己在构建数据仓库时的建模方法。仓库,可以更好的帮助客户发挥数据仓库的作用。

    本文的主线是回答以下三个问题:

    最后,在本文的最后,我们向您介绍一个具体的数据仓库建模示例,帮助您理解整个数据建模过程。

    什么是数据模型

    数据模型是抽象描述现实世界的工具和方法。它是通过抽象实体和实体之间的关系来表示现实世界中交易相互关系的映射。这里,数据模型表示实体之间的抽象关系,并通过实体之间关系的定义和描述来表达实际业务中的具体业务关系。

    数据仓库模型是针对特定数据仓库应用系统的数据模型中的具体数据模型。一般来说,我们的数据仓库模型分为几个层次,如图1所示。

    图 2. 数据仓库模型

    通过上图我们不难看出,在整个数据仓库建模过程中,我们需要经历四个大致流程:

    因此,整个数据仓库模型的设计和架构既涉及到业务知识,又涉及到具体的技术。我们不仅需要了解丰富的行业经验,还需要一定的信息技术来帮助我们实现目标。数据模型,最重要的是,我们还需要一个非常适用的方法论来指导我们业务各个阶段的抽象、处理、生成模型。

    为什么需要数据模型

    在数据仓库的建设中,我们多次强调数据模型的必要性,那么为什么数据模型如此重要呢?首先,我们需要了解整个数据仓库建设的发展历史。

    数据仓库的发展大致经历了三个过程:

    通过数据仓库建设的发展阶段可以看出,数据仓库建设与数据集市建设的重要区别在于数据模型的支持。因此,数据模型的构建对于我们数据仓库的建设具有决定性的意义。

    一般来说,数据模型的构建主要可以帮助我们解决以下问题:

    如何构建数据模型

    既然构建数据模型是整个数据仓库建设中非常重要的关键部分,那么如何构建我们的数据仓库模型就是我们需要解决的问题。这里我们将详细介绍如何创建适合您的数据模型。

    数据仓库数据模型架构

    数据仓库的数据模型架构与数据仓库的整体架构密切相关。我们先来了解一下整个数据仓库的数据模型应该包含哪几个部分。从下图中,我们可以清楚地看到整个数据模型架构分为5个部分,每个部分实际上都有自己独特的功能。

    图 3. 数据仓库数据模型架构

    从上图我们可以看出,整个数据仓库的数据模型大致可以分为5个部分:

    通过对整个数据仓库模型的数据区域的划分,我们可以了解到,一个好的数据模型不仅对业务进行了抽象的划分,而且对实现技术也提供了具体的指导。它应该涵盖从业务到实施的所有内容。技术的各个部分。

    数据仓库建模阶段划分

    我们之前已经介绍过数据仓库模型的几个层次。下面分别讲一下这几个层次不同阶段数据建模工作的主要内容:

    https://img1.baidu.com/it/u=958781599,1482970732&fm=253&fmt=JPEG&app=138&f=JPEG?w=402&h=401

    图 4. 数据仓库建模阶段的划分

    从上图我们可以清楚地看到数据仓库的数据建模大致分为四个阶段:

    业务建模,这部分建模工作,主要包括以下几个部分:

    领域概念建模,这部分建模工作,主要包括以下几个部分:

    逻辑建模,这部分建模工作,主要包括以下几个部分:

    物理建模,这部分建模工作,主要包括以下几个部分:

    从上面对数据仓库的数据建模阶段的划分,我们可以了解整个数据仓库建模的主要工作和工作量,希望对我们在实际的项目建设中有所帮助。

    数据仓库建模方法

    世界表面上看起来五光十色,但实际上,一切都遵循着自己的规律。数据仓库的建模方法也有很多。每一种建模方法实际上都代表了一种哲学观点、一种归纳、一种概括世界的方式。目前业界流行的数据仓库建模方法有很多。这里主要介绍范式建模方法、维度建模方法、实体建模方法等几种方法。每种方法实际上都是从不同的角度来看待的。我们业务中的问题,无论是从技术层面还是从业务层面,其实都代表了一种哲学世界观。下面我们将详细介绍这些建模方法。

    1.范式建模方法(Third Form,3NF)

    范式建模方法实际上是构建数据模型的常用方法。该方法主要由Inmon倡导,是主要解决关系数据库的数据存储和利用的技术方法。目前,我们在关系数据库中的建模方法大多采用三范式建模方法。

    范式是数据库逻辑模型设计的基本理论。关系模型可以无损地从第一范式分解到第五范式。这个过程也可以称为标准化。第三范式一般用于数据仓库模型设计,它有严格的数学定义。从其表达的意义来看,符合第三范式的关系必须具备以下三个条件:

    由于该范式是基于整个关系数据库的理论基础而开发的,所以这里就不介绍了。有兴趣的读者可以通过阅读相应的资料来获取这方面的知识。

    按照Inmon的观点,数据仓库模型的构建方法与业务系统的企业数据模型类似。在业务系统中,企业数据模型决定了数据的来源,企业数据模型也分为两个层次,即主题领域模型和逻辑模型。同样,主题领域模型可以看作是业务模型的概念模型,而逻辑模型则是领域模型在关系数据库上的实例化。

    图5 范式建模方法

    从业务数据模型转向数据仓库模型时,还需要数据仓库的领域模型,即概念模型,同时还有领域模型的逻辑模型。这里,业务模型中的数据模型与数据仓库中的模型略有不同。主要区别是:

    在笔者看来,Inmon的范式建模方法最大的优点是可以从关系数据库的角度,将其与业务系统的数据模型相结合,更加方便地实现数据仓库建模。但其缺点也很明显。由于建模方法仅限于关系数据库,有时会限制整个数据仓库模型的灵活性和性能,特别是考虑到数据仓库的底层数据转移到数据集市。在聚合数据时,需要进行一定的修改以满足相应的需求。因此,笔者建议读者在实际使用中参考该建模方法。

    2. 维度建模方法

    维度建模方法最先提出了这个概念。最简单的描述就是基于事实表和维度表构建数据仓库和数据集市。这种方法最广为人知的名称是星型模式(Star-)。

    图 6. 维度建模方法

    上图中的架构是典型的星型架构。星型模型之所以被广泛使用,是因为对每个维度都做了大量的预处理,比如按照维度进行预先统计、分类、排序等。通过这些预处理,可以大大提高数据仓库的处理能力。特别是对于3NF建模方法,星型模型在性能上具有明显的优势。

    同时,维度建模方法的另一个优点是维度建模非常直观,紧密围绕业务模型,能够直观地反映业务模型中的业务问题。无需特殊抽象即可完成维度建模。这也是维度建模的优势。

    然而,维度建模方法的缺点也非常明显。由于在构建星型模型之前需要进行大量的数据预处理,因此会导致大量的数据处理工作。而且,当业务发生变化,需要重新定义维度时,往往需要重新对维度数据进行预处理。在这些处理过程中,往往会造成大量的数据冗余。

    维度建模方法的另一个缺点是,如果仅仅依靠纯粹的维度建模,无法保证数据源的一致性和准确性,并且在数据仓库底层,并不是特别适合维度建模的方法。

    因此,在笔者看来,维度建模领域主要适用于数据集市层,其最大的作用其实就是解决数据仓库建模中的性能问题。维度建模很难提供一种抽象方法来完整地描述真实业务实体之间的复杂关系。

    3.实体建模方法

    实体建模不是数据仓库建模中的常用方法。它来自哲学流派。从哲学意义上来说,客观世界应该是可再分的。客观世界应该分为实体和实体之间的关系。那么我们就可以在数据仓库建模过程中引入这种抽象方法,整个业务就可以被一一划分为实体,而每个实体之间的关系以及这些关系的描述就是我们数据建模需要做的工作。

    虽然实体法乍一看似乎很抽象,但实际上很容易理解。也就是说,我们可以将任何业务流程分为3个部分,实体、事件和描述,如下图所示:

    图 7. 实体建模方法

    上图表达了一个抽象的意思。如果我们描述一个简单的事实:“小明开车去学校”。以这个商业事实为例,我们可以将“小明”和“学校”视为一个实体。 “上学”描述了一个业务流程。这里我们可以将其抽象为一个具体的“事件”,而“开车去”则可以看作是对“上学”事件的解释。

    https://img2.baidu.com/it/u=509912803,2521233939&fm=253&fmt=JPEG&app=138&f=JPEG?w=872&h=500

    从上面的例子我们可以了解到,我们使用的抽象归纳方法其实非常简单。任何一个业务都可以看作是三个部分:

    由于实体建模方法可以方便地实现业务模型的划分,因此在业务建模阶段和领域概念建模阶段得到广泛应用。从笔者的经验来看,当没有现成的行业模型时,我们可以使用实体建模的方法,与客户一起理清整个业务模型,划分领域概念模型,抽象出具体的业务概念。结合客户的使用特点,您可以创建满足您需求的数据仓库模型。

    然而,实体建模方法也有其固有的缺陷。由于实体描述方法只是一种对客观世界进行抽象的方法,注定了这种建模方法只能局限于业务建模和领域概念建模阶段。因此,到了逻辑建模阶段和物理建模阶段,就是发挥范式建模和维度建模优势的阶段。

    因此,笔者建议读者在创建自己的数据仓库模型时,可以参考以上三种数据仓库建模方法,并在不同阶段使用不同的方法,以保证整个数据仓库建模的质量。

    数据仓库建模示例

    以上介绍的是一些抽象的建模方法和理论,可能比较难理解。因此,笔者在这里举了一个例子。读者可以按照我们的示例来初步了解整个数据仓库建模过程。

    背景介绍

    熟悉社保行业的读者都会知道,目前我国的社保主要分为六大业务领域:养老、失业、工伤、生育、医疗保险和劳动力市场。在这六大业务领域中,目前养老金和职业体系的现状已经基本完善,部分数据已经开始上线测试。但对于工伤、生育、医疗、劳动力市场业务,有的地方相对成熟,有的地方还不够成熟。

    1.业务建模阶段

    基于上面的背景介绍,我们在业务建模阶段就可以很容易的划分出相应的业务。因此,在业务建模阶段,我们基本确定了我们数据仓库建设的目标、建设方法以及长期规划。如下图:

    图 8. 业务建模阶段

    在这里,我们把整个业务明确划分为几大业务线,比如:养老、失业、工伤、生育、医疗、劳动力等,然后我们可以基于这几大模块,在每个业务线,考虑特定业务线内需要分析的业务主题。

    所以,业务建模阶段实际上就是和业务人员一起梳理业务的过程。在这个过程中,不仅可以帮助我们的技术人员更好的了解业务,另一方面也可以发现业务流程中的一些不合理的环节。 、改进、改进。

    同时,业务建模阶段的另一个重要任务就是确定我们数据建模的范围。例如,在某些数据准备不充分的业务模块中,我们可能会考虑先不构建相应的数据模型。当条件足够成熟的时候,我们可以再次考虑数据建模的问题。

    2.领域概念建模阶段

    领域概念建模阶段是数据仓库数据建模的重要阶段。由于我们在业务建模阶段已经完全明确了相应的业务范围和流程,所以我们在这个领域概念建模阶段最重要的工作就是对概念进行抽象,整个领域概念建模的工作层次如下图所示:

    图 9. 领域概念建模阶段

    从上图我们可以清楚地看到,领域概念建模采用实体建模的方法,从复杂的业务表示背后抽象出实体、事件、描述等抽象实体,从而找出业务后抽象实体之间的相互关联性。表示保证了我们的数据仓库数据按照数据模型能够达到的一致性和关联性。

    从图中我们可以将整个抽象过程分为四个层次,分别是:

    通过领域概念建模,将数据仓库模型抽象为实体,构建模型框架。下一步是在这些框架中注入有效的机构。

    3.逻辑建模阶段

    领域概念建模后,虽然模型的框架已经完成,但仍有大量的细节工作需要完成。一般来说现阶段我们还需要做很多工作,主要包括:

    总而言之,在逻辑建模阶段,我们主要考虑抽象实体的一些细节属性。通过逻辑建模阶段,我们可以将整个概念模型完全连接成一个有机实体,充分表达业务之间的关联性。

    现阶段笔者建议大家参考3NF建模方法来表达实体的属性以及实体之间的联系。例如:现阶段我们可以使用ERWIN等建模工具来创建符合3NF的关系数据模型。

    4.物理建模阶段

    物理建模阶段是整个数据建模的最后一个过程。这个过程实际上是实现前面的逻辑数据模型的过程。考虑到不同的数据仓库平台,数据模型的物理建模过程可能会略有不同。现阶段我们的主要工作是:

    经过物理建模阶段,整个数据仓库模型就完成了。我们可以根据自己的设计,针对当前的行业,创建一个符合我们需求的数据模型。

    在这里,作者希望通过一个数据建模的例子,让读者对数据仓库建模有一个感性的认识。希望读者在使用这些数据仓库建模方法创建自己的数据模型时,能够根据自己的实际业务需求和对抽象能力的掌握,创建出适合自己的数据模型。

    结尾

    作者:松子(李博渊),自由撰稿人,数据产品&BI高级总监。我从2000年开始涉足数据领域,是一名互联网数据考古学家,经历过互联网的古生代、中生代和当今时代。
页: [1]
查看完整版本: 探索数仓模型设计:从IBM BDWM到NCR FS-LDM的行业应用与启发