公告MongoDB 8.0 隆重推出,这是有史以来最快的MongoDB!了解详情 > >>
公告Voyage AI 与 MongoDB 携手合作,致力于在 Atlas 上提供更准确和更值得信赖的 AI 应用。了解更多 > >>

什么是数据仓库?完整指南

开始免费使用

组织从许多不同系统产生数据,包括应用程序数据库、运维工具、SaaS 平台、日志和外部数据源等运营系统,这些系统都能产生宝贵信息。随着时间的推移,直接从运营系统中分析这些数据会变得困难、缓慢且不可靠。数据仓库作为一个中央存储库,集中来自多个来源的数据,消除了数据孤岛。

数据仓库通过集中和管理来自多个来源的数据并准备好用于分析,从而解决这一问题。数据仓库集中信息以提供单一可信数据源,并支持一致的数据管理实践。它专为高效的数据存储和管理而设计,可实现可靠的分析。它旨在支持报告、分析和商业智能,而非日常事务。

在本指南中,我们将探讨什么是数据仓库、它是如何工作的、何时适合使用数据仓库,以及它与数据库和数据湖的区别。我们还将说明数据仓库通常如何与 MongoDB 等事务型数据库结合使用。数据仓库的概念出现于 20 世纪 80 年代,旨在将不同的数据整合为一致的格式以供分析。

主要结论

  • 数据仓库专为分析和商业智能而设计,而非用于事务工作负载。它集中来自多个业务系统的当前和历史数据,以支持报告和决策。
  • 数据仓库的主要优势包括提高数据质量、可靠性、全面的数据集成以及更快、更可靠的分析,以支持更好的决策和高级分析功能。
  • 需要理解的核心区别是 OLTP 与 OLAP。事务性数据库可处理频繁的实时操作,而数据仓库则针对海量历史数据中的复杂分析查询进行了优化。
  • 当分析和报告开始给操作数据库带来压力、团队间的指标出现不一致或历史趋势分析对业务变得至关重要时,您通常需要一个数据仓库。
  • MongoDB 等事务性数据库通常与数据仓库配合使用,这样在单独处理分析工作负载的同时,应用程序仍能高效运行。

目录

什么是数据仓库?

数据仓库是一个集中式系统,它存储来自多个源系统的当前和历史数据。它针对查询、分析和报告进行了优化,而不是针对处理事务性工作负载。它整合并汇集来自不同来源的结构化和历史数据,以支持商业智能和决策制定。

数据仓库通常存储已清理、转换并组织为一致数据模型的结构化和半结构化数据。通过提供有序的高质量数据,可以实现高效的数据分析,使业务用户、数据分析师和数据科学家能够更轻松地分析数据、确定趋势和支持决策。

操作数据库存储和管理由运营系统(支持日常业务活动的应用程序和服务,例如订单处理)生成的数据,并针对海量数据的性能、聚合和复杂分析查询进行了优化。

数据仓库简史

数据仓库概念的出现,旨在解决运营系统与分析需求之间日益脱节的问题。

在 20 世纪 80 年代和 90 年代初,企业严重依赖操作数据库生成报告。随着数据量的增长,分析查询开始拖慢交易系统并产生不一致的指标。为了弥合这一差距,早期架构引入了暂存层和操作数据存储,将报告与日常操作分开。

现代数据仓库形成于 20 世纪 90 年代初,这要归功于 Bill Inmon 的工作。他将数据仓库定义为一个集中式的、面向主题的系统,旨在为决策提供支持。大约在同一时间,Ralph Kimball 推行了维度建模,该建模优化了分析查询和商业智能的数据结构。

2000 年代,企业数据仓库和数据集市(数据仓库中面向特定领域的小型子集)变得十分普及,但它们通常在本地部署,且需要大量的前期投资。2000 年代后期大数据的兴起催生了数据湖,这扩展了存储灵活性,但并未取代数据仓库。

2010 年代向云基础架构的转移改变了数据仓库,将存储与计算分离,从而实现了弹性扩展和托管服务。如今,数据仓库作为更广泛的数据生态系统的一部分运行,与事务数据库、数据湖和分析平台协同工作,以平衡性能、灵活性和管理。

数据仓库能解决什么问题?

随着组织规模的扩大,数据在各个业务系统间变得碎片化。报告逻辑往往出现重复,指标变得不一致,而分析查询则可能会降低应用程序性能。

数据仓库可以通过以下方式帮助解决这些挑战:

  • 将多个来源的数据集中到一个存储库中
  • 规范跨团队的定义和指标
  • 提高分析工作负载的查询性能
  • 将分析处理与事务处理系统分离
  • 支持大规模商业智能和报告
  • 助力组织跨部门和环境高效管理数据

数据仓库中的管理控制可集中敏感记录,并通过提供数据来源及使用情况的 Atlas 审核追踪来简化法规合规。

