当前位置: 首页 > 科技观察

程序员笔记-帮助您开始数据建模的3个问题

时间:2023-03-21 12:30:46 科技观察

1.什么是建模数据几乎总是用于两个目的:操作记录保存和分析决策制定。简单来说,操作系统存储数据,分形系统消费数据。前者一般只反映数据的最新状态,按照单条记录的事务性进行处理;其优化的核心是更快地处理交易。后者往往反映一段时间内数据的状态变化,大批量处理数据;其核心是对数据进行高性能、多维度的处理。通常我们将操作系统简称为OLTP(On-LineTransactionProcessing)——在线事务处理,将分析系统简称为OLAP(On-LineAnalyticalProcessing)——在线分析处理。针对这两种不同的数据用途,如何组织数据以更好地满足数据使用需求。数据建模的问题就来了。即设计一种数据组织方式(模型)来满足不同的场景。在OLTP场景中,普遍使用实体关系模型(ER)进行存储,以解决事务处理中的数据冗余和一致性问题。在OLAP场景中,有多种建模方式:ER模型、星型模型、多维模型。下面分别说明:1.ER模型OLAP中的ER模型与OLTP中的ER模型不同。本质区别是从企业的角度进行面向主题的抽象,而不是针对具体业务流程的实体-对象关系的抽象。2.星型模型星型模型是维度模型在关系数据库上的一种实现。该模型表示每个业务流程包含一个事实表,存储事件的数值度量,以及围绕事实表的多个维度表,维度表包含事件发生时实际存在的文本环境。这种星形结构通常被称为“星形连接”。着重于用户如何更快速地完成需求分析,同时对大规模、复杂的查询有更好的响应性能。基于星型模式,可以进一步推导出复杂场景下的雪花模型。3.多维模型多维模型是维度模型的另一种实现。当数据加载到OLAP多维数据库中时,这些数据的存储使用维度数据所涉及的格式和技术进行索引。性能汇总表或预先计算的汇总表通常由多维数据库引擎构建和管理。由于预计算、索引策略和其他优化方法,多维数据库支持高性能查询。三种方法中,星型用的比较多,下面也会对这种方法进行说明。2.维度建模1.基本概念在建模过程中,涉及到很多概念。让我们通过一个场景来说明它们。例如:在常见的电商下单流程中,每个用户提交一个订单(只有一件商品),对应一条订单记录。【业务流程】:下订单【粒度】:每笔订单(拆分成单个项目)【维度】:地区、年龄、渠道等(用于分析)【事实/度量】:订单金额等(可用于分析数据)2.建模步骤(1)收集业务需求和数据实现在开始维度建模工作之前,需要了解业务需求和实际情况作为底层源数据。通过与业务方沟通、查看现有报告等方式发现需求,了解他们基于关键绩效指标的目标、竞争性业务问题、决策过程和支持分析需求。同时,可以与数据库系统专家交流数据的实际情况,了解访问数据的可行性。(2)选择业务流程业务流程是组织完成的业务活动。业务流程时间建立或获取性能度量并将它们转换为事实表中的事实。大多数事实表都关注业务流程的结果。流程的选择非常重要,因为流程定义了具体的设计目标和grain、dimension、fact的定义。(3)声明粒度声明粒度是维度设计中的一个重要步骤。粒度用于确定事实表中的一行代表什么。在选择维度或事实之前必须声明粒度,因为每个候选维度或事实都必须与定义的粒度一致。从给定业务流程中获取数据时,原子粒度是最高级别的粒度。强烈建议从关注原子级粒度数据开始设计,因为原子级粒度数据可以承受意外的用户查询。(4)确认维度(描述性环境)该维度提供了某个业务流程事件所涉及的“谁、什么、哪里、何时、为什么、如何”等背景。维度表包含分析应用程序过滤和分类事实所需的描述性属性。把握好事实表的粒度,就可以区分出所有可能的维度。(5)事实确认(用于测量)事实,涉及来自业务过程事件的测量,基本上由数据值表示。事实表行与事实表粒度描述的度量事件之间存在一对一的关系,因此事实表对应于物理上可观察的事件。在一个事实表中,所有的事实只允许与声明的粒度一致。(6)部署方式——星型或多维模型选择一种方式来实现维度模型。可以选择星型模型,通过主外键关联的事实表和维表部署到关系型数据库上;您还可以选择多维模型并在多维数据库中实现它。3、建模规范以维度建模为理论基础,定义了一系列描述建模对象的术语。下图截取自《阿里巴巴大数据实践之路》。(1)数据域是指抽象的业务流程或业务分析维度的集合。划分数据域时,不仅可以覆盖当前所有的业务需求,还可以在新业务进入时,纳入现有数据域,扩展新的数据域,不受任何影响。(2)业务流程是指企业的业务活动,如订货、付款、退款等都是业务流程。请注意,业务流程是不可分割的行为事件。一般来说,业务流程是企业活动中的一个事件。(3)时间段用于明确数据统计的时间范围或时间点,如最近30天、自然周、当前日期等。(4)修饰类型是修饰符的抽象划分,属于某个业务领域。(5)修饰符是指对统计维度以外的指标对业务场景的有限抽象。修饰符属于修饰的一种。(6)Metrics/AtomicIndicators原子指标与metrics含义相同。它们是基于某种业务事件行为的指标,是业务定义中不可分割的指标。它们是具有明确业务含义的名词,例如付款金额。(7)维度维度是度量环境,用来反映业务的一类属性。这些属性的集合构成了一个维度,也可以称为实体对象。维度属于一个数据域,比如地理维度(包括国家、地区、省、市级别),时间维度(包括年、季度、月、周、日等级别)。(8)维度属性维度属性属于一个维度,比如地理维度中的国家名称、国家ID、省份名称等都是维度属性。(9)衍生指标衍生指标=一个原子指标+多个修饰符(可选)+时间段。可以理解为原子指标统计范围的划定。三、设计要点1、维表设计维是维建模的基础和灵魂。在维度建模中,度量被称为“事实”,环境被描述为“维度”。维度是分析事实所需的不同环境。维度中包含的表示维度的列称为维度属性。维度属性是查询约束、分组和报表标签生成的基本来源,是数据可用性的关键。维度通常用于查询约束、小计和排序。维度设计过程就是确定维度属性的过程。如何生成维度属性以及生成的维度属性的质量决定了维度使用的方便程度,成为数据仓库可用性的关键。正如Kimball所说,数据仓库的能力与维度属性的质量和深度成正比。在整个设计过程中,应遵循以下原则:维度属性应尽可能丰富,为数据使用打下基础。给出详细而有意义的文字描述。沉淀通用维度属性,为一致性维度的建立铺平道路。严格区分事实和维度,用场景来区分。2.事实表设计作为数据仓库维度建模的核心,事实表围绕业务流程进行设计,通过获取描述业务流程的指标来表达业务流程,包括引用的维度和与业务流程相关的指标。在设计过程中,可以选择不同类型的事实表,它们都有各自的适用场景。在整个设计过程中,应遵循以下原则:选择合适的事实表类型。事实尽可能完整,包含整个业务流程的所有事实。确保每一个事实度量都是一致的,重复计算会得到相同的结果。尝试记录一些“原子”事实,而不是处理后的结果。可以适当做一些“维度退化特性”,提高事实表的查询性能。为了提高聚合性能,可以适度做一些rollup聚合事实表。【本文为栏目组织易新工学院原创文章,微信公众号“易新工学院(id:CE_TECH)”点击此处查看作者更多好文