公告隆重推出MongoDB 8.0,史上最快的MongoDB!了解更多 >>隆重推出MongoDB 8.0,史上最快的MongoDB!>>

数据库 vs. 数据仓库 vs. 数据湖

什么是数据库、数据仓库和数据湖?让我们来看看它们的关键区别以及何时应该使用哪一个。

你可能听说过“数据库”、“数据仓库”和“数据湖”这些术语,并且有一些疑问。这些词是否描述的是同一件事?如果不是,它们之间有什么区别?何时应该选择其中一个而不是另一个?本文将探讨这些问题的答案以及其他更多内容。

目录

什么是数据库?

数据库是一组数据或信息的集合。数据库通常通过电子方式访问,用于支持在线事务处理(OLTP)。数据库管理系统(DBMS)在数据库中存储数据,并使用户和应用程序能够与数据交互。术语“数据库”通常用来指代数据库本身以及数据库管理系统。

数据库特性

过去几十年中已经出现各种各样的数据库类型。所有数据库都存储信息,但每个数据库都有自己的特性。关系型数据库以固定行和列的表格形式存储数据。非关系型数据库(也称为NoSQL数据库)以多种模型存储数据,包括JSON(JavaScript对象表示法)、BSON(二进制JSON)、键值对、具有动态列的行和表,以及节点和边。数据库存储结构化和/或半结构化数据,具体取决于类型。

你还可以找到以下数据库特性:

  • 安全功能以确保数据只能被授权用户访问。
  • ACID(原子性、一致性、隔离性、持久性)事务以确保数据完整性。
  • 查询语言和API,以便轻松与数据库中的数据交互。
  • 索引以优化查询性能。
  • 全文搜索。
  • 针对移动设备的优化。
  • 灵活的部署拓扑,以便将工作负载(例如,分析工作负载)隔离到特定资源集。
  • 本地、私有云、公有云、混合云和/或多云托管选项。

为什么使用数据库?

如果你的应用程序需要存储数据(几乎所有交互式应用程序都需要),则应用程序需要一个数据库。各种行业和用例的应用程序都是基于数据库构建的。许多类型的数据可以存储在数据库中,包括

  • 患者病历
  • 在线商店中的商品
  • 财务记录
  • 文章和博客条目
  • 体育比分和统计数据
  • 在线游戏信息
  • 学生成绩和分数
  • 物联网设备读取数据
  • 移动应用程序信息

数据库示例

存在各种各样的数据库。例如

  • 关系型数据库:Oracle、MySQL、Microsoft SQL Server和PostgreSQL
  • 文档数据库:MongoDB和CouchDB
  • 键值数据库:Redis和DynamoDB
  • 宽列存储:Cassandra和HBase
  • 图数据库:Neo4j和Amazon Neptune

OLAP + 数据仓库和数据湖

数据仓库和数据湖都是为了支持在线分析处理(OLAP)。OLAP系统通常用于从各种来源收集数据。然后使用这些数据来支持一系列分析用例,从商业智能和报告(例如,按店铺季度销售报告)到预测(例如,根据历史趋势预测未来六个月的家庭销售)。

考虑到这一点,让我们比较这两种OLAP方法。

什么是数据仓库?

数据仓库是一个存储来自多个来源高度结构化信息的系统。数据仓库通常存储来自一个或多个系统的当前和历史数据。使用数据仓库的目标是将不同的数据源结合起来,以便分析数据,寻找洞察力,并以报告和仪表板的形式创建业务智能(BI)。

你可能想知道:“数据仓库是不是数据库?”是的,数据仓库是一个针对分析进行优化的巨型数据库。

数据仓库特性

数据仓库存储来自各种来源的大量当前和历史数据。它们包含各种数据,从原始摄入数据到高度策划、清洗、过滤和聚合的数据。

提取、转换、加载(ETL)过程将数据从其原始源移动到数据仓库。ETL过程定期(例如,每小时或每天)移动数据,因此数据仓库中的数据可能不会反映系统的最新状态。

数据仓库通常具有预定义和固定的关系模式。因此,它们与结构化数据配合得很好。一些数据仓库也支持半结构化数据。

一旦数据进入仓库,业务分析师就可以将数据仓库与BI工具连接起来。这些工具允许业务分析师和数据科学家探索数据,寻找洞察力,并为业务利益相关者生成报告。

为什么使用数据仓库?

