数据仓库基础笔记思维导图已经整理完毕,完整连接为:
数据仓库基础知识笔记思维导图
聚集
在对性能不断探索的过程中,聚集是最强大最、有效的 数据处理工具。通过仔细规划和集成,聚集将队数据仓库性能产生巨大影响。无需针对特定的软件和硬件进行大量的投资,使用在数据仓库中已经存在的工具即可。与导出模式类似,聚集是一种补充性的数据结构,用来加快工作进度。聚集主要是通过汇总数据来获得改进性能的效果。
但是,聚集发挥作用,需要为每个查询选择正确的聚集,还需要为聚集填充数据并确保能够与基本数据模式保持同步。
理想的聚集对数仓用户是不可见的,每当需要时才默默地提供支持。理想的聚集也是免维护的,可以自动地建立和维护,不需要ETL开发人员介入。
聚集的基础知识
由于多维数据集首先是一种高性能的数据结构,因此构建汇总多维数据集的聚集几乎没有意义,然而如果原始多维数据集被调整为获得高容量而不是高性能,这样做是有用的。
汇总基本数据
- 在基本模式中存储粒度数据
- 在聚集中存储预先汇总的数据
- 描述聚集模式最方便的方法是描述事实表的粒度,与之相反的是描述什么被汇总
- 聚集模式的事实和维度要与基本模式中的事实和维度表示一直,这样才能确保获得一致的结果
- 为了性能上获得好处,聚集模式并不需要被优化的查询的粒度完全一致。
- 单个聚集并不能为所有查询带来性能方面的好处,可以采用多个聚集以不同的方法对同一个基本模式进行汇总。每个聚集预先跨不同维度计算数据,而不是采用连续级别的汇总,这样可以最大化聚集表能支持查询的数量
- 总会有一些查询不能通过聚集获得优化,任何需要访问粒度的查询,都必须被定向到原始星型模式
使用聚集
聚集星型模式中事实和维度属性与基本星型模型中相关的事实和维度属性一致,对利用聚集的查询的重写工作包含替换表名和关键字列。
对于某个给定的查询,在选择星型模式时,要获得最理想的性能,就需要考虑采用在事实表中具有行数最少并且能够回答查询的聚集星型模式。
仅仅允许有经验的开发人员拥有访问聚集的权利。终端用户和没有经验的开发人员仅允许访问基本星型模式。
加载聚集
围绕性能的原则开展设计工作,从原始星型模式构建聚集模式是有意义的,如果发生类型1变化,将导致增量式维度聚集更加困难。
通过采用一致性的概念指导聚集设计,能够保证汇总获得一致的结果,并使重写查询的过程变得尽可能简单。有助于保持ETL过程的简单。
将聚集表的来源定义在基本星型模式上可以确保结构和内容的一致性。
ETL过程中采用的表加载示例
- 加载基本维度
- 加载一致性上钻
- 加载基本事实表
- 加载聚集事实表
类型1变化
当基本数据和聚集被顺序加载时,若发生类型1变化,则需要重新加载聚集,而不是对其进行增量更新。
- 基本模式被更新后,删除并重新建立聚集。这种方法通常要做的处理工作少,一些工具以此方式自定建立聚集表或者多维数据集
- 在聚集时不使用类型1属性,类型2变化不会引起类似的问题,因为不会改变先前记录事实的环境。
作为聚集的多维数据集
当采用多维数据集存储维度设计时,为获得高性能,其数据集已经警醒过优化,因此没有必要汇总多维数据集。
多数体系结构都采用混合使用星型模式和多维数据集的方式。星型模式易于拓展,而多维数据集易于获得高性能。最佳的方法是利用星型模式存储粒度数据,细节数据,而多维数据集包含高性能的获取结果。这一安排十许多数据仓库实现获得成功的基础,由于都具有维度特性,多维数据集和星型模式存在天然的亲和性。多数维度产品都被建立成为支持从基本星型模式构建和设计多维数据集的方式。
使聚集不可见
聚集模式与数据库索引类似,与索引一样,为使查询更加快捷,聚集模式需要占用一些额外的空间。在利用聚集时需要重写查询,需要加载和维护聚集,同时保持聚集于原始模式的同步。
聚集导航
聚集导航能力消除了再编写查询时,需要开发人员选择基本星型模式或是一个或多个聚集的需要。工具以不同的方式、以结构的不同部分提供此种能力。聚集导航还能够提供其他额外的好处。
用户很难选择使用哪个星型模式组合,所以一般不对终端用户开放聚集,但是,也因此用户构建报表时不能获得聚集所带来的的性能方面的好处。
聚集导航是通用的来描述选择基本星型模式还是一个或多个聚集的术语,完成这种服务的软件产品或功能通常被称为聚集导航。
其他潜在的好处
- 随意改变聚集,如果没有聚集导航器,在查询中就需要清楚地写明如何利用聚集。在数据库中增加新的聚集时,若要利用它,则需要重写已经存在的查询与报表。并且使随时添加和删除聚集成为可能,当从数据库增加或者删除聚集时,不需要重新考虑存在的报表,聚集导航器可以意识到发生的变化。
- 离线或在线放置聚集,它可以提供按需使聚集离线的能力,在重建或刷新聚集时,聚集离线时,聚集不可用使性能降低,但是不会停止工作
- 异构数据库,聚集导航器不只是简单重写SQL,还需要将其定向到不同的物理数据库上,这些数据库可能来自不同的提供商,或者需要将sql转换成另外一种语言,极大地扩展了解决方案的灵活性。
- 异构前端,理想的聚集导航工具将会重写所有查询,无论查询是由商业智能工具,还是报表工具或命令行SQL实用程序提供的。
建立聚集和维护聚集
不可见聚集的另一部分是处理聚集的自动构建和维护工作。
建立聚集星型模式或聚集多维数据集工具通常会提供用户界面,开发人员可以利用该节点定义所需聚集的特征。聚集或多维数据集的建立工具通常是按照对星型模式和维度数据来建立的,这些产品能理解诸如事实、维度、代理键、自然键、缓慢变化等概念。
允许数据库管理系统维护聚集结构有时需要放弃对聚集维护和更新的完全控制,为了精确控制,如果不愿使用这种自动化方法,通常将建立和维护聚集工作放在ETL过程中。
层次和聚集
属性层次表示了一种存在于维度表数据中的主从关系,与属性间的父子关系不需要钻取数据一样,他们也不需要定义汇总层次。然而多数公户建立的聚集表火多维数据集都能够支持层次,在此情况下,围绕这些关系定义并文档化聚集可能会具有价值。
可选的汇总设计方案
遵循基本模式的维度聚集只是组织汇总存储的一种方式,并且单一表设计可能会带来麻烦。
对基本星型模式进行转换和汇总是一种导出模式而不是聚集,他也能够提供有用的性能好处,利用导出模式的查询与利用基本模式的查询在结构上存在区别。
单一事实表设计的目的是通过将汇总数据和细节数据存储在一起,而不是分别放在不同表中来简化聚集的存储。不要在同一表中存储不同层次的聚集,如果这样做,将会导致双重静思园或者更糟糕的事。需要避免双重计算。