数据仓库架构
为了满足技术期望,数据仓库工程师可以使用各种架构来构建数据仓库。常见的数据仓库架构是基于分层方法的,这在信息系统中很常见。下面将描述其中的两个典型数据架构。
两层数仓架构
Kimball引入了一种常用的双层结构。在这个架构中(如图1.3所示),数据仓库系统本身只有两层。
图 1.3 两层数仓架构
来自源系统的原始数据被加载到集结区。目标是拥有应该加载到数据仓库中的所有数据的精确副本。集结区的主要目的是减少源系统上的操作数量和从源系统中提取数据的时间。集结区中的表是按照源系统中的表建模的。当转换很复杂并且不能即时执行时,或者当数据在不同的时间从多个源系统到达时,需要一个集结区。
一旦数据被加载到集结区,Kimball建议将数据加载到数据仓库中。该数据仓库是按照维度模型建模的,由数据集市(表示业务流程)组成。
1996年,Kimball首次提出这一建议。维度模型是一个事实上的标准,业务用户和分析工具(如OLAP前端或引擎)可以很容易地查询它。因为它是符合标准的数据集市的逻辑关联,所以必须在数据仓库层之前实现业务规则,以便符合和对齐数据集。我们将在第7章“维度建模”中讨论维度建模。数据访问应用程序使用维度模型向用户显示信息,并允许进行专门的分析。
两层数仓架构的优点是,与其他架构相比,从源数据构建维度存储很容易。但是,缺点是从相同的源数据构建第二个维度模型更为复杂,因为需要从集结区中再次加载数据,而且无法重用现有的ETL工作流。
三层数仓架构
为了克服两层数仓架构的局限性,另一个常见的数仓架构是基于三层的(图1.4)。
图 1.4 三层数仓架构
该架构由Inmon引入,并引入了原子数据仓库,通常是集结区和维度模型之间的规范化业务数据存储(ODS)。此架构中的集结区遵循两层数仓架构。然而,数据仓库持有以三范式规范建模的原始数据。它集成了企业的所有数据,但仍然基于来自源系统的物理表。通过这样做,它的行为类似于一个大型业务数据库。
在业务数据的规范化视图之上,有一个维度模型。业务用户可以使用面向主题的数据集市(类似于两层数仓架构)访问和分析数据。但是,从业务数据存储中可用的数据创建新的数据集市要容易得多,因为数据已经被清洗和集成了。因此,构建新的数据集市不需要进行数据清洗和集成。在实践中,2层的数据仓库通常有多个数据集市,通过向用户提供不同的主题域来满足不同用户组的需求。
然而,它更复杂,需要更多的数据处理来构建整个数据仓库,包括业务数据存储和依赖数据集市。另一个问题是,如果许多数据集市依赖于业务性数据存储,那么对数据模型的更改可能成为一种负担。在下篇文章中,我们将讨论一种替代的三层架构,以支持对数据仓库进行更快的更改。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。