这样不仅能获得更可靠的分析结果,还能更清晰地了解业务绩效。

数据仓库与数据库与数据湖

数据仓库、数据库和数据湖在现代数据架构中发挥着不同的作用。

  • 数据库支持操作工作负载和应用程序逻辑,并旨在以结构化(通常是标准化)格式存储数据,以便进行事务处理。
  • 数据仓库支持分析、报告和商业智能,并以维度模型存储数据,以优化快速查询和分析。
  • 数据湖以其原始格式存储大量原始数据,使组织能够以结构化和非结构化形式存储数据,以进行灵活分析。

这些系统通常一起使用,而不是单独使用。许多组织将事务性数据库、数据湖和数据仓库相结合,以平衡灵活性、性能和管理。

有关更深入的比较,请参阅我们关于数据湖与数据仓库的指南。

OLTP 与 OLAP 对比。了解差异

为了解何时需要数据仓库,区分 OLTP 和 OLAP 系统会有所帮助。

OLTP(联机事务处理)系统旨在支持运营工作负载。这些系统处理频繁的、小型事务,如用户注册、购买、更新和应用程序交互。

OLAP(在线分析处理)系统专为分析而设计。它们支持对大型数据集执行复杂查询,这些数据集通常跨越数月或数年的历史数据。OLAP 系统专为处理多维数据而构建,支持跨时间、地点和产品等多个维度的快速、复杂查询。此外,OLAP 系统为商业智能和数据分析提供高级分析功能,使组织能够获得见解并做出数据驱动的决策。

OLTP 与 OLAP 对比

维度OLTP 系统(事务型数据库)OLAP 系统(数据仓库)
主副本目的运行应用程序和业务流程分析数据并支持 BI
查询模式简单、快速的读取和写入复杂、长时间运行的查询
数据范围当前操作数据历史数据和聚合数据
单一事实来源当前操作数据的权威记录系统从操作源构建的派生分析系统
性能焦点低延迟 ACID 事务高吞吐量分析

 

注意:事务型数据库与数据仓库不是相互竞争的技术。它们是为不同工作负载而设计的互补系统。在设计合理的架构中,OLTP 和 OLAP 系统协同工作,以同时支持运营效率和分析见解。

您何时需要数据仓库?

如果您遇到以下情况,可能需要数据仓库:

  • 您分析来自多个业务系统的数据
  • 业务用户需要一致、可信的指标
  • 报告查询正在影响应用程序性能
  • 您需要分析历史趋势,而不仅仅是当前状态
  • 在应用程序数据库中,分析逻辑变得难以管理
  • 数据管理和访问控制变得越来越重要

如果您的主要工作负载涉及实时事务或应用程序数据访问,则通常应选择 OLTP 数据库。当分析和报告成为业务的核心时,数据仓库就变得很有价值。

数据仓库架构和层

数据仓库通常设计为分层架构,其中每一层负责特定范围的数据处理。这种分离有助于团队隔离关注点、提高性能并独立演进系统的各个部分。虽然各组织的实现有所不同,但大多数数据仓库系统都采用分层方法,将数据从操作源经过转换和存储层移动,然后再提供用于分析和执行

源系统

源系统包括运营数据库、SaaS 应用程序、日志文件和外部数据源。这些系统生成流入数据仓库的原始数据,通常作为日常运营的权威真实来源

预发布和摄入

数据被摄取到预发布环境中,在那里可以对其进行验证、清理和转换准备。该层充当源系统和仓库之间的缓冲区,允许在不影响生产系统的情况下检查、组织和重新处理数据(如果需要)。

转换和建模

在此层中,数据被转换为一致的格式,并组织成分析数据模型。在此处应用业务逻辑、聚合和标准定义。

存储层级

数据通常根据访问模式存储在不同层级中。频繁访问的数据可以保存在更快的存储中,而较早的历史数据则可以更具成本效益地进行存储。此外,汇总数据——源自详细事务数据的聚合信息——通常与原始数据一起存储在数据仓库中,以便于报告和决策制定。

分析和 BI 工具

商业智能工具、分析平台和机器学习工作流程会对数据仓库进行查询,以生成见解、仪表盘和报告。这些工具利用数据仓库的分析功能来支持商业智能和高级分析。

数据仓库使用案例

数据仓库不是一个通用数据系统。它专门针对分析工作负载进行了优化,但这些优化带来的权衡使其不适合事务性使用案例。

数据仓库旨在支持跨多个维度的大量历史数据。数据通常被摄取、转换和组织成有助于提高读取性能、聚合以及快速、高效的分析查询的分析模型。但是,数据无法一致更新,也没有针对高频写入或低延迟事务进行优化。

另一方面,事务系统旨在处理大量小型实时操作。它们优先考虑即时一致性、快速插入和更新,以及应用程序工作流的可预测响应时间。

