数据仓库:概念、应用与技术解析
1. 数据仓库简介
数据仓库是用于查询、报告和企业决策的事务和非事务数据的存储库。数据通常来自多个来源,且一般不用于企业的日常运营。因此,一旦数据被存储,其变化程度通常比之前作为示例的数据库要小。
由于创建和维护数据仓库的成本较高,只有大型组织才会建立自己的数据仓库。数据仓库的表可以容纳数百万行数据,存储容量现已达到PB级别。因此,成熟的数据仓库需要大型机处理能力或小型服务器集群。
大多数数据仓库软件是商业软件,但Infobright发布了一款开源产品。例如,沃尔玛在2007年第三季度时,其数据仓库的规模达到了4PB,而美国学术研究图书馆的所有数据仅需2PB的存储空间。
数据仓库的管理软件通常是关系型数据库管理系统(DBMS),但数据建模与基于事务的运营数据库有所不同,因为数据仓库的目标不同。
2. 数据仓库的范围和目的
2.1 与运营数据库的对比
以SmartMart零售商为例,其运营系统执行以下数据管理活动:
- 跟踪库存物品的位置和库存水平。
- 存储店内和网络销售数据,包括购买时应用的促销信息。
- 处理员工调度和工作分配(与工资系统相关)。
运营数据库的应用程序可以回答诸如特定产品的库存位置和数量、特定产品适用的促销活动、特定网络订单的订购物品以及特定员工的工作时间和地点等查询。这些查询为企业的日常运营提供必要信息,但无法满足高层管理制定战略决策的需求,例如哪些产品在哪些地区畅销,以及评估先前决策的结果等。
2.2 战略决策支持
战略规划和战略计划实施的审查需要以各种方式“切片和切块”数据。数据仓库中的数据通常会被永久保留,而运营数据库中的数据可能在一年左右后被转移到存档存储中,以防止数据库过大。
运营系统通常配备各种预编写的应用程序,很少有用户能够进行即席查询。相比之下,数据仓库几乎没有预编写的应用程序,用户可以使用查询工具自由探索数据分组。
2.3 数据挖掘
数据仓库的主要活动是数据挖掘,即用户分析数据以寻找数据中的模式。例如,通过数据挖掘可以确定哪些产品在公司市场的哪些部分最畅销,从而调整营销活动或库存水平。
7 - Eleven公司通过数据挖掘发现,晚上8点左右啤酒和尿布的销量会上升。基于此发现,公司将尿布放置在啤酒冰柜旁边,从而显著提高了啤酒的销量。但在进行数据挖掘时需要谨慎,因为统计上迟早会发现一些没有实际用途的“规律”。
由于数据仓库不断添加数据且很少删除数据,因此它往往是非常大的数据库,需要大型机而不是桌面服务器来处理大量数据和即席查询所需的处理能力。不过,小型的数据集市可以在桌面服务器上运行。目前,大多数大型数据仓库使用关系型DBMS,如DB/2和Oracle。
3. 数据的获取和准备
3.1 数据细节的重要性
早期的数据仓库倾向于存储汇总数据,但经验表明,数据仓库需要与运营系统一样多的详细数据。存储详细数据可以使数据仓库更加灵活,用户可以根据需要进行查询。如果只有汇总数据,在需要详细信息时将无法恢复。
3.2 数据来源
大多数数据来自运营系统,但也可能来自外部来源。例如,SmartMart可能会购买地理区域的人口统计数据。
3.3 数据处理差异
数据仓库和运营数据库在数据处理方面存在显著差异:
-
更新频率
:运营数据库通常实时更新,而数据仓库通常按固定间隔(如每天一次)批量加载数据。
-
数据时效性
:运营系统关注数据元素的最新值,而数据仓库需要保留历史数据以查看数据随时间的变化。
-
缺失值处理
:运营数据库可以接受缺失值,但数据仓库中的空值可能会导致不可预测或不准确的结果,因此需要用特定值替换。
3.4 数据整合与ETL过程
数据仓库的数据通常来自多个来源,当数据来源以不同方式表示重复数据时,会产生问题。加载数据仓库的软件必须识别相同的事务并将数据合并为一个实体。
在将数据加载到数据仓库之前,需要对数据进行修改,使其符合数据仓库的格式。此外,还需要识别和合并重复数据,用特定值替换空值,并进行数据清理。
这个过程称为提取 - 转换 - 加载(ETL)。由于每个数据仓库的数据来源不同,几乎不可能购买能够执行ETL处理的完整软件,因此大多数情况下需要为每个仓库定制开发。设置数据仓库的大部分费用来自ETL软件的编写和测试,运行和维护ETL软件也会消耗大量的IT人员精力。
当数据主要来自组织内部时,可以在源系统或ETL过程中使数据格式保持一致。如果组织有多个运营系统,特别是使用遗留软件时,修改运营系统可能不可行。但许多组织可以从统一多个数据库的数据格式项目中受益。
4. 数据仓库的数据建模
4.1 维度建模基础
数据仓库最常用的数据模型是维度建模,它借鉴了关系数据模型的基本概念,如表格和各种键,但表格通常不进行规范化,实际上大多只处于第一范式,因为许多表格包含多个实体的数据。
维度建模使用两种主要类型的表格:事实表和维度表。事实表保存可以按需汇总的数值数据,维度表保存用户可以用来组织数据的描述性标准。
以下是一个用于捕获特定时间点库存水平的维度和事实表示例:
| 表名 | 字段 |
| — | — |
| Dimension_date |
date_key, full_date, day_of_week, day_of_month, day_of_year, text_day, text_month, text_year |
| Fact_inventory_level |
@date_key,
@product_key,
@location_key, quantity_on_hand |
| Dimension_product |
product_key, product_name, product_unit, product_shipping_weight, product_UPC, product_web_orderable |
| Dimension_location |
location_key, store_or_warehouse_flag, location_id, location_street, location_city, location_state_code, location_state_text, location_zip |
4.2 与纯关系设计的区别
- 主键使用 :不使用自然键(如UPC、ISBN或发票号)作为主键的全部或部分,而是为表中的每一行分配一个唯一的整数键,以加快事实表和维度表之间的连接。当自然键包含在表中时,它们被称为已弃用维度。
- 事实表特点 :事实表包含外键和可汇总的数据。例如,Fact_inventory_level表包含指向日期、位置和产品维度表的外键,可汇总的数据项是库存数量。表的主键是两个或多个外键的连接,数据仓库使用引用完整性确保外键引用现有维度表的行。
- 维度表特点 :维度表包含描述性数据。例如,Dimension_date表包含唯一的整数键以及用于查询的各种日期属性,每个可能用于查询的日期在日期维度表中都有一行。
这些表支持对数据仓库中任何给定日期的产品库存水平进行查询,用户可以进行多种分析,如特定产品的库存水平随月份的变化、不同商店的库存水平比较等。
4.3 日期和数据处理
与运营数据库不同,数据仓库需要跟踪数据随时间的变化。例如,在处理客户地址等人类数据时,可能会出现问题。因为客户的地址和电话号码会随时间变化,如果只在数据仓库中包含客户的最新地址,可能无法准确分析特定时间段内的销售情况。
一种解决方案是在客户维度表中添加地址有效的日期,这样每个客户的每个地址在表中都有一行。每个销售记录通过任意的客户键与客户相关联,因此可以确定特定销售的正确地址。基于位置和日期的查询需要包含逻辑,以确保地址在分析时间段内有效。
5. 数据仓库设备
5.1 早期数据库机器的尝试
20世纪80年代初,当关系型数据库取代基于旧数据模型的数据库时,一些硬件供应商试图销售称为数据库机器的专用计算机。其想法是使用小型计算机仅运行DBMS,并与另一台计算机建立主从关系。数据库处理请求先到达主机器,然后传递给数据库机器,数据库机器完成所有数据库活动并将结果返回给主计算机,再由主计算机将数据发送给用户。
理论上,将数据库处理卸载到专用机器可以提高系统整体性能,但实际上只有严重受CPU限制的数据库应用程序在数据库机器上运行时才会有显著的性能提升。由于在数据库机器和主计算机之间移动查询和数据的开销,抵消了减轻主计算机CPU负担所带来的性能提升。到1990年,几乎没有人再听说过数据库机器。
5.2 现代数据仓库设备
随着数据仓库的兴起,专门用于数据库工作的计算机再次出现。如今,专用数据库计算机实际上是直接连接到网络的专用服务器。
例如,Dell、EMC和Oracle提供一种硬件配置,包括Dell机架服务器和加载了Oracle数据仓库软件的EMC网络存储阵列。Terradata也提供服务器级的数据仓库设备(硬件和Terradata的数据仓库软件),可扩展到170TB,适用于相对较小的数据仓库和数据集市。
这种预配置解决方案的好处是简化了数据仓库的设置,并且整个数据仓库基础设施由单一供应商支持,这是许多组织所青睐的。
综上所述,数据仓库在大型组织的信息战略中扮演着重要角色,其设计和管理涉及多个方面,包括数据获取、建模和设备选择等。通过合理利用数据仓库和相关技术,组织可以更好地支持战略决策和业务发展。
6. 数据仓库中的查询与分析
6.1 查询类型与特点
数据仓库支持多种类型的查询,以满足不同的业务需求。常见的查询类型包括:
-
聚合查询
:用于汇总数据,例如计算特定时间段内的总销售额、平均库存水平等。通过对事实表中的数值数据进行求和、求平均等操作,为管理层提供宏观的业务指标。
-
分组查询
:根据维度表中的描述性标准对数据进行分组,例如按地区、产品类别、时间等分组。这有助于分析不同组之间的数据差异,如不同地区的销售情况对比。
-
切片与切块查询
:允许用户在特定的维度上进行筛选和分析。例如,只查看某一特定月份、某一特定产品的销售数据,或者同时按照多个维度进行筛选,如特定地区、特定时间段内的某类产品销售情况。
6.2 查询工具与操作步骤
数据仓库通常没有大量预编写的应用程序,用户需要使用查询工具来探索数据。以下是使用查询工具进行数据查询的一般步骤:
1.
选择查询工具
:根据数据仓库所使用的DBMS和用户的需求,选择合适的查询工具,如SQL Server Management Studio、Oracle SQL Developer等。
2.
连接到数据仓库
:使用查询工具提供的连接功能,输入数据仓库的服务器地址、用户名、密码等信息,建立与数据仓库的连接。
3.
构建查询语句
:根据查询需求,编写SQL查询语句。例如,要查询某一特定日期的产品库存水平,可以使用以下SQL语句:
SELECT p.product_name, il.quantity_on_hand
FROM Fact_inventory_level il
JOIN Dimension_product p ON il.@product_key = p.product_key
JOIN Dimension_date d ON il.@date_key = d.date_key
WHERE d.full_date = '2024-01-01';
- 执行查询 :在查询工具中执行编写好的查询语句,等待数据仓库返回查询结果。
- 分析结果 :对查询结果进行分析,提取有价值的信息。可以使用查询工具提供的图表功能,将结果以直观的图表形式展示,如柱状图、折线图等。
6.3 数据挖掘分析
数据挖掘是数据仓库的主要活动之一,通过分析数据寻找其中的模式和规律。以下是数据挖掘的一般流程:
graph LR
A[定义问题] --> B[数据收集]
B --> C[数据预处理]
C --> D[选择算法]
D --> E[模型训练]
E --> F[模型评估]
F --> G[结果应用]
- 定义问题 :明确要解决的业务问题,例如预测销售趋势、发现客户购买模式等。
- 数据收集 :从数据仓库中收集与问题相关的数据。
- 数据预处理 :对收集到的数据进行清洗、转换和集成,以提高数据质量。例如,处理缺失值、异常值,将数据进行标准化等。
- 选择算法 :根据问题的类型和数据的特点,选择合适的数据挖掘算法,如决策树、神经网络、关联规则挖掘等。
- 模型训练 :使用选择的算法对预处理后的数据进行训练,构建数据挖掘模型。
- 模型评估 :使用测试数据对训练好的模型进行评估,评估指标包括准确率、召回率、F1值等。
- 结果应用 :将评估通过的模型应用到实际业务中,为决策提供支持。
7. 数据仓库的性能优化
7.1 索引优化
索引是提高数据仓库查询性能的重要手段。通过在表上创建合适的索引,可以加快数据的检索速度。以下是一些索引优化的建议:
-
选择合适的列创建索引
:通常在经常用于查询条件、连接条件和排序的列上创建索引。例如,在Fact_inventory_level表的@date_key、@product_key和@location_key列上创建索引,可以加快根据日期、产品和位置进行查询的速度。
-
避免过多的索引
:过多的索引会增加数据插入、更新和删除的开销,同时也会占用更多的存储空间。因此,只在必要的列上创建索引。
-
使用复合索引
:当查询条件涉及多个列时,可以创建复合索引。例如,在Dimension_date表上创建包含date_key和text_month的复合索引,对于按月份进行查询的操作会更高效。
7.2 分区优化
分区是将大表分割成多个小的、易于管理的部分。通过分区,可以提高数据的查询性能和维护效率。常见的分区方式包括按时间、按范围、按列表等。例如,将Fact_inventory_level表按日期进行分区,每个月的数据存储在一个分区中。这样,当查询某一特定月份的库存数据时,只需要访问相应的分区,减少了数据扫描的范围。
7.3 硬件优化
数据仓库的性能还受到硬件配置的影响。以下是一些硬件优化的建议:
-
增加内存
:足够的内存可以减少磁盘I/O操作,提高数据处理速度。可以根据数据仓库的规模和查询负载,适当增加服务器的内存。
-
使用高速存储设备
:如固态硬盘(SSD),相比传统的机械硬盘,SSD具有更快的读写速度,可以显著提高数据仓库的性能。
-
采用分布式架构
:对于大规模的数据仓库,可以采用分布式架构,将数据分布在多个节点上进行处理,提高系统的并行处理能力。
8. 数据仓库的未来发展趋势
8.1 云数据仓库
随着云计算技术的发展,云数据仓库越来越受到企业的青睐。云数据仓库具有以下优点:
-
弹性扩展
:可以根据企业的需求灵活调整存储和计算资源,无需预先购买大量的硬件设备。
-
降低成本
:无需企业自行维护硬件和软件,减少了运维成本。
-
易于集成
:可以与其他云服务进行集成,如数据分析工具、机器学习平台等。
8.2 实时数据仓库
传统的数据仓库通常是批量加载数据,存在一定的延迟。而实时数据仓库可以实时处理和分析数据,为企业提供更及时的决策支持。实时数据仓库需要具备高效的数据采集、处理和存储能力,以应对大量的实时数据。
8.3 与人工智能的融合
数据仓库与人工智能的融合将成为未来的发展趋势。通过将人工智能技术应用到数据仓库中,可以实现自动化的数据挖掘、预测分析等功能。例如,使用机器学习算法对数据仓库中的数据进行建模,预测销售趋势、客户流失率等。
数据仓库作为企业决策支持的重要工具,在不断发展和演变。企业需要关注数据仓库的最新技术和发展趋势,合理规划和建设数据仓库,以充分发挥其在企业发展中的作用。
超级会员免费看

被折叠的 条评论
为什么被折叠?



