数据仓库是什么?什么是列式存储?

文章探讨了数据库在事务处理和数据分析中的应用,从早期的OLTP(在线事务处理)到OLAP(在线分析处理)的发展,以及数据仓库在支持分析查询中的作用。列式存储、压缩和排序优化是提高分析性能的关键,而数据立方体和物化视图提供了预计算的聚合数据,以加速常见查询。文章还提到了不同的数据库系统如何针对这两种不同的工作负载进行优化。

事务和分析

在早期的业务数据处理过程中,一次典型的数据库写入通常与一笔 商业交易(commercial transaction) 相对应:卖个货、向供应商下订单、支付员工工资等等。但随着数据库开始应用到那些不涉及到钱的领域,术语 交易 / 事务(transaction) 仍留了下来,用于指代一组读写操作构成的逻辑单元

即使数据库开始被用于许多不同类型的数据,比如博客文章的评论、游戏中的动作、地址簿中的联系人等等,基本的访问模式仍然类似于处理商业交易。应用程序通常使用索引通过某个键找少量记录。根据用户的输入来插入或更新记录。由于这些应用程序是交互式的,这种访问模式被称为 在线事务处理(OLTP, OnLine Transaction Processing)

但是,数据库也开始越来越多地用于数据分析,这些数据分析具有非常不同的访问模式。通常,分析查询需要扫描大量记录,每个记录只读取几列,并计算汇总统计信息(如计数、总和或平均值),而不是将原始数据返回给用户。例如,如果你的数据是一个销售交易表,那么分析查询可能是:

  1. 一月份每个商店的总收入是多少?
  2. 在最近的推广活动中多卖了多少香蕉?
  3. 哪个牌子的婴儿食品最常与 X 品牌的尿布同时购买?

这些查询通常由业务分析师编写,并提供报告以帮助公司管理层做出更好的决策(商业智能)。为了将这种使用数据库的模式和事务处理区分开,它被称为 在线分析处理(OLAP, OnLine Analytic Processing)。OLTP 和 OLAP 之间的区别并不总是清晰的,但是一些典型的特征在下表中列出。

在这里插入图片描述
起初,事务处理和分析查询使用了相同的数据库。 SQL 在这方面已证明是非常灵活的:对于 OLTP 类型的查询以及 OLAP 类型的查询来说效果都很好。尽管如此,在二十世纪八十年代末和九十年代初期,企业有停止使用 OLTP 系统进行分析的趋势,转而在单独的数据库上运行分析。这个单独的数据库被称为 数据仓库(data warehouse)

数据仓库

一个企业可能有几十个不同的交易处理系统:面向终端客户的网站、控制实体商店的收银系统、仓库库存跟踪、车辆路线规划、供应链管理、员工管理等。这些系统中每一个都很复杂,需要专人维护,所以最终这些系统互相之间都是独立运行的。

这些 OLTP 系统往往对业务运作至关重要,因而通常会要求 高可用 与 低延迟。所以 DBA 会密切关注他们的 OLTP 数据库,他们通常不愿意让业务分析人员在 OLTP 数据库上运行临时的分析查询,因为这些查询通常开销巨大,会扫描大部分数据集,这会损害同时在执行的事务的性能

相比之下,数据仓库是一个独立的数据库,分析人员可以查询他们想要的内容而不影响 OLTP 操作。数据仓库包含公司各种 OLTP 系统中所有的只读数据副本。从 OLTP 数据库中提取数据(使用定期的数据转储或连续的更新流),转换成适合分析的模式,清理并加载到数据仓库中。将数据存入仓库的过程称为 “抽取 - 转换 - 加载(ETL)”,如下图所示。
在这里插入图片描述

几乎所有的大型企业都有数据仓库,但在小型企业中几乎闻所未闻。这可能是因为大多数小公司没有这么多不同的 OLTP 系统,大多数小公司只有少量的数据 —— 可以在传统的 SQL 数据库中查询,甚至可以在电子表格中分析。在一家大公司里,要做一些在一家小公司很简单的事情,需要很多繁重的工作。

使用单独的数据仓库,而不是直接查询 OLTP 系统进行分析的一大优势是数据仓库可针对分析类的访问模式进行优化。事实证明,在深度探索存储与检索讨论中的索引算法对于 OLTP 来说工作得很好,但对于处理分析查询并不是很好。接下来我们将研究为分析而优化的存储引擎。