最佳使用案例

  • 商业智能与报告
  • 高管仪表盘和关键绩效指标 (KPI)
  • 趋势分析与预测
  • 历史性能分析
  • 数据挖掘和分析工作负载
  • 集成来自销售点系统的数据以进行事务分析和报告

当用于这些目的时,数据仓库就成为关键的决策支持系统。

不适合的使用案例

数据仓库不太适合需要立即一致性、低延迟响应或由应用程序开发驱动的频繁模式更改的工作负载。

不适合的使用案例包括:

  • 高容量事务性工作负载
  • 低延迟应用程序查询
  • 实时运营更新
  • 在未经深思熟虑建模的情况下快速变更模式

数据仓库本质上并不昂贵或复杂。当要求它们像事务系统一样运行时,它们就会变得昂贵,从而带来不必要的延迟、运营风险和架构复杂性。

数据仓库的局限性

数据仓库可以是:

成本昂贵:它们通常需要存储海量历史数据、运行计算密集型分析查询,并维护摄取、转换和管理的管道。随着数据和使用量的增加,持续的基础设施和运营需求会增加成本。

复杂:建设和运营数据仓库涉及管理多个层级,包括数据建模、摄取、转换和访问管理。团队定义一致的指标、管理模式更改并维护数据质量,这通常需要专门的技能和重大的协调工作。

耗时: 加载和转换数据的过程可能非常耗时,尤其是在处理大量数据时。

不够灵活:数据仓库的结构通常是固定的,这使其难以适应不断变化的业务需求。

有限:数据仓库已针对报告和分析进行优化,这可能会限制其在其他类型数据处理任务中的用处。

数据仓库如何与 MongoDB 协作

数据仓库通常与事务型数据库配合使用,而不是取代它们。

在典型架构中,OLTP 数据库(例如 MongoDB)存储应用程序使用的操作数据。然后,这些数据被复制或流式传输到数据仓库中,可以在不影响应用程序性能的情况下进行转换和分析。

这种方法使每个系统能够专注于自己最擅长的事情:

  • 事务型数据库支持快速、可靠的操作
  • 数据仓库支持分析和商业智能

现代架构日益采用 lakehouse 和基于连接器的方法,这些方法提供了结构化的方法来移动、同步操作数据并将其公开给分析平台,而无需耦合系统。在这些模式中,连接器将数据从操作数据库流式传输或复制到分析环境,而 lakehouse 平台则将仓储式分析与 data lake 存储相结合。

例如,MongoDB 与 Databricks 等平台之间的集成使得可以使用 OLAP 系统分析运营数据,同时保持 OLTP 性能。

这两个系统如何协同工作

典型的架构遵循以下模式:

  1. 应用程序将运营数据写入 MongoDB
  2. 数据会被复制、流式传输或批量加载到数据仓库中
  3. 数据仓库为分析而转换和建模数据
  4. BI 工具和分析师查询数据仓库,这是与应用程序数据库不同的系统

在这种架构中,应用程序只与操作数据库交互,而分析工作负载则完全针对数据仓库运行。这种分离确保了分析查询不会与事务工作负载竞争,从而使每个系统能够独立且高效地运行。MongoDB 支持快速、可靠的事务,而数据仓库则支持跨大型数据集的复杂分析查询。

为什么这种方法很重要

将数据仓库与 MongoDB 结合使用有助于组织:

  • 避免在操作数据库上运行繁重的分析查询
  • 随着分析用量的增长,保持应用程序性能
  • 跨团队维护一致的指标
  • 分析历史趋势,而无需使应用程序模式复杂化

MongoDB 针对操作型工作负载进行了优化。它擅长处理高容量事务、灵活模式以及支持实时应用程序的低延迟读写。相比之下,数据仓库则针对分析型工作负载进行了优化。它们旨在跨多个维度扫描并聚合海量历史数据,通常使用计算密集型查询,而这种查询在操作型数据库中不仅效率低下还会造成干扰。

区分这些关注点有助于组织避免针对操作数据运行繁重的分析查询,在分析使用量增长时保持应用程序性能,并保持跨团队的一致和共享指标。

在此架构中,MongoDB 作为当前操作数据的主记录系统,而数据仓库则是专为报告、趋势分析和长期见解构建的派生分析系统。

现代集成模式

许多组织使用连接器和湖仓一体式架构来集成操作和分析数据。例如,MongoDB 与 Databricks 等平台之间的集成使组织能够使用 OLAP 系统分析操作数据,同时保持事务型工作负载的隔离。

这些模式支持分析、机器学习和报告使用案例,无需强制单一系统处理不兼容的工作负载。

何时引入数据仓库

当需求较低时,MongoDB 可以在运营工作负载的同时支持基础分析。它提供聚合功能和灵活的模式,非常适合简单的报告和应用层面的见解。

但是,随着报告变得越来越复杂,数据量增加,或历史分析变得至关重要,这些访问模式会对操作数据库提出相互冲突的要求。允许分析工作负载独立扩展,同时 MongoDB 继续作为操作数据的记录系统,成为一个实用的下一步。

数据仓库的局限性和权衡

虽然数据仓库功能强大,但也有局限性。

它们可以是:

  • 昂贵
  • 没有合适的数据建模,设计起来很复杂
  • 填充和维护非常耗时
  • 灵活性较差

在决定数据仓库是否是正确的解决方案时,了解这些权衡非常重要。

什么是数据仓库层级?

数据仓库通常根据数据处理、存储和访问的方式组织成层级。这些层级有助于分离关注点、提高性能和控制费用。

常见的数据仓库层级

底层:数据摄取和存储

这一层级包括源系统、摄取管道和原始存储。数据从运营系统、应用程序和外部来源中收集,并加载到仓库环境中。原始数据或经过轻微处理的数据可能会被保留,以供重新处理或审核。

中间层:转换和建模

中间层是清理、转换和建模数据以进行分析的地方。应用业务规则,执行数据质量检查,并创建分析模式。此层级对于生成一致、可信的指标至关重要。

顶级:分析和消费

最顶层包括 BI 工具、仪表盘、分析平台和机器学习工作流。业务用户、分析师和数据科学家在这一层与数据交互,以探索趋势、生成报告和支持决策。

分离这些层级有助于组织扩展分析,同时保护业务系统并控制存储和计算费用。

有哪些常见的数据仓库变体?

并非所有数据仓库都以相同方式构建。传统的本地数据仓库是基于硬件的存储解决方案,它们在加强治理、安全、数据主权和降低延迟方面具有优势,但管理起来可能会很复杂。现代数据仓库已经超越了这些本地系统,转而支持云原生和混合架构。

到 2025 年,许多现代数据仓库还将充当数据湖仓,将管理和结构与数据湖的灵活存储相结合,用于 AI 和机器学习工作负载。

常见的数据仓库变体

企业数据仓库 (EDW)

企业数据仓库是整个组织的集中式分析平台。它跨部门整合数据,并为报告和商业智能提供单一的数据源。

数据集市

数据集市是数据仓库中规模较小且面向特定主题的子集。它们通常针对特定的团队或使用案例而设计,例如财务、市场营销或销售分析。

传统数据仓库

传统的数据仓库通常在本地部署,需要大量的前期基础设施投资。它们依赖固定的模式和较长的开发周期。

云数据仓库

云数据仓库是将存储与计算分离的完全托管服务。它们提供弹性扩展、更快的设置以及即用即付定价,使其成为许多现代组织的默认选择。

现代数据仓库

现代数据仓库强调灵活性、与 data lake 的集成以及对高级分析和机器学习工作负载的支持。它们旨在与操作数据库一起使用,而不是取代它们。

选择合适的变体需要考虑数据量、延迟要求、管理需求和组织成熟度。

数据仓库与其他数据系统相比如何?

了解数据仓库与其他数据系统相比有何不同,有助于阐明何时它是正确的解决方案,何时不是。

数据仓库与数据湖

维度数据仓库数据湖
数据结构已结构化且已建模原始数据和半结构化数据
架构使用前定义在查询时定义
主副本用途BI 和分析探索与实验
监管强灵活但约束较少
查询性能针对分析进行了优化取决于处理层

 

数据仓库与数据集市

维度数据仓库数据集市
范围全组织范围针对特定部门或使用案例
数据量大型较小、经过精选的子集
监管集中式通常已本地化
使用案例企业分析针对性报告

 

何时使用数据仓库

数据仓库是专为分析、报告和决策而设计的专业系统。它将来自多个来源的数据集中在一起,应用一致的业务逻辑,并支持大规模的复杂分析查询。数据仓库针对分析访问模式进行了优化,这对有效的 AI 和机器学习应用程序至关重要。它们提供干净、可靠的数据,可以支持各种 AI 和机器学习工作流,增强业务智能和高级分析所需的分析功能。

它不能替代事务数据库。最有效的数据架构结合了 OLTP 系统和 OLAP 系统,让两者都能发挥其预定作用。

如果使用得当,数据仓库将成为商业智能和数据分析的可靠基础。如果使用不当,它会带来不必要的费用和复杂性。

常见问题解答

集成 Databricks Lakehouse 和 MongoDB Atlas

数据湖、数据仓库与数据库

立即开始使用 Atlas

只需几秒就能上手。我们的免费集群附带 512 MB 的存储空间,因此您可以使用示例数据进行试用并了解我们的平台。
免费试用联系销售团队
开始使用:
  • 全球超过 125 个地区
  • 示例数据集
  • 永远在线身份验证
  • 端到端加密
  • 命令行工具