OBIEE – 架构


Schema是整个数据库的逻辑描述。它包括所有类型记录的名称和描述,包括所有关联的数据项和聚合。与数据库非常相似,DW 也需要维护模式。数据库使用关系模型,而DW使用星型、Snowflake型和事实星座模式(银河模式)。

星型模式

在星型模式中,存在多个非规范化形式的维度表,这些维度表仅连接到一个事实表。这些表以逻辑方式连接以满足某些业务分析需求。这些架构是多维结构,用于使用 BI 报告工具创建报告。

星型模式中的维度包含一组属性,事实表包含所有维度和测量值的外键。

星型模式

在上面的星型模式中,中心有一个事实表“Sales Fact”,并使用主键连接到 4 个维度表。维度表没有进一步规范化,这种表连接在 DW 中称为星型模式。

事实表还包含度量值 -dollar_sold 和units_sold。

Snowflake模式

在Snowflake模式中,有多个标准化形式的维度表,它们仅连接到一个事实表。这些表以逻辑方式连接以满足某些业务分析需求。

星型模式和Snowflake模式之间的唯一区别是维度表进一步规范化。规范化将数据拆分到其他表中。由于Snowflake模式的规范化,减少了数据冗余而不会丢失任何信息,因此变得易于维护并节省存储空间。

Snowflake模式

在上面的Snowflake模式示例中,产品和客户表被进一步规范化以节省存储空间。有时,当您执行需要直接处理规范化表中的行的查询时,它还会提供性能优化,因此它不会处理主维度表中的行,而是直接进入架构中的规范化表。

粒度

表中的粒度表示表中存储的信息的级别。数据的高粒度意味着数据处于或接近事务级别,具有更多的细节。低粒度意味着数据的信息量低。

事实表通常是在低粒度级别设计的。这意味着我们需要找到事实表中可以存储的最低级别的信息。在日期维度中,粒度级别可以是年、月、季度、期间、周和日。

定义粒度的过程包括两个步骤 -

  • 确定要包含的尺寸。
  • 确定各维度信息层次结构的放置位置。

缓慢变化的维度

缓慢变化的维度是指属性值随着时间的推移而变化。是DW中常用的概念之一。

例子

Andy 是 XYZ Inc. 的员工。他于 2015 年 7 月首次来到纽约市。员工查找表中的原始条目有以下记录 -

员工ID 10001
姓名 安迪
地点 纽约

后来,他搬到了加利福尼亚州洛杉矶。XYZ Inc. 现在应该如何修改其员工表以反映此更改?

这就是所谓的“缓慢变化的维度”概念。

有三种方法可以解决此类问题 -

解决方案1

新记录取代原始记录。没有任何旧记录的痕迹。

缓慢变化的维度,新的信息只是覆盖了原来的信息。换句话说,没有保留任何历史记录。

员工ID 10001
姓名 安迪
地点 加利福尼亚州洛杉矶
  • 好处- 这是处理缓慢变化维度问题的最简单方法,因为不需要跟踪旧信息。

  • 缺点- 所有历史信息都会丢失。

  • 使用- 当 DW 不需要跟踪历史信息时,应使用解决方案 1。

解决方案2

一条新记录将输入到“员工”维度表中。因此,员工安迪被视为两个人。

一条新记录将添加到表中以表示新信息,并且原始记录和新记录都会出现。新记录有自己的主键,如下所示 -

员工ID 10001 10002
姓名 安迪 安迪
地点 纽约 加利福尼亚州洛杉矶
  • 好处- 这种方法允许我们存储所有历史信息。

  • 缺点- 表的大小增长得更快。当表的行数非常多时,表的空间和性能可能会成为一个问题。

  • 使用- 当 DW 需要保留历史数据时,应使用解决方案 2。

解决方案3

修改“员工”维度中的原始记录以反映更改。

将有两列指示特定属性,一列指示原始值,另一列指示新值。还有一列指示当前值何时变为活动状态。

员工ID 姓名 原地点 新地点 搬家日期
10001 安迪 纽约 加利福尼亚州洛杉矶 2015年7月
  • 优点- 这不会增加表的大小,因为新信息已更新。这使我们能够保留历史信息。

  • 缺点- 当属性值多次更改时,此方法不会保留所有历史记录。

  • 使用- 仅当 DW 需要保留历史更改信息时才应使用解决方案 3。

正常化

规范化是将表分解为冗余较少的较小表而不丢失任何信息的过程。因此,数据库规范化是组织数据库的属性和表以最小化数据冗余(重复数据)的过程。

标准化的目的

  • 它用于消除某些类型的数据(冗余/复制)以提高一致性。

  • 它通过以简化的形式保存与对象类型相对应的表,提供了最大的灵活性,以满足未来的信息需求。

  • 它产生更清晰、可读的数据模型。

优点

  • 数据的完整性。
  • 增强数据一致性。
  • 减少数据冗余和所需空间。
  • 降低更新成本。
  • 响应临时查询的最大灵活性。
  • 减少每个块的总行数。

缺点

数据库查询性能缓慢,因为必须执行联接才能从多个标准化表中检索相关数据。

您必须了解数据模型才能在多个表之间执行正确的联接。

例子

标准化的目的

在上面的示例中,绿色块内的表表示红色块内的表的标准化表。绿色块中的表冗余较少,行数也较少,而不会丢失任何信息。