OBIEE – 模式
模式是整个数据库的逻辑描述。它包括所有类型的记录的名称和描述,包括所有相关的数据项和聚合。与数据库非常相似,DW 也需要维护模式。数据库使用关系模型,而 DW 使用星型、雪花型和事实星座模式(星系模式)。
星型模式
在星型模式中,有多个非规范化形式的维度表,它们仅连接到一个事实表。这些表以逻辑方式连接以满足分析目的的某些业务需求。这些模式是多维结构,用于使用 BI 报告工具创建报告。
星型模式中的维度包含一组属性,事实表包含所有维度和测量值的外键。
在上述星型模式中,中心有一个事实表"销售事实",并使用主键连接到 4 个维度表。维度表未进一步规范化,这种表的连接在 DW 中称为星型模式。
事实表还包含度量值 − dollar_sold 和 unit_sold。
雪花模式
在雪花模式中,有多个标准化形式的维度表,它们仅连接到一个事实表。这些表以逻辑方式连接起来,以满足分析目的的某些业务需求。
星型模式和雪花模式之间的唯一区别是维度表进一步规范化。规范化将数据拆分为其他表。由于雪花模式中的规范化,数据冗余减少了,而不会丢失任何信息,因此变得易于维护并节省存储空间。
在上面的雪花模式示例中,产品和客户表进一步规范化以节省存储空间。有时,当您执行需要直接在规范化表中处理行的查询时,它还会提供性能优化,因此它不会处理主维度表中的行,而是直接进入模式中的规范化表。
粒度
表中的粒度表示表中存储的信息级别。数据粒度高意味着数据处于或接近事务级别,具有更多细节。粒度低意味着数据具有低级别信息。
事实表通常设计为低粒度。这意味着我们需要找到事实表中可以存储的最低级别的信息。在日期维度中,粒度级别可以是年、月、季度、期间、周和日。
定义粒度的过程包括两个步骤 −
- 确定要包含的维度。
- 确定放置每个信息维度层次结构的位置。
缓慢变化的维度
缓慢变化的维度是指随时间变化的属性值。它是 DW 中的常见概念之一。
示例
Andy 是 XYZ Inc. 的员工。他于 2015 年 7 月首次在纽约市工作。员工查找表中的原始条目有以下记录 −
Employee ID | 10001 |
---|---|
名称 | Andy |
Location | New York |
后来,他搬到了加利福尼亚州洛杉矶。XYZ Inc. 现在应该如何修改其员工表以反映这一变化?
这被称为"缓慢变化维度"概念。
有三种方法可以解决此类问题 −
解决方案 1
新记录替换原始记录。旧记录不存在任何痕迹。
缓慢变化维度,新信息只是覆盖原始信息。换句话说,不保留任何历史记录。
Employee ID | 10001 |
---|---|
名称 | Andy |
Location | LA, California |
优点 − 这是处理缓慢变化维度问题的最简单方法,因为无需跟踪旧信息。
缺点 − 所有历史信息均会丢失。
用途 − 当 DW 不需要跟踪历史信息时,应使用解决方案 1。
解决方案 2
在员工维度表中输入一条新记录。因此,员工 Andy 被视为两个人。
向表中添加一条新记录以表示新信息,并且原始记录和新记录都将存在。新记录获得自己的主键,如下所示 −
Employee ID | 10001 | 10002 |
---|---|---|
名称 | Andy | Andy |
Location | New York | LA, California |
优点 − 这种方法允许我们存储所有的历史信息。
缺点 − 表的大小增长更快。当表的行数非常高时,表的空间和性能可能是一个问题。
用途 − 当 DW 需要保留历史数据时,应使用解决方案 2。
解决方案 3
修改员工维度中的原始记录以反映更改。
将有两列指示特定属性,一列指示原始值,另一列指示新值。还将有一列指示当前值何时变为活动状态。
Employee ID | Name | Original Location | New Location | Date Moved |
---|---|---|---|---|
10001 | Andy | New York | LA, California | July 2015 |
优点 − 由于更新了新信息,因此不会增加表的大小。这使我们能够保留历史信息。
缺点 − 当属性值更改多次时,此方法不会保留所有历史记录。
使用 − 仅当 DW 需要保留历史更改信息时才应使用解决方案 3。
规范化
规范化是将表分解为冗余较少的小表而不丢失任何信息的过程。因此,数据库规范化是组织数据库的属性和表以最小化数据冗余(重复数据)的过程。
规范化的目的
它用于消除某些类型的数据(冗余/重复)以提高一致性。
它通过以简化形式保留与对象类型相对应的表,提供最大的灵活性以满足未来的信息需求。
它产生更清晰、更易读的数据模型。
优点
- 数据完整性。
- 增强数据一致性。
- 减少数据冗余和所需空间。
- 降低更新成本。
- 最大程度地灵活响应临时查询。
- 减少每个块的总行数。
缺点
数据库查询性能较慢,因为必须执行连接才能从多个规范化表中检索相关数据。
您必须了解数据模型才能在多个表之间执行正确的连接。
示例
在上面的例子中,绿色块内的表代表红色块中的表格的规范化。绿色块中的表格冗余度较低,行数也较少,且不会丢失任何信息。