OLTP数据库和数据仓库之间的分歧

数据仓

<think>嗯,用户想了解数据仓库的概念,包括定义和作用。我需要根据提供的引用内容来整理答案。首先,看看引用里提到的内容。引用1说数据仓库是面向分析的集成化数据环境,为决策支持提供帮助。它自己不生产或消费数据,而是从外部获取并开放给外部应用,所以叫仓库而不是工厂。结构分为源数据、数据仓库和数据应用三层。引用3里Ralph Kimball提到数据仓库是抽取、清洗、规格化源数据到维度存储的系统,支持查询和分析。引用4提到数据仓库通过监控业务流程为决策提供数据支持,特征包括面向主题。引用5则讨论指标的定义,比如事务型指标,这可能和数据仓库的应用有关。 接下来要组织这些信息。首先定义数据仓库,结合引用1、3、4的说法。然后作用部分,引用1提到决策支持,引用3提到支持查询和分析,引用4提到监控业务流程。可能还需要提到它的特点,比如面向主题、集成性、稳定性、历史性,这些在引用4和引用1都有涉及。 要注意用户的问题可能不太清楚数据仓库和普通数据库的区别,可能需要解释。不过用户没有直接问这个,但提到作用时可能需要对比。另外,用户提供的引用中有多个定义,需要综合起来,比如Kimball的定义和引用1的定义是否一致,应该合并说明。 还要注意回答的结构,先定义,再作用,再特点,可能更清晰。同时根据用户给的示例,可能需要生成相关问题,比如数据仓库数据库的区别,或者元数据管理的作用,参考引用2提到的元数据管理。不过用户要求生成相关问题放在最后,所以最后要列出相关问题。 需要确保使用正确的中文表达,引用标记在句末自然添加。比如在定义部分,引用1和3的内容需要正确标注。同时,用户要求回答结构清晰,分步骤解决问题,所以可能需要分点回答,但用户示例中的回答并没有分点,而是段落式。可能需要按照示例的结构,用段落形式,但内容分块。 最后,检查是否有遗漏的信息点,比如数据仓库的结构三层(源数据、数据仓库、数据应用)是否需要详细说明,或者特点中的面向主题、集成等是否需要展开。根据引用内容,引用4提到了面向主题,引用1提到集成化,引用3提到清洗、规格化,这些都可以作为特点来阐述。 总结下来,回答的结构大概是: 1. 定义:综合引用1、3、4的定义,说明数据仓库是什么,目的,结构。 2. 作用:决策支持、数据分析、数据整合。 3. 特点:分点列出面向主题、集成性、稳定性、历史性,并引用对应的引用来源。 4. 相关问题:生成几个相关问题,比如数据仓库数据库的区别,元数据管理的作用,数据仓库的应用场景等。 现在需要把这些内容用自然的中文组织起来,并正确添加引用标记。</think>### 数据仓库的定义及作用 #### 1. 定义 数据仓库是为支持企业决策而设计的**集成化数据环境**,其核心是从多个分散的源系统抽取数据,经过清洗、转换和整合后,形成面向主题、稳定的历史数据集合[^1][^3][^4]。 - 根据Ralph Kimball的定义,数据仓库是一个通过抽取、清洗、规格化源数据,并存储为维度模型的系统,最终为查询和分析提供支持。 - 数据仓库本身不直接生产或消费数据,而是作为“中间层”连接数据源与应用层,类似“仓库”的角色[^1]。 #### 2. 核心作用 1. **决策支持** 通过整合历史数据与实时数据,为业务分析(如市场趋势预测、用户行为分析)提供可靠依据,辅助管理者制定策略[^1][^4]。 2. **数据分析与查询优化** 提供高效的多维分析能力(如OLAP),支持复杂查询和报表生成。例如,通过定义事务型指标(如订单金额)及其派生指标,衡量业务过程的结果[^5]。 3. **数据整合与一致性** 消除不同业务系统的数据孤岛,统一数据格式和标准,确保分析结果的准确性和可比性[^3]。 #### 3. 关键特征 - **面向主题**:围绕业务主题(如销售、用户)组织数据,而非面向业务流程。 - **集成性**:整合多源异构数据,消除冗余和不一致。 - **稳定性**:以只读方式存储历史数据,避免频繁修改。 - **时变性**:记录数据随时间变化的趋势,支持长期分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值