当您需要存储大量历史数据并/或对数据进行深入分析以生成业务智能时,数据仓库是一个不错的选择。由于其高度结构化的性质,分析数据仓库中的数据相对简单,可以由业务分析师和数据科学家执行。

请注意,数据仓库不是为了满足应用程序的事务和并发需求而设计的。如果组织确定他们将从数据仓库中受益,他们需要单独的数据库或数据库来支持他们的日常运营。

数据仓库示例

数据仓库的示例包括

  • Amazon Redshift。
  • Google BigQuery。
  • IBM Db2 Warehouse。
  • Microsoft Azure Synapse。
  • Oracle Autonomous Data Warehouse。
  • Snowflake。
  • Teradata Vantage。

什么是数据湖?

数据湖是一个存储来自不同来源的原始、原始格式数据的存储库。像数据仓库一样,数据湖存储大量当前和历史数据。数据湖与众不同的地方在于它们能够以包括JSON、BSON、CSV、TSV、Avro、ORC和Parquet在内的多种格式存储数据。

通常,数据湖的主要目的是为了分析数据以获得洞察力[链接]。然而,组织有时仅出于低成本存储的目的使用数据湖,认为数据将来可能用于分析。

数据湖是数据库吗?

您可能会想,“数据湖是数据库吗?”数据湖是一个存储多种方式数据的存储库,包括数据库。借助现代工具和技术,数据湖还可以形成数据库的存储层。Starburst、Presto、Dremio和Atlas Data Lake等工具可以为您提供数据湖中存储的数据的类似数据库的视图。在许多情况下,这些工具可以像数据仓库一样支持相同的分析工作负载。

数据湖特性

数据湖存储大量结构化、半结构化和非结构化数据。它们可以包含从关系数据到JSON文档、PDF到音频文件的一切。

数据无需转换即可添加到数据湖中,这意味着数据可以非常高效地添加(或“摄取”),无需事先规划。

数据湖的主要用户可能因数据的结构而异。当数据更加结构化时,业务分析师将能够获得洞察力。当数据更加非结构化时,数据分析可能需要开发人员、数据科学家或数据工程师的专业知识。

数据湖的灵活特性使得业务分析师和数据科学家可以寻找意外模式和洞察力。数据的原始性及其体积使用户能够解决他们最初配置数据湖时可能没有意识到的问题。

数据湖中的数据可以使用各种OLAP系统进行处理,并使用BI工具进行可视化。

为什么使用数据湖?

数据湖是一种经济高效的存储大量数据的方式。当您希望以原始形式获得当前和历史数据的洞察力,而不需要对其进行转换和迁移时,请使用数据湖。数据湖还支持机器学习和预测分析。

与数据仓库一样,数据湖并不旨在满足应用程序的交易和并发需求。

数据湖示例

数据湖可以提供存储和计算能力,可以是独立提供,也可以一起提供。

以下是一些提供灵活和可扩展存储以构建数据湖的技术示例

  • AWS S3
  • Azure Data Lake Storage Gen2
  • Google Cloud Storage

其他技术可以组织和查询数据湖中的数据,包括

  • AWS Athena。
  • Presto。
  • Starburst。
  • Databricks SQL Analytics。

数据库、数据仓库和数据湖之间的关键区别是什么?

数据库、数据仓库和数据湖都用于存储数据。那么它们之间的区别是什么?

数据库、数据仓库和数据湖之间的主要区别是

  • 数据库存储为驱动应用程序所需的当前数据。
  • 数据仓库存储来自一个或多个系统在预定义和固定的模式中的当前和历史数据,这使得业务分析师和数据科学家可以轻松分析数据。
  • 数据湖存储来自一个或多个系统的当前和历史数据,以原始形式,这使得业务分析师和数据科学家可以轻松分析数据。

下表总结了数据库、数据仓库和数据湖之间的相似点和差异。

数据库数据湖数据仓库
工作负载操作和事务性分析性分析性
数据类型结构化或半结构化结构化、半结构化和/或非结构化结构化和/或半结构化
模式灵活性根据数据库类型,采用刚性或柔性架构导入数据时不需要模式定义(读取时模式)导入数据时使用预定义和固定的模式定义(写入和读取时模式)
数据新鲜度实时根据ETL处理频率,可能不是最新的根据ETL处理频率,可能不是最新的
用户应用程序开发者业务分析师、应用程序开发者和数据科学家业务分析师和数据科学家
优点存储和更新数据的快速查询易于数据存储简化了原始数据的导入
之后应用模式使业务分析师处理数据变得容易
分离存储和计算
固定的模式使业务分析师处理数据变得容易
缺点可能具有有限的分析能力需要努力组织和准备数据以供使用设计和发展模式可能很困难
计算扩展可能需要不必要的存储扩展,因为它们紧密耦合

