你可能听说过“数据库”、“数据仓库”和“数据湖”这些术语,并且有一些疑问。这些词是否描述的是同一件事?如果不是,它们之间有什么区别?何时应该选择其中一个而不是另一个?本文将探讨这些问题的答案以及其他更多内容。
目录
数据库是一组数据或信息的集合。数据库通常通过电子方式访问,用于支持在线事务处理(OLTP)。数据库管理系统(DBMS)在数据库中存储数据,并使用户和应用程序能够与数据交互。术语“数据库”通常用来指代数据库本身以及数据库管理系统。
过去几十年中已经出现各种各样的数据库类型。所有数据库都存储信息,但每个数据库都有自己的特性。关系型数据库以固定行和列的表格形式存储数据。非关系型数据库(也称为NoSQL数据库)以多种模型存储数据,包括JSON(JavaScript对象表示法)、BSON(二进制JSON)、键值对、具有动态列的行和表,以及节点和边。数据库存储结构化和/或半结构化数据,具体取决于类型。
你还可以找到以下数据库特性:
如果你的应用程序需要存储数据(几乎所有交互式应用程序都需要),则应用程序需要一个数据库。各种行业和用例的应用程序都是基于数据库构建的。许多类型的数据可以存储在数据库中,包括
存在各种各样的数据库。例如
数据仓库和数据湖都是为了支持在线分析处理(OLAP)。OLAP系统通常用于从各种来源收集数据。然后使用这些数据来支持一系列分析用例,从商业智能和报告(例如,按店铺季度销售报告)到预测(例如,根据历史趋势预测未来六个月的家庭销售)。
考虑到这一点,让我们比较这两种OLAP方法。
数据仓库是一个存储来自多个来源高度结构化信息的系统。数据仓库通常存储来自一个或多个系统的当前和历史数据。使用数据仓库的目标是将不同的数据源结合起来,以便分析数据,寻找洞察力,并以报告和仪表板的形式创建业务智能(BI)。
你可能想知道:“数据仓库是不是数据库?”是的,数据仓库是一个针对分析进行优化的巨型数据库。
数据仓库存储来自各种来源的大量当前和历史数据。它们包含各种数据,从原始摄入数据到高度策划、清洗、过滤和聚合的数据。
提取、转换、加载(ETL)过程将数据从其原始源移动到数据仓库。ETL过程定期(例如,每小时或每天)移动数据,因此数据仓库中的数据可能不会反映系统的最新状态。
数据仓库通常具有预定义和固定的关系模式。因此,它们与结构化数据配合得很好。一些数据仓库也支持半结构化数据。
一旦数据进入仓库,业务分析师就可以将数据仓库与BI工具连接起来。这些工具允许业务分析师和数据科学家探索数据,寻找洞察力,并为业务利益相关者生成报告。
当您需要存储大量历史数据并/或对数据进行深入分析以生成业务智能时,数据仓库是一个不错的选择。由于其高度结构化的性质,分析数据仓库中的数据相对简单,可以由业务分析师和数据科学家执行。
请注意,数据仓库不是为了满足应用程序的事务和并发需求而设计的。如果组织确定他们将从数据仓库中受益,他们需要单独的数据库或数据库来支持他们的日常运营。
数据仓库的示例包括
数据湖是一个存储来自不同来源的原始、原始格式数据的存储库。像数据仓库一样,数据湖存储大量当前和历史数据。数据湖与众不同的地方在于它们能够以包括JSON、BSON、CSV、TSV、Avro、ORC和Parquet在内的多种格式存储数据。
通常,数据湖的主要目的是为了分析数据以获得洞察力[链接]。然而,组织有时仅出于低成本存储的目的使用数据湖,认为数据将来可能用于分析。
您可能会想,“数据湖是数据库吗?”数据湖是一个存储多种方式数据的存储库,包括数据库。借助现代工具和技术,数据湖还可以形成数据库的存储层。Starburst、Presto、Dremio和Atlas Data Lake等工具可以为您提供数据湖中存储的数据的类似数据库的视图。在许多情况下,这些工具可以像数据仓库一样支持相同的分析工作负载。
数据湖存储大量结构化、半结构化和非结构化数据。它们可以包含从关系数据到JSON文档、PDF到音频文件的一切。
数据无需转换即可添加到数据湖中,这意味着数据可以非常高效地添加(或“摄取”),无需事先规划。
数据湖的主要用户可能因数据的结构而异。当数据更加结构化时,业务分析师将能够获得洞察力。当数据更加非结构化时,数据分析可能需要开发人员、数据科学家或数据工程师的专业知识。
数据湖的灵活特性使得业务分析师和数据科学家可以寻找意外模式和洞察力。数据的原始性及其体积使用户能够解决他们最初配置数据湖时可能没有意识到的问题。
数据湖中的数据可以使用各种OLAP系统进行处理,并使用BI工具进行可视化。
数据湖是一种经济高效的存储大量数据的方式。当您希望以原始形式获得当前和历史数据的洞察力,而不需要对其进行转换和迁移时,请使用数据湖。数据湖还支持机器学习和预测分析。
与数据仓库一样,数据湖并不旨在满足应用程序的交易和并发需求。
数据湖可以提供存储和计算能力,可以是独立提供,也可以一起提供。
以下是一些提供灵活和可扩展存储以构建数据湖的技术示例
其他技术可以组织和查询数据湖中的数据,包括
数据库、数据仓库和数据湖都用于存储数据。那么它们之间的区别是什么?
数据库、数据仓库和数据湖之间的主要区别是
下表总结了数据库、数据仓库和数据湖之间的相似点和差异。
数据库 | 数据湖 | 数据仓库 | |
---|---|---|---|
工作负载 | 操作和事务性 | 分析性 | 分析性 |
数据类型 | 结构化或半结构化 | 结构化、半结构化和/或非结构化 | 结构化和/或半结构化 |
模式灵活性 | 根据数据库类型,采用刚性或柔性架构 | 导入数据时不需要模式定义(读取时模式) | 导入数据时使用预定义和固定的模式定义(写入和读取时模式) |
数据新鲜度 | 实时 | 根据ETL处理频率,可能不是最新的 | 根据ETL处理频率,可能不是最新的 |
用户 | 应用程序开发者 | 业务分析师、应用程序开发者和数据科学家 | 业务分析师和数据科学家 |
优点 | 存储和更新数据的快速查询 | 易于数据存储简化了原始数据的导入 之后应用模式使业务分析师处理数据变得容易 分离存储和计算 | 固定的模式使业务分析师处理数据变得容易 |
缺点 | 可能具有有限的分析能力 | 需要努力组织和准备数据以供使用 | 设计和发展模式可能很困难 计算扩展可能需要不必要的存储扩展,因为它们紧密耦合 |
几乎每个交互式应用程序都需要一个数据库。
当组织想要从多个来源分析其数据时,他们可以选择使用数据仓库、数据湖或两者来补充他们的数据库。在确定数据湖和/或数据仓库是否适合您的组织时,请考虑以下问题
MongoDB Atlas是一种一键式全托管数据库即服务,它支持创建MongoDB数据库。MongoDB数据库具有灵活的模式,支持结构化或半结构化数据。
在许多情况下,MongoDB数据平台提供的支持足以满足分析需求,无需数据仓库或数据湖。MongoDB提供的支持分析的一些功能包括
数据库、数据仓库和数据湖各自有其用途。几乎每个现代应用程序都需要数据库来存储当前的应用数据。想要分析其应用程序当前和历史数据的组织可以选择使用数据库、数据仓库或两者兼而有之。
今天就开始使用一个免费的Atlas数据库。
数据库存储支持应用程序运行所需当前数据,而一个数据仓库存储一个或多个系统的当前和历史数据,以预定义和固定的模式存储,用于分析数据。
数据湖用于存储一个或多个系统的当前和历史数据。数据湖以原始(未转换)形式存储数据,允许开发人员、数据科学家和数据工程师执行即席分析。
不,数据仓库并未死亡。对数据分析的需求以帮助企业获得洞察和做出决策并不会消失。
数据湖是数据仓库的替代方法。当组织难以处理其数据源的多样性和不断变化时,数据湖可以成为数据仓库的有力补充。