1.数据仓库的产生
从 20 世纪 80 年代初起直到 90 年代初,联机事务处理一直是关系数据库应用的主流。然而,应用需求在不断地变化,当联机事务处理系统应用到一定阶段时,企业家们便发现单靠拥有联机事务处理系统已经不足以获得市场竞争的优势,他们需要对其自身业务的运作以及整个市场相关行业的态势进行分析,进而做出有利的决策。这种决策需要对大量的业务数据包括历史业务数据进行分析才能得到
。把这种基于业务数据的决策分析称为联机分析处理
。如果说传统联机事务处理强调的是更新数据库(向数据库中添加信息) ,那么联机分析处理就是从数据库中获取信息,利用信息。因此,著名的数据仓库专家 Ralph Kimball写道:“我们花了二十多年的时间将数据放入数据库 ,如今是该将它们拿出来的时候了”。事实上 ,将大量的业务数据应用于分析和统计原本是一种非常简单和自然的想法。但在实际的操作中,人们却发现要获得有用的信息并非如想象得那么容易。
(1) 所有联机事务处理强调的是密集的数据更新处理性能和系统的可靠性,并不太关心数据查询的方便与快捷。
(2) 业务数据往往被存放于分散的异构环境中,不易统一查询访问,而且还有大量的历史数据处于脱机状态 ,形同虚设。
(3) 业务数据的数据库模式针对事务处理系统而设计,数据的格式和描述方式并不适合非计算机专业人员进行业务上的分析和统计。
因此有人感叹: 联机事务处理系统刚上线时 ,查询不到数据是因为数据太少了,而几十年后查询不到有关数据是因为数据太多了。针对这一问题,人们设想专门为业务数据的统计分析建立一个数据中心,它的数据从联机事务处理系统中来,从异构的外部数据源来或从脱机的历史业务数据中来,这个数据中心也是一个联机系统,它专门为分析统计和决策支持应用服务,通过它可获取决策支持和联机分析应用所需要的一切数据。这个数据中心就叫做数据仓库。简单地说,数据仓库就是一个作为决策支持和联机分析应用系统数据源的结构化数据环境,数据仓库要研究和解决的就是从数据库中获取信息的问题。
2.数据仓库技术
数据仓库技术是为了有效地把操作型数据集成到统一的环境中以提供决策型数据访问的各种技术和模型的总称。
2.1 OLAP技术
- 联机事务处理与联机分析处理的比较
数据处理通常分成两大类: 联机事务处理Con-line transaction processing,OLTP)和联机分析处理(on-line analytical processing,OLAP) 。
OLTP 是传统的操作型数据库系统的主要应用,主要是一些基本的日常事务处理,如银行柜台存取款、股票交易和商场 POS 系统等。OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
- OLAP 技术的有关概念
(1) 多维数据集
。多维数据集是联机分析处理的主要对象,它是一个数据集合
,通常从数据仓库的子集构造,并组织汇总成一个由一组维度和度量值定义的多维结构。
(2) 维度
。维度是 OLAP 技术的核心,即人们观察客观世界的角度,通过把一个实体的一些重要属性定义为维(dimension) ,使用户能对不同维属性上的数据进行比较研究
。因此维是一种高层次的类型划分 ,一般都包含层次关系,甚至相当复杂的层次关系。例如,一个企业在考虑产品的销售情况时,通常从时间、销售地区和产品等不同角度来深入观察产品的销售情况。这里的时间 .地区和产品就是维度。而这些维的不同组合和所考查的度量值(如销售额)共同构成的多维数据集则是 OLAP 分析的基础。
(3) 度量值
。度量值也叫度量指标,是多维数据集中的一组数值
,这些值基于多维数据集的事实数据表中的一列,是最终用户浏览多维数据集时重点查看的数值数据,也是所分析的多维数据集的中心值
。如销售量 .成本值和费用支出等都可能成为度量值。
(4) 多维分析。多维分析是指对以维
形式组织起来的数据(多维数据集)采取切片(slice) 、切块(dice) 、钻取(Cdrill down 和 roll up 等)和旋转(pivot)等各种分析动作,以求剖析数据,使用户能从不同角度 ,不同侧面观察数据仓库中的数据,从而深入理解多维数据集中的信息。多维分析操作通常包括如下内容。
钻取
可以改变维的层次,变换分析的粒度,包括向上钻取(roll up)、向下钻取(drildown) 交叉钻取(drill across)和钻透(Cdrill through)等。向上钻取即减少维数 ,是在某一维上将低层次的细节数据概括到高层次的汇总数据; 而向下钻取则正好相反,它从汇总数据深入到细节数据进行观察,增加了维数。
切片和切块
是在一部分维上选定值后,度量值在剩余维上的分布。如果剩余维有两
个则是切片,如果有三个则是切块。
旋转
是变换维的方向,即在表格中重新安排维的放置,例如行列互换。
总结:
OLAP 技术是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互的存取,进而获得对数据深入了解的一种软件技术。其目标是满足在多维数据环境下的特定查询与报表需求,以及辅助决策支持的需求。OLAP 技术通常表现为多维数据分析工具的集合
。
- OLAP 的分类
OLAP 根据其存储数据的方式可分为ROLAP .MOLAP 和 HOLAP 三类。
常见的 OLAP 主要是基于多维数据库的 MOLAP 及基于关系数据库的ROLAP 两种
。MOLAP 是以多维数据库的方式组织和存储数据,ROLAP 则利用现有的关系数据库技术来模拟多维数据。
(1) ROLAP
表示基于关系数据库的 OLAP 实现
(relational OLAP) ,它以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP 将多维数据集的多维结构划分为两类表: 一类是事实表,用来存储度量数据和维关键字; 另一类是维表,即针对每个维使用一个或多个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了“星型模式
”。
对于层次复杂的维 ,为避免冗余数据占用过大的存储空间 ,可以使用多个表来描述这种维度,这实际上是对星型模式的扩展,由此产生的多维数据存储模式称为“雪花型模式”
。
(2) MOLAP
表示基于多维数据结构组织的 OLAP 实现
(multidimensional OLAP) ,它以多维数据组织方式(多维数据库)为核心,例如 MOLAP 使用多维数组来存储数据。多维数据在存储中形成类似“立方块(cube)结构 ,在 MOLAP 中对“立方块”可以不止三维,而是多维 Cube) 的“旋转切块和切片是产生多维数据报表的主要技术 。
(3) HOLAP
表示基于混合数据组织的 OLAP 实现
Chybrid OLAP) ,如低层是关系型的,高层是多维数组矩阵的。这种方式具有更好的灵活性。
3.数据仓库系统的体系结构
一个典型的数据仓库系统通常包含数据源、.数据存储与管理、OLAP 服务器以及前端工具与应用4个部分。
- 数据源
数据源是数据仓库系统的基础,即系统的数据来源 ,通常包括企业(或事业单位)的各种内部信息和外部信息。内部信息,例如存于操作型数据库中的各种业务数据和办公自动化系统中包含的各类文档数据; 外部信息,例如各类法律法规、市场信息、竞争对手的信息以及各类外部统计数据及其他有关文档等。
- 数据的存储与管理
数据的存储与管理是整个数据仓库系统的核心。在现有各业务系统的基础上,对数据进行抽取清理,并有效集成,按照主题进行重新组织 ,最终确定数据仓库的物理存储结构,同时组织存储数据仓库元数据(包括数据仓库的数据字典.记录系统定义、数据转换规则数据加载频率以及业务规则等信息) 。按照数据的覆盖范围和存储规模,数据仓库可以分为企业级数据仓库
和部门级数据仓库
。对数据仓库系统的管理也就是对其相应数据库系统的管理,通常包括数据的安全归档、备份.维护和恢复等工作。
【这里的部门级数据仓库就是数据集市】
- OLAP 服务器
OLAP 服务器对需要分析的数据按照多维数据模型进行重组,以支持用户随时从多角度 .多层次来分析数据 ,发现数据规律与趋势。OLAP 服务器通常有如下3 种实现方式。
(1) ROLAP 基本数据和聚合数据均存放在 RDBMS 之中。
(2) MOLAP 基本数据和聚合数据均存放于多维数据集中。
(3) HOLAP 是 ROLAP 与 MOLAP 的综合,基本数据存放于 RDBMS 之中,聚合数据存放于多维数据集中。
- 前端工具与应用
前端工具主要包括各种数据分析工具、报表工具,查询工具、数据挖掘工具以及各种基于数据仓库或数据集市开发的应用。其中,数据分析工具主要针对 OLAP 服务器; 报表工具、数据挖掘工具既可针对数据仓库,也可针对 OLAP 服务器。
数据仓库系统的体系结构根据应用需求的不同 ,可以分为以下 4 种类型。(1) 两层架构(generic two-level architecture) 。
(2) 独立型数据集市(independent data mart) 。
(3) 依赖型数据集市和操作型数据存储(Cdependent data mart and operational data Store) 。
(4) 逻辑型数据集市和实时数据仓库(logical data mart and real-time data warehouse) 。
3.1两层架构
通常的数据仓库是两层体系结构 ,如图所示。构造这种体系结构需要以下 4 个基本步骤。
(1) 数据是从各种内外部的源系统文件或数据库中抽取得到。在一个大的组织中,可能有几十个甚至几百个这样的文件和数据库系统。
(2) 不同源系统中的数据在加载到数据仓库之前需要被转换和集成。甚至可能需要发送一些事务信息到源系统中,以纠正在数据分段传输中发现的错误。
(3) 建立为决策支持服务的数据库,即数据仓库,它通常会同时包括详细的和概括的数据。
(4) 用户通过 SQL 查询语言或分析工具访问数据仓库,其结果又会反馈到数据仓库和
操作型数据库中。
数据仓库环境最重要的三个环节包括抽取(extract)、转换(Ctransform)及加载(load, 把数据从源数据系统中加载到数据仓库),即 ETL 过程。
抽取和加载通常是定期的,即每天、每星期或每个月。因此 ,数据仓库常常没有或者说不需要有当前数据。数据仓库不支持操作型事务处理,虽然它含有事务型数据(但更多的是事务的概括和变量状态的快照,如账户余额和库存级别等) 。对大多数数据仓库应用来说,用户不是寻找对个别事务的反应,而是寻求包括在整个数据仓库中的一个特定子集上的企业(或其他组织)状态的趋势和模式。例如,通常会有 5 个季度及以上的财务数据保存在数据仓库中,以便识别趋势和模式。太陈旧的数据,如果确定对决策分析已没有意义,也可被清除或存档
3.2 基于独立数据集市的数据仓库体系结构
一些企业或事业组织由于其特殊的业务需求或历史原因,刚开始时并没有建立数据仓库 ,而是创建了许多分离的数据集市。其实,每一个数据集市都是基于数据仓库技术的,而不是基于事务处理的数据库技术。数据集市是范围受限的小型数据仓库(mini warehouses) ,常适用于特定终端用户群制定决策应用。在这种情况下,每个独立数据集市的内容都来自于独立的 ETL 处理过程。下述其他情况的数据集市内容则可能来源于数据仓库。数据集市被设计用来优化定义明确的和可预测的使用性能,通常包括单个或一组针对某特殊应用的查询功能,如市场数据集市.财务数据集市和供应链数据集市等。相对于其他数据仓库体系结构 ,独立型数据集市策略的一个明显特性是: 当需要访问分离的数据集市中的数据时,对终端用户来说具有相对的复杂性(如图 1. 3 所示,由互相交又的连线来表示 ,连线连接所有数据集市到终端用户表示工具) 。这个复杂性不仅来自于从分离的数据集市数据库访问数据,而且可能来自于不一致的数据系统产生的数据集市。如果有一个元数据集合跨越所有的数据集市,且数据集市上的数据通过数据分段传输时保存一致(即数据分段传输中拥有”一致维”) ,那么,对用户来说复杂性就减小了。另一方面是其
ETL 处理的复杂性,因为需要为每一个独立的数据集市创建一个抽取、转换和加载过程。
3.3 基于依赖型数据集市和操作型数据存储的数据仓库体系结构
解决独立数据集市架构局限性的方法之一是使用基于依赖型数据集市(dependent data mart)和操作型数据存储Coperational data store,ODS) 的数据仓库体系结构。通过从企业级数据仓库(Centerprise data warehouse,EDW)中加载依赖型数据集市,在整个体系架构中只使用单一的 ETL 过程 ,确保了 ETL 的效率和数据集市数据的一致性。
企业级数据仓库是一个集中的、集成的数据仓库,它拥有一致的数据版本,并可以对数据作统一控制,对终端用户的决策支持也是可用的。依赖型数据集市的主要目标就是提供一个简单 ,高性能的数据环境,用户群可以访问数据集市,当需要其他数据时,也可以访问企业数据仓库。另外,跨依赖型数据集市的完余在控制之内,且完余的数据是一致的,因为每一个数据集市都是从一个共同的源数据以一种同步的方式加载而来的。
基于依赖型数据集市和操作型数据存储的数据仓库体系结构(如图 1.4 所示)常常被称为“中心和辐射(Chub and spoke)”架构,其中企业级数据仓库是中心,源数据系统和数据集市在输入和输出范围的两端。这种体系结构也被称为合作信息工厂(corporate information factory,CIF) 。在支持所有用户的数据需求中,它被认为是一个全面的企业级的数据视图 。
相对于一般的两层体系结构而言 ,依赖型数据集市的优势是它们可以处理各个用户群的需求,甚至是探索性数据仓库的需求。探索性数据仓库是一种专门的数据仓库版本,它使用先进的统计学 .数学模型和可视化工具来优化,通常用于数据控掘和商业智能等业务模型应用的探索。独立型数据集市的主要优点是可以采用分段方法来开发数据仓库。事实上,分段方法也可以在基于依赖型数据集市和操作型数据存储的体系结构(即 CIF 模式) 中实现。
ODS 为所有的业务数据提供了一个集成的数据源 ,同时也解决了独立数据集市架构不能下钻到更小细节的问题。ODS 实际上是一个集成的面向主题的.可更新的.当前值的(但是可"挥发"的) 企业级的.详细的数据库,也叫运营数据存储。
3.4 基于逻辑型数据集市和实时数据仓库的体系结构
逻辑型数据集市(logical data mart) 和实时数据仓库体系结构实际上只用于一些特定环境的数据仓库系统 ,或使用一些高性能的数据仓库技术时,例如 NCR Teradata 系统。这种体系结构具有如下特征。
(1) 辑数据集市并不是物理上分离的数据库,而是在同一个物理数据库里的、稍微有些不规范的关系数据仓库的不同关系视图。
(2) 数据被放到数据仓库而不是分离的分段传输区域中,利用数据仓库技术的高性能计算能力来执行清洗和转换步又。
(3) 新的数据集市可以非常快地创建,因为不需要创建或获得物理数据库或数据库技术,且不需要书写加载程序。
(4) 数据集市总是最新的,因为涉及到某个视图时,视图中的数据将被建立,如果用户有一系列的查询和分析来清理数据集市中相同的实例,视图可以被物化。
图1.5 中的实时数据仓库 (real time data warehouse )也叫动态数据仓库(active data warehouse) ,它意味着源数据系统.决策支持服务和数据仓库之间以一个接近实时的速度交换数据和业务规则
。事实上,有许多的分析业务需要快速响应系统当前的、全面的组织状况和描述。例如,一些分析型 CRM 系统(特别是 Call Center)的回答问题和日志记录问题,会需要客户最近的销售信息.欠账和付款事务信息、维护活动和订单的有关信息描述。一个重
要事件 ,如输入一个新的产品订单 ,可以立即对客户和客户所在组织的最新状况有一个全面了解
习题
-
数据仓库就是一个 面向主题的 、集成的、相对稳定的 、反映历史变化的数据集合。
-
元数据是描述数据仓库内数据的结构和建立方法的数据,它为访问数据仓库提供了一个信息目录,根据元数据用途的不同可将数据仓库的元数据分为 技术元数据和 业务元数据 两类 。
-
数据处理通常分成两大类: 联机事务处理和 联机分析处理
-
多维分析是指对以“维”形式组织起来的数据(多维数据集)采取 钻取 、切块、切片和旋转等各种分析动作 ,以求剖析数据,使用户能从不同角度.不同侧面观察数据仓库中的数据,从而深入理解多维数据集中的信息。
-
ROLAP 是基于 关系数据库 的 OLAP 实现,而 MOLAP 是基于多维数据结构组织的OLAP 实现。
-
数据仓库按照其开发过程,其关键环节包括数据抽取 、数据存储与管理 和数据表现等。
-
数据仓库系统的体系结构根据应用需求的不同 ,可以分为以下4 种类型;
(1) 两层架构(generic two-level architecture) 。
(2) 独立型数据集市(independent data mart) 。
(3) 依赖型数据集市和操作型数据存储(Cdependent data mart and operational data Store) 。
(4) 逻辑型数据集市和实时数据仓库(logical data mart and real-time data warehouse) 。 -
操作型数据存储实际上是一个集成的`面向主题的、可更新的 、当前值的 (但是可"“挥
发”的) 企业级的、详细的数据库,也叫运营数据存储。
9.“实时数据仓库意味着源数据系统、决策支持服务和数据仓库之间以一个接近实时的速度交换数据和业务规则 。
- 从应用的角度看,数据仓库的发展演变可以归纳为 5 个阶段:以报表为主、以分析为主、以预测模型为主、以营运导向为主 和以实时数据仓库和自动决策为主。
- 什么是数据仓库? 数据仓库的特点主要有哪些?
数据仓库(Data Warehouse, DW)是面向主题(Subject-Oriented)、集成(Integrated)、相对稳定(Non-Volatile)、反映历史变化(Time-Variant)
的 数据集合,用于支持管理决策。 - 简述数据仓库 4 种体系结构的异同点及其适用性。
- 简述你对数据仓库未来发展趋势的看法。
- 请列出 3 种数据仓库产品,并说明其优缺点。
Amazon Redshift(AWS 数据仓库)
简介:
Amazon Redshift 是 AWS 提供的 云数据仓库,基于 PostgreSQL,采用列存储架构,适用于大规模数据分析。
✅ 优点:
高性能:采用并行处理(MPP,Massively Parallel Processing),查询速度快。
弹性扩展:支持按需扩展计算和存储资源。
生态完善:与 AWS 生态系统(S3、Glue、Athena、QuickSight 等)无缝集成。
成本相对较低:相比传统本地数据仓库,按需计费,性价比高。
❌ 缺点:
数据加载有延迟:适用于批处理,不适用于高频实时查询。
SQL 兼容性问题:部分 SQL 语法不兼容标准 PostgreSQL,需要调整代码。
冷启动较慢:集群启动或扩展时可能有一定的等待时间。
Google BigQuery
简介:
BigQuery 是 Google Cloud 提供的 全托管无服务器数据仓库,基于 Dremel 查询引擎,擅长大规模数据分析。
✅ 优点:
无服务器(Serverless):无需管理基础设施,自动扩展。
查询速度极快:支持 分布式列存储 和 向量化执行,适合大规模分析。
支持 SQL 语法:兼容标准 SQL,易于迁移。
与 Google 生态集成:与 Google Analytics、Looker、TensorFlow 等无缝对接。
❌ 缺点:
按查询量收费:基于数据扫描量计费,大数据查询成本较高。
数据更新不友好:适用于分析型查询,不适用于高频事务性操作(OLTP)。
数据传输成本:跨区域数据迁移会产生额外费用。
Snowflake
简介:
Snowflake 是一个 云原生数据仓库,可以运行在 AWS、Azure 和 Google Cloud 之上,采用独特的 存储计算分离架构。
✅ 优点:
计算与存储分离:可以单独扩展计算资源或存储资源,提高资源利用率。
多云支持:同时支持 AWS、Azure、GCP,避免云供应商锁定(Vendor Lock-in)。
自动扩展:可以根据查询负载自动调整计算能力,适合弹性需求。
数据共享方便:支持跨组织的数据共享(Data Sharing)。
❌ 缺点:
价格较高:存储和计算分离后,按需计费可能导致成本不可控。
SQL 语法不完全兼容:部分 SQL 功能需要 Snowflake 特定实现。
依赖云厂商:无法自建,需要依赖第三方云服务。