数据库与数据仓库与数据湖:哪个适合我?

几乎每个交互式应用程序都需要一个数据库。

当组织想要从多个来源分析其数据时,他们可以选择使用数据仓库、数据湖或两者来补充他们的数据库。在确定数据湖和/或数据仓库是否适合您的组织时,请考虑以下问题

  • 我的数据是有结构的、半结构的还是非结构的?数据仓库支持结构化和半结构化数据,而数据湖支持所有三种。
  • 我的分析能否从具有预定义、固定的模式中受益?数据仓库要求用户提前创建预定义、固定的模式,这有利于更有限(但更容易)的数据分析。数据湖允许用户以原始格式存储数据,这使得存储数据而无需应用和维护结构变得更加容易。
  • 我的数据目前存储在哪里?数据仓库要求您创建ETL过程将数据移入仓库。根据数据存储的位置,数据湖可能不需要移动任何数据。例如,MongoDB Atlas Data Lake能够访问存储在Amazon S3存储桶中的数据,这对已经在那里存储数据的组织来说可能非常有优势。

使用MongoDB Atlas数据库和数据湖

MongoDB Atlas是一种一键式全托管数据库即服务,它支持创建MongoDB数据库。MongoDB数据库具有灵活的模式,支持结构化或半结构化数据。

在许多情况下,MongoDB数据平台提供的支持足以满足分析需求,无需数据仓库或数据湖。MongoDB提供的支持分析的一些功能包括

  • 强大的聚合管道,允许实时聚合和分析数据。
  • 支持分析节点,这些节点专门用于分析工作负载。这意味着运行分析不会影响应用程序关键操作工作负载的性能。
  • MongoDB BI Connector,它允许您将MongoDB数据连接到BI和数据分析平台,以进行进一步的可视化和分析。

总结

数据库、数据仓库和数据湖各自有其用途。几乎每个现代应用程序都需要数据库来存储当前的应用数据。想要分析其应用程序当前和历史数据的组织可以选择使用数据库、数据仓库或两者兼而有之。

准备好开始了吗?

今天就开始使用一个免费的Atlas数据库

常见问题解答

数据库和数据湖之间的区别是什么?

数据库存储支持应用程序运行所需当前数据。一个数据湖以原始形式存储一个或多个系统的当前和历史数据,用于分析数据。

数据库与数据仓库的区别是什么?

数据库存储支持应用程序运行所需当前数据,而一个数据仓库存储一个或多个系统的当前和历史数据,以预定义和固定的模式存储,用于分析数据。

数据仓库与数据湖的区别是什么?

数据湖和数据仓库都存储一个或多个系统的当前和历史数据。数据仓库使用预定义和固定的模式存储数据,而数据湖以原始形式存储数据。

何时使用数据湖或数据仓库?

当组织希望分析一个或多个系统的数据以获取洞察时,可以选择使用数据湖、数据仓库或两者兼而有之。当组织希望以原始格式存储原始数据时,数据湖是一个好选择。当组织希望以高度结构化的格式存储数据时,数据仓库是一个好选择。

数据湖用于什么?

数据湖用于存储一个或多个系统的当前和历史数据。数据湖以原始(未转换)形式存储数据,允许开发人员、数据科学家和数据工程师执行即席分析。

数据仓库是否已死亡?

不,数据仓库并未死亡。对数据分析的需求以帮助企业获得洞察和做出决策并不会消失。

数据湖是数据仓库的替代方法。当组织难以处理其数据源的多样性和不断变化时,数据湖可以成为数据仓库的有力补充。

大数据会取代数据仓库吗?

大数据和数据仓库是两个不同的概念。《大数据》指的是具有高量、高速度和高多样性的数据。大数据可以存储在数据湖或数据仓库中。

我如何学习使用数据库?

要开始使用数据库,您通常需要创建数据库并学习执行CRUD(创建、读取、更新和删除)操作。每个数据库都有自己的启动方式。要学习如何使用MongoDB,请访问MongoDB入门

数据库是如何工作的?

数据库利用存储引擎,这些引擎管理数据的存储和检索。要了解更多关于MongoDB存储引擎的信息,请访问FAQ:MongoDB存储