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