良好的">数据仓库设计是最大程度地提高和加速数据仓库实现的投资回报的关键所在。良好的数据仓库设计能带来在可伸缩性、平衡性、灵活性方面都足以满足当前和未来需求的数据仓库。按照本文中提供的最佳实践建议,您可以在设置数据仓库时保证高效的查询性能、简化的维护和健壮的恢复选项,从而获得长期成功。 数据仓库设计分为两个阶段:设计逻辑数据模型和设计物理数据模型。
数据仓库设计的第一个阶段是创建逻辑数据模型,定义各种逻辑实体以及各实体之间的关系。 数据仓库设计的第二个阶段是创建物理数据模型。良好的物理数据模型具有以下属性:
有助于加速各种数据库活动性能的模型。
该模型将在集群化仓库环境中的多个数据库分区之间平衡数据。
该模型支持快速数据恢复。
数据库设计应利用了数据库分区、表分区、多维集群和物化查询表等 DB2 功能。
本文中的建议遵循 IBM Smart Analytics System 产品的某些指南,旨在帮助您开发在可伸缩性、平衡性、灵活性方面都足以满足当前和未来需求的物理数据仓库设计。IBM Smart Analytics System 产品整合了为数据仓库数据库实现和配置硬件、固件及软件的最佳实践。此外还整合了构建文档、可伸缩的数据仓库环境的指导原则。
为了规划一个出色的数据仓库设计,除了需要在数据于某个时间段内进入和退出数据库仓库的时候满足整个生命周期内的目标之外,还要求满足查询性能目标。
在必须制定的许多设计决策中,了解数据仓库数据库的使用和维护方法极为重要。在开始设计数据仓库之前,请先回答以下几个问题:
预期查询性能是怎样的?表示性查询应该是怎样的? 理解查询性能至关重要,因为这对数据仓库设计的许多方面都会产生影响,例如数据库对象及其放置。
数据可用性预期如何? 数据可用性影响着维护操作的安排。这种安排决定了要选择哪些 DB2 功能和分区表选项。
备份等维护操作的安排是怎样的? 这种安排影响着您的数据仓库设计。针对这些操作的战略也影响着数据仓库设计。
如何将数据载入数据仓库?如何从数据库仓库中移除数据? 理解如何在您的数据仓库中执行这些操作可以帮助您确定是否需要临时层。您移除或存档数据的方式也影响着表分区和 MDC 设计。
系统架构和数据仓库设计是否支持预期的数据量类型? 要加载的数据量影响着聚合层的索引、表分区和维护。
本文中的建议和样例提供了这些问题的答案。这些信息可以帮助您规划数据仓库设计。
为各层设计数据库模型
考虑为以下各层采用独立的数据库设计模型: 临时层 临时层是在将数据转入数据仓库之前加载、转换和清理数据的层。在为临时层设计物理数据模型时,应考虑以下指导原则:
创建临时表,跨多个数据库分区存储大量事实数据和大型维度表。
避免在临时表中使用索引,尽可能减少加载过程中的 I/O 操作。然而,如果要在加载数据之后对数据执行操作,则需要根据所用的提取、转换和加载 (ETL) 工具在临时表中定义索引。
将临时表放置在专用的表空间之中。在备份等维护操作中忽略这些表空间,以减少待处理的数据量。
将临时表存放在专用架构中也很有帮助。专用架构能帮助您减少维护操作的数据量。
避免定义与临时层以外的表之间的关系。与临时层中的瞬态数据有依赖关系的数据以后有可能导致生产环境中的恢复操作出现问题。
数据仓库层
数据仓库表是数据库设计的主要组件。它们表示数据仓库内最细粒度的数据级别。应用程序和查询工作负载可以直接访问这些表,也可以通过使用视图、别名或同时使用二者来访问这些表。数据仓库表也是聚合层的数据源。数据仓库层也称为记录系统 (SOR) 层,它是用来存储主数据的地方,能保证跨整个组织的数据一致性。
数据集市层
数据集市是针对组织特定部分(例如部门或业务线)的数据仓库子集。数据集市可以量身定制为提供个别客户、产品或运营行为的洞察。它能提供客户体验和报告功能的实时视图。 您可以操作和提取数据仓库层内的数据,将它们存放在单独的表中,从而创建数据集市。此外,您还可以使用基于数据仓库层中的表格的视图。
聚合层
聚合或汇总数据有助于提高查询性能。引用聚合数据的查询需要处理的行数更少,性能更高。需要刷新这些聚合表或汇总表来反映载入数据仓库的新数据。