跳至主要内容

数据库类型:关系型、NoSQL、云、向量

主要的数据库类型包括用于结构化数据的关系型数据库、强调灵活性的 NoSQL 数据库、用于远程访问的云数据库,以及服务于机器学习应用的向量数据库。
Moez Ali
Moez Ali

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

在当今数据驱动的世界中,我们面临一个重大挑战:如何高效地存储、管理并从数据中提取有意义的洞见?数据库提供了解决方案,作为结构化的存储库,用于组织和访问信息。

然而,为了满足各种数据结构和用例的独特需求,不同类型的数据库应运而生。

本文将带您了解数据科学领域常见的四大类数据库:关系型数据库、NoSQL 数据库、云数据库以及向量数据库。

如果您想学习数据库设计,请查看这门课程:Database Design。

数据库的重要性

数据库是数字世界中的关键工具。它们是有组织的数据集合,便于信息的存储、检索、管理和操作。

从本质上讲,数据库旨在以结构化格式保存数据,使用户和应用能够按需高效地访问和更新信息。

数据库的重要性几乎贯穿所有领域,尤其在数据科学中尤为关键。数据科学项目通常需要分析海量数据,以获取洞见、进行预测或支持决策。

如果没有数据库,管理这些数据——尤其是在其规模和复杂性不断增长时——将既繁琐又容易出错。数据库提供了系统化的存储方式,并确保数据的完整性、安全性和可访问性。

例如,一家零售公司需要追踪销售、客户互动、库存和供应商信息。数据库是公司运营的骨干,帮助其分析趋势、预测需求、优化库存水平并提升客户体验。

如果没有数据库,公司将难以处理每天产生的大量数据,更别提利用这些数据做出明智的业务决策了。

数据库类型:快速概览

不同类型的数据库反映了各类用例的多样化需求以及所处理数据的复杂性。不同数据库类型的开发旨在优化性能、增强功能,并服务于特定用例。

这种多样性不仅是技术繁荣的体现,也是为了解决不同用例中出现的独特挑战和要求。不同数据库类型的需求来源于数据结构、访问模式、可扩展性需求以及一致性要求的差异。

例如,传统业务应用通常依赖结构化数据,这类数据非常适合具有预定义模式的表,因此关系型数据库是理想选择。

然而,随着大数据、社交网络和实时分析的兴起,关系型数据库在处理非结构化数据、横向扩展或管理高度关联数据方面的局限性日益显现。

这促生了NoSQL 数据库,它们为不符合传统数据库刚性结构的某些数据类型提供了灵活性、可扩展性和性能优势。如果您想进一步了解 SQL 与 NoSQL 数据库的比较,请阅读这篇教程:SQL vs NoSQL Databases。

同样,物联网和对时间敏感的应用也推动了时序数据库的发展,以高效处理时间型数据。更多内容请参阅这篇全面博文:time series databases。

云数据库也日益受到重视,通过将数据托管在远程服务器上提供可扩展性与可访问性。

此外,向量数据库为机器学习应用的特定需求而生,能够高效存储和查询高维向量。

流行的数据库管理系统

DB-Engines 2024 年 5 月排名根据流行度列出了顶级数据库管理系统(DBMS)。该排名每月更新,涵盖 420 个系统。截至 2024 年 5 月,排名前四的数据库均为关系型:Oracle、MySQL、Microsoft SQL 和 PostgreSQL。

来自 db-engines 的截图,显示前 10 大数据库管理系统

来源:db-engines

值得注意的是,MongoDB 和 Redis 等 NoSQL 数据库在排名中也占据强势位置,反映了对能够处理非结构化数据和高并发应用的灵活、可扩展解决方案的日益增长的需求。这些 NoSQL 系统呈现显著的同比增长,显示出数据库架构正向更加多元化转变。

该排名还显示出基于云的数据库(如 Snowflake)的人气上升,它提供了完全托管、可扩展的数据仓库解决方案。Elasticsearch 这一强大的搜索与分析平台同样排名上升,凸显了搜索与分析能力在现代数据管理中的重要性。

数据库流行趋势

让我们看看下面的折线图,它展示了 2014 至 2024 年间数据库流行度的动态格局。

来自 db-engines 的截图,显示所有数据库管理系统的历史趋势流行度图

来源:db-engines

一个关键结论是关系型数据库管理系统(RDBMS)如 Oracle、MySQL、Microsoft SQL Server 和 PostgreSQL 的长期主导地位。它们在过去十年中一直稳居前列,突显了其在处理结构化数据和支持各类应用中复杂查询方面的重要性。

不过,图表也揭示了近年的显著变化。尽管 RDBMS 的流行度逐步下滑,MongoDB 和 Redis 等 NoSQL 数据库却实现了大幅增长。这一上升趋势反映了为管理非结构化数据和高并发应用而采用这些灵活、可扩展解决方案的比例不断提高。

另一个有趣的趋势是云数据库的崛起。Databricks 这一基于云的数据工程与机器学习平台人气飙升,体现出对提供可扩展性、易用性和强大分析能力的云端解决方案的需求不断增长。

同样地,Snowflake 这一完全托管的云数据仓库增长显著,凸显了其可扩展、易用架构的吸引力。

关系型数据库

关系型数据库以行和列组成的表来存储数据。每一行代表一个唯一记录,每一列表示该记录的某个属性。

可以把它们想象成精心组织的电子表格,数据存储在由行(记录)和列(属性)组成的表中。每一行代表一个独立实体,如客户或产品;每一列记录一个特定特征,如姓名、地址或价格。

关系型数据库的真正强大之处在于其通过关系将这些表连接起来的能力。通过外键建立的这些关系,使我们能够关联不同表中的数据,形成统一的信息视图。

例如,在客户关系管理(CRM)系统中,客户表可能与订单表相连,从而让我们追踪客户的购买历史。

结构化查询语言(SQL)

与关系型数据库交互时,我们使用结构化查询语言(SQL)。这门强大的语言使我们能够查询、插入、更新和删除数据,并执行诸如多表连接等复杂操作。SQL 的结构化特性通过 ACID 属性确保数据完整性与一致性:

  • 原子性:事务中的所有操作被视为一个整体,要么全部提交,要么全部回滚。
  • 一致性:数据在整个事务过程中保持有效状态,遵循预定义的约束与规则。
  • 隔离性:事务独立执行,仿佛它是数据库中唯一正在进行的操作。
  • 持久性:一旦事务提交,其变更将是永久性的,即使发生系统故障也不丢失。

如果您想深入学习 SQL,请查看这个包含七门课程的技能路径:SQL Fundamentals。

何时使用关系型数据库

在以下需求下,关系型数据库尤为适合:

  • 强一致性:确保所有用户同时看到相同的数据。
  • 复杂查询:通过多表连接获取洞见。
  • ACID 合规:为关键应用提供可靠的事务处理保障。

但在以下场景中,它们可能不是最佳选择:

  • 非结构化数据:处理难以整齐放入表格格式的数据(如社交媒体帖子、传感器数据)。
  • 大规模横向扩展:当应用需要在众多服务器间进行水平扩展。

流行的关系型数据库

一些常见的 RDBMS 选择包括:

  • MySQL:开源,易用、快速、可靠,常用于 Web 应用。
  • PostgreSQL:开源且高度可扩展,提供高级特性并高度遵循 SQL 标准。
  • Oracle Database:功能全面的企业级解决方案,以性能、可扩展性和安全性著称。
  • Microsoft SQL Server:与微软生态深度集成,提供丰富的商业智能与分析工具。

如果您想学习如何在 Python 中使用关系型数据库,请查看这门免费课程:Introduction to Databases in Python。

NoSQL 数据库

NoSQL 数据库,即 “not only SQL”,在需要灵活性、可扩展性和高性能的场景下,已成为关系型数据库的有力替代方案。

与关系型数据库不同,NoSQL 数据库无需固定模式即可处理非结构化或半结构化数据。这意味着我们可以以多种格式存储数据,例如 JSON 文档、键值对或图结构,而无需事先定义严格的结构。

这类数据库通常具备跨多台服务器和集群进行横向扩展的能力,适合分布式数据环境。

查询 NoSQL 数据库

与使用结构化查询语言(SQL)的关系型数据库不同,NoSQL 数据库并没有统一的查询语言。相反,每种 NoSQL 数据库通常都有针对其特定数据模型和结构而定制的查询语言或 API。

尽管 NoSQL 数据库强调灵活性和可扩展性,但它们往往会放宽关系型数据库中的部分 ACID 属性。例如,一些 NoSQL 数据库优先采用最终一致性而非即时一致性,这意味着变更可能不会立刻在所有节点上反映出来。这种取舍有助于提升性能与可扩展性,但在设计依赖严格数据一致性的应用时需谨慎权衡。

如果您想学习如何查询 NoSQL 数据库,请查看这门课程:Introduction to NoSQL。

何时使用 NoSQL 数据库

NoSQL 数据库特别适用于以下场景:

  • 强调敏捷性:快速迭代的开发周期和不断演进的数据模型。
  • 优先考虑扩展:数据呈指数级增长或流量高的应用。
  • 注重性能:需要快速读/写操作的实时应用。
  • 数据类型多样:多种数据类型(如社交媒体帖子、传感器数据)。

常见用例包括:

  • 大数据分析:处理海量数据集。
  • 实时应用:提供分秒级的信息更新。
  • 内容管理系统:存储并管理多样化内容。
  • 物联网(IoT):处理持续的数据流。
  • 个性化引擎:定制用户体验。

尽管优势明显,但对于需要强事务保障或复杂关系查询的应用,NoSQL 数据库可能并不理想。许多组织采用混合策略,同时使用关系型和 NoSQL 数据库,以发挥各自优势。

流行的 NoSQL 数据库

一些最受欢迎的 NoSQL 数据库包括:

  • MongoDB:面向文档的数据库,适合存储具备动态模式的类 JSON 文档。
  • Redis:键值存储,常用于缓存与快速的内存数据存储。
  • Cassandra:列族存储,以可扩展性和容错性著称。
  • Neo4j:图数据库,擅长管理和查询高度关联的数据。

如果您想了解四大 NoSQL 数据库的更多信息,请查看这门课程:NoSQL Concepts。

云数据库

云数据库借助云计算平台的海量资源与可扩展性,彻底改变了数据管理方式。这些数据库驻留在远程服务器上,通过互联网访问,免除了组织对自有硬件和基础设施的投资与维护。

云数据库采用按需付费模式,即只为实际使用的资源付费。这消除了传统本地数据库的前期成本和持续维护费用。云服务商负责底层基础设施(包括服务器、存储和网络),而您专注于构建与管理应用。

如果您想了解云计算,请查看这门课程:Understanding Cloud Computing。

查询云数据库

查询云数据库通常与查询本地数据库使用相同的工具和语言。对于云中的关系型数据库,我们会使用 SQL 与数据交互。云中的 NoSQL 数据库通常拥有与本地对应产品类似的自有查询语言或 API。

云服务商通常还提供额外的工具与服务以简化数据库管理与查询,例如基于 Web 的控制台、命令行界面以及适配多种编程语言的 SDK。

何时使用云数据库

在以下情况下,云数据库是极佳选择:

  • 至关重要的可扩展性:轻松应对需求变化。
  • 优先考虑灵活性:可选数据库类型丰富。
  • 重视全球可达性:为全球用户提供低延迟访问。
  • 关注成本效益:按需付费与弹性资源。

流行的云数据库

主要云服务商提供多种数据库服务,各具优势与特长:

  • Amazon RDS:支持 MySQL、PostgreSQL、Oracle 等多种引擎,提供托管的关系型数据库服务。
  • Google Cloud SQL:全托管服务,可在云端运行 MySQL、PostgreSQL 和 SQL Server 数据库。
  • Azure SQL Database:在 Microsoft Azure 云中提供可扩展、智能、全托管的数据库服务。

您可以通过这门课程进一步了解云数据库:AWS Cloud Technology and Services。

向量数据库

向量数据库作为专用工具,旨在应对人工智能与机器学习应用的独特需求。

向量数据库用于存储、索引和管理向量嵌入,这些是机器学习模型中常用的高维数据表示。它们支持高效的相似度检索,数据库可基于余弦相似度或欧氏距离等度量,快速找出与给定查询向量“接近”的向量。

这些特性使其适用于图像识别、推荐系统和自然语言处理等应用。它们利用索引结构,针对基于距离度量的相似向量检索进行了优化。

如果您想进一步了解向量数据库,请阅读这篇文章:An Introduction to Vector Databases for Machine Learning​​。

查询向量数据库

查询向量数据库通常包括以下步骤:

  1. 对查询进行嵌入:将输入查询(如一张图片或一段文本)使用合适的嵌入模型转换为向量。
  2. 相似度搜索:向量数据库在向量空间中执行相似度检索,寻找查询向量的近邻。为确保大规模效率,常采用近似最近邻(ANN)算法。
  3. 返回结果:数据库返回识别出的最近邻及其关联的元数据或原始数据对象。

不同的向量数据库可能提供多种查询选项和参数,例如指定返回的近邻数量或设置距离阈值。有些数据库还支持基于元数据进行过滤,或将向量检索与传统的标量过滤相结合。

何时使用向量数据库

向量数据库尤其适用于以下场景:

  • 相似度搜索至关重要:如图像识别或推荐系统。
  • 涉及高维数据:传统数据库难以高效处理。
  • 需要实时性能:如推荐系统等 AI 应用。

流行的向量数据库

  • Faiss:由 Facebook AI Research 开发,提供高效的稠密向量相似度搜索与聚类。
  • Milvus:开源向量数据库,支持可扩展的相似度检索与 AI 应用。
  • Pinecone:向量数据库服务,简化在生产环境中部署与扩展相似度检索。

如果您想了解哪些向量数据库更受欢迎,请阅读这篇文章:Top 5 Best Vector Databases。

其他类型的数据库

尽管关系型、NoSQL、云和向量数据库覆盖了广泛用例,但仍有其他多种数据库类型存在,各自针对特定数据模型和访问模式。下面我们简要了解其中一些专用解决方案。

时序数据库

时序数据库专为存储与分析带有时间戳的数据(如传感器读数、股价或服务器日志)而优化。它们擅长高吞吐数据写入,并能根据时间范围高效查询数据点。常见选择包括 InfluxDB、TimescaleDB 和 Prometheus。

面向对象数据库

面向对象数据库(OODBs)以对象形式存储数据,类似面向对象编程。这可以简化复杂数据结构和关系的建模。但由于标准化与查询优化方面的挑战,OODBs 并未得到广泛采用。常见选项包括 ObjectDB 和 Versant Object Database。

图数据库

图数据库擅长表示与查询实体之间的关系。它们以节点(实体)和边(关系)存储数据,适用于社交网络、推荐引擎、欺诈检测系统和知识图谱等场景。常见选择包括 Neo4j、Amazon Neptune 和 JanusGraph。

层次数据库

层次数据库以树状结构组织数据,记录之间为父子关系。此结构适用于某些特定应用,但对复杂数据模型而言可能不够灵活。尽管在历史上具有重要意义,但在现代应用中已较为少见。

网络数据库

网络数据库与层次数据库相似,但允许记录之间存在更复杂的关系。虽然更具灵活性,但在管理和查询上也更具挑战。在大多数应用中,网络数据库已在很大程度上被关系型数据库和图数据库取代。

总结

在本概览中,我们探讨了多样化的数据库版图,每种类型都旨在解决特定的数据难题。从关系型数据库的结构化数据,到 NoSQL 的灵活性、云方案的可扩展性,以及向量数据库的专门能力,我们看到这些工具如何支撑起现代数据管理。

选择合适的数据库至关重要,这取决于您对各类型数据库独特优势与权衡的理解。通过认真评估您的具体需求与约束,您便能选出最能赋能数据驱动应用与项目的数据库。

如果您想更深入地学习数据库,可以尝试这个包含四门课程的技能路径:SQL for Database Administrators。

Moez Ali

作者

Moez Ali

数据科学家,PyCaret 的创始人兼作者

数据库常见问题

数据库管理系统的四种主要类型是什么?

四大类别是关系型、NoSQL、云和向量数据库。

Excel 是数据库吗?

对于小型数据集,Excel 可以充当简单的数据库,但它缺乏专用数据库管理系统所具备的强大功能与可扩展性。

我该如何为我的项目选择合适的数据库?

请考虑以下因素:数据结构(结构化 vs 非结构化)、可扩展性需求、性能要求、预算,以及不同数据库类型提供的特定功能。

NoSQL 数据库是否优于关系型数据库?

没有单一的“更好”类型。最佳选择取决于您的具体需求和用例。关系型数据库在结构化数据和复杂查询方面表现出色,而 NoSQL 数据库在处理非结构化数据时提供灵活性与可扩展性。

SQL 与 NoSQL 的主要区别是什么?

SQL 数据库使用结构化查询语言(SQL)且具有预定义模式;NoSQL 数据库则针对非结构化数据采用动态模式。SQL 数据库通常纵向扩展,而 NoSQL 数据库倾向于横向扩展。

主题