前文讲了数据架构、数据建模、主题域、概念模型和逻辑模型,到底数据仓库(含数据中台和大数据平台)中应该如何建模呢?
先引申开来回到《DAMA数据管理知识体系指南中文版》中,关于数据模型在该书数据开发一章也有所涉及,数据开发是指分析、设计、实施、部署及维护数据解决方案,以使企业的数据资源价值最大化,数据开发是系统开发生命周期项目活动的子集,其专注于数据需求的定义、数据解决方案组件的设计和实施。数据开发里提到的数据建模方式主要包括信息工程、IDEF1X、ORM、UML。
数据建模是一种分析和设计方法,用于定义和分析数据需求,设计满足需求的数据结构,数据模型是反映数据需求和设计的数据说明书和相关模型图的集合,一般情况下,概念数据建模和逻辑数据建模是需求分析活动,物理数据建模是设计工作。
概念数据模型是业务重点相关的主题域内可视的、高阶的视角,不仅包括给定的领域和职能中基础和关键的业务实体,同时也给出实体和实体之间的关系的描述;并且应该包含一个词汇表用于定义其中的每一个对象,定义包括有业务术语、关系术语、实体同义词和安全分类。客户主题域可能包括以下实体:账户所有者、子账户、首选联系方式和联系信息。
逻辑数据模型是数据需求和控制数据质量的业务规则的详细描述,通常用于支持特定用法的上下文环境,不依赖于任何技术以及具体实施中的技术限制。逻辑数据模型从概念数据模型拓展开始,将数据属性添加到每个实体,逻辑数据模型通过范式化和抽象化转换概念数据模型结构。逻辑数据模型采用范式化设计,将业务的复杂性转化为稳定的数据结构。即传统的第一范式、第二范式、第三范式。
物理数据模型是根据技术约束、应用方法、性能需求和建模标准等优化详细的数据需求和业务规则的实施工作。
可以看出数据架构和数据开发是满足通用领域的,关于主题域、概念数据模型、逻辑数据模型、物理数据模型不仅适用于联机在线业务系统,同样也适用于数据仓库系统。
暂时再回到DAMA第九章数据仓库和商务智能管理,数据仓库由两个部分构成:首先是一个整合的决策支持数据库,其次是用于收集、清洗、转换、存储来自于各种操作型数据源和外部数据源数据的相关软件程序。两者结合以支持历史的额、分析的和商务智能的需求。一个数据仓库可能包括若干数据集市。企业数据仓库是服务于整个组织商务智能需要的集中式数据仓库。企业数据仓库遵循企业数据模型,使得整个企业范围内的决策支持活动可以保持一致。--来自《DAMA数据管理知识体系指南中文版》的定义。
这个定义和我们传统理解的数据仓库的概念不太一致,大概是DAMA要保持术语上的中立,传统数据仓库的理解一般是来自Bill Inmon。
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。--来自Bill Inmon的定义。
1、数据仓库是面向主题的;操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。
2、数据仓库是集成的,数据仓库的数据有来自于分散的操作型数据,将所需数据从原来的数据中抽取出来,进行加工与集成,统一与综合之后才能进入数据仓库;数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到当前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
3、数据仓库是不可更新的,数据仓库主要是为决策分析提供数据,所涉及的操作主要是数据的查询;
4、数据仓库是随时间而变化的,传统的关系数据库系统比较适合处理格式化的数据,能够较好的满足商业商务处理的需求。稳定的数据以只读格式保存,且不随时间改变。
关于数据仓库重要的是两个方面一个是主题,一个是集成,这里的主题和DAMA中是一脉相承的,但Inmon提到的操作型数据库的数据组织面向事务处理任务也不尽然全对,操作型数据库也是服务于主题的,但组织方式是面向事务的。主题就是在较高层次上对分析对象数据的一个完整并且一致的描述,能刻画各个分析对象所涉及的企业各项数据,以及数据之间的联系。集成是实现面向主题的一个关键途径,而集成的手段主要来自维度建模思想,所以有必要先理解一下维度建模。
维度建模的思想来自于Kimball,维度建模是数据仓库建设中的一种数据建模方法,将数据结构化的逻辑设计方法,它将客观世界划分为度量和上下文。维度建模将信息组织到结构中,这些结构通常对应于分析者希望对数据仓库数据使用的查询方法。其最简单的描述就是,按照事实表,维度表来构建数据仓库,数据集市。维度建模法的一个重要优点是,维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。不需要经过特别的抽象处理,即可以完成维度建模。
维度建模有两个常用的建模方法-星型模型和雪花模型,其中最常用的还是星型模型。
星型模式之所以广泛被使用,在于针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。特别是针对 3NF 的建模方法,星型模式在性能上占据明显的优势。
星型模式是多维的数据关系,它由事实表(Fact Table)和维表(Dimension Table)组成。每个维表中都会有一个维作为主键,所有这些维的主键结合成事实表的主键。事实表的非主键属性称为事实,它们一般都是数值或其他可以进行计算的数据。
事实表是数据仓库架构中的中央表,它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务(如银行事务或产品销售)内特定事件的数据。每个数据仓库都包含一个或者多个事实数据表。事实数据表可能包含业务销售数据,如销售商品所产生的数据。
维度表包含创建维度所基于的数据,其条目描述事实数据表中的数据。
维度在数据仓库中主要对事实指标进行过滤和重新组织提供指导。可以将用户对事实的查询结果按照维度指标进行筛选,只允许与维度指标相关的数据返回给用户。维度一般具有如下特性:可以形成一个维度体系,具备访问和过滤事实的能力,能够提供相关的非标准实体,包括一个完整的维度体系编码、关键词以及相关的表示,可以映射到用户所需要信息的列。在物理数据仓库中是较小的表,可以对前台用户的应用程序进行数据填充,或引用红花的数据仓库分析。维度主要用来说明数据,维度是指可指定不同值的对象的描述性属性或特征。例如,地理位置的维度可以包括“纬度”、“经度”或“城市名称”。“城市名称”维度的值可以为“旧金山”、“柏林”或“新加坡”。
指标:衡量数据,指标是指可以按总数或比值衡量的具体维度元素。例如,维度“城市”可以关联指标“人口”,其值为具体城市的居民总数。
维度和指标的关系:虽然维度和指标可以独立使用,但常见的还是相互结合使用。维度和指标的值以及这些值之间的关系,使您的数据具有了意义。为了挖掘尽可能多的深层次信息,维度通常与一个或多个指标关联在一起。
再举个实际的例子。银行对存款记账,A表中存放实际数据,包括账号、所属机构号、存款金额等,B表存放机构号和机构名称的对应关系。则A是事实表,B是维表。A事实表中的存款金额是指标,账号、机构号则是维度。
从传统的在线交易系统转换为基于主题的数据仓库系统,就涉及到从传统的第三范式设计到星型模型构建的过程,以及数据的抽取、转换、加载的过程,这个过程就是数据仓库的分层设计架构。这个放到后文再讲。
本文分享自 python与大数据分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!