SQL 数据库与 NoSQL 数据库:有什么区别?

蓝色抽象三维线条重叠

作者

Benjamin Anderson

STSM, IBM Cloud Databases

Brad Nicholson

Senior Database Engineer, IBM Cloud Databases

IBM Blog

SQL 是一种具有数十年历史的关系数据库访问方法,大多数数据库用户都熟悉这种方法。尽管非结构化数据的存储体量、处理能力与分析方式多年来不断演变,但我们也看到各类数据库技术的兴起,它们能更好地适配新型应用场景的需求。这些数据库通常称为 NoSQL。

SQL 和 NoSQL 的不同之处在于:它们是关系型 (SQL) 还是非关系型 (NoSQL);它们的架构是预定义的还是动态的;它们的扩展方式;它们包含的数据类型;以及更适用于多行事务还是非结构化数据处理。

 

辅以专家洞察分析的最新科技新闻

通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。每份时事通讯都包含取消订阅链接。您可以在此管理您的订阅或取消订阅。更多相关信息,请参阅我们的 IBM 隐私声明

什么是 SQL 数据库?

SQL,即“结构化查询语言”,是一种编程语言,自 20 世纪 70 年代以来,它被广泛用于关系数据库管理系统 (RDBMS) 中的数据管理。在存储成本高昂的早期,SQL 数据库专注于减少数据重复。

时至今日,SQL 仍然被广泛用于查询关系数据库,其中数据存储在以各种方式链接的行和表中。一个表记录可以相互链接或链接到许多其他表记录,或者许多表记录可能与另一个表中的许多记录相关。这些关系数据库提供快速数据存储和恢复功能,可以处理大量数据和复杂的 SQL 查询。

AI Academy

数据管理是生成式 AI 的秘诀吗?

深入了解为什么高质量数据对于成功使用生成式 AI 至关重要。

什么是 NoSQL 数据库?

NoSQL 是一种非关系型数据库,这意味着它允许使用与 SQL 数据库不同的结构(不是行和列),并且能够更灵活地使用最适合数据的格式。“NoSQL”一词直到 21 世纪初才出现。这并不意味着系统不使用 SQL,因为 NoSQL 数据库有时确实支持某些 SQL 命令。更准确地说,“NoSQL”有时被定义为“不仅是 SQL”。

要掌握相关基础知识,请观看来自 Jamil Spain 的以下视频:

SQL 如何工作

SQL 数据库在处理结构化数据(即变量和实体之间存在关系的数据)方面非常有价值。

可扩展性

通常,SQL 数据库可以垂直扩展,这意味着您可以通过迁移到可增加更多 CPU、RAM 或 SSD 功能的更大服务器来增加服务器的负载。虽然垂直扩展是最常用的方式,但 SQL 数据库也能通过分片或分区逻辑实现水平扩展,只是这类功能的支持程度尚不完善。

结构

SQL 数据库以关系和表格的方式组织数据,使用具有列或属性和记录行的表。因为 SQL 使用严格预定义的模式,它需要在开始使用 SQL 数据库之前组织和构建数据。

属性

采用 SQL 的关系型数据库管理系统必须具备 ACID 四大特性。这些特性将确保事务成功处理,并且 SQL 数据库具有高度的可靠性:

  • 原子性:所有事务必须完全成功或完全失败,即使在系统故障的情况下也不能部分完成。
  • 一致性:数据库必须遵循校验规则,确保每个操作步骤都有效且防止数据损坏。
  • 隔离:并发事务不会相互影响。
  • 持久性:事务是最终的,即使是系统故障也无法“回滚”完整的事务。

支持

因为 SQL 数据库拥有悠久的历史,所以它们拥有庞大的社区,并且在线有许多稳定代码库的示例。有许多专家可以为 SQL 和编程关系数据提供支持。

SQL 数据库示例

NoSQL 的工作原理

与 SQL 不同,NoSQL 系统允许您使用数据库中的不同数据结构。由于它们允许对非结构化数据采用动态模式,因此无需预先规划和预先组织数据,也更容易进行修改。NoSQL 数据库允许您添加新属性和字段,并且可以在数据库中使用各种语法。

可扩展性

NoSQL 数据库可以更好地水平扩展,这意味着可以根据需要添加额外的服务器或节点来增加负载。

结构

NoSQL 数据库不是关系数据库,因此它们不仅仅将数据存储在行和表中。相反,它们通常属于以下四种类型的结构之一:

  • 列式存储,数据存储在单元格中,这些单元格按列分组(列数几乎无限),而非按行分组。
  • 键值存储,使用关联数组(也称为字典或地图)作为数据模型。该模型将数据表示为键值对的集合。
  • 文档存储:使用文档以标准格式保存和编码数据,包括 XML、YAML、JSON(JavaScript 对象表示法)和 BSON。它的一个优点是单个数据库中的文档可以具有不同的数据类型。
  • 图形数据库,用图形表示数据,显示不同数据集之间的关系。Neo4j、RedisGraph(Redis 内置的图形模块)和 OrientDB 是图形数据库的例子。

属性

SQL 需要 ACID 特性,而 NoSQL 遵循 CAP 理论(尽管一些 NoSQL 数据库,例如 IBM 的 DB2、MongoDB、AWS 的 DynamoDB 和 Apache 的 CouchDB)也可以集成并遵循 ACID 规则。

CAP 定理指出,分布式数据系统只能通过权衡机制,在同一时间内确保 CAP 这三个特性中的两项:

  • 一致性:每个请求要么收到最新结果,要么收到错误信息。MongoDB 就是强一致系统的例子,而 Cassandra 等其他系统则提供最终一致性。
  • 可用性:每个请求都会产生非错误结果。
  • 分区容错性:节点间的任何延迟或丢失都不会中断系统运营。

支持

尽管 NoSQL 技术迅速获得了市场采纳,但其用户社区规模相对较小,因此获得的技术支持也较为有限。与多数 SQL 语言的闭源特性形成对比的是,NoSQL 用户确实能从开源生态中获益。

NoSQL 数据库示例

何时使用 SQL 与 NoSQL

何时使用 SQL

在处理相关数据时,SQL 是一个不错的选择。关系数据库高效、灵活,任何应用程序都可以轻松访问。关系数据库的优势在于,当一个用户更新特定记录时,数据库的每个实例都会自动刷新,且可实时提供该信息。

SQL 和关系数据库可以轻松处理大量信息,根据需要进行扩展,并允许灵活访问数据,例如,只需更新一次数据,而无需更改多个文件。它也最适合评估数据完整性。由于每项数据均存储于单一位置,无需担心旧版本数据引发混淆。

大多数大型科技公司都在使用 SQL,包括 Uber、Netflix 和 Airbnb。甚至像 Google、Facebook、Amazon 这样自建数据库系统的大公司,也使用 SQL 来查询和分析数据。

何时使用 NoSQL

SQL 的价值在于确保数据的有效性,而 NoSQL 的优势则在于大数据的快速可用性。当公司因需求变化而需要扩展时,这也是一个不错的选择。NoSQL 数据库具有易用性、灵活性与高性能三大优势。

当存在大量(或不断变化)的数据集时、处理灵活的数据模型或不适合关系模型的需求时,NoSQL 也是不错的选择。处理大量非结构化数据时,文档数据库(例如 CouchDB、MongoDB 和 Amazon DocumentDB)是理想之选。若需快速访问键值存储库且无需强完整性保证,Redis 或许是理想选择。当需要在大量数据中进行复杂或灵活的搜索时,Elastic Search 是一个不错的选择。

可扩展性是 NoSQL 数据库的显著优势。与 SQL 不同,它们内置的分片和高可用性要求允许横向扩展。此外,NoSQL 数据库(例如 Facebook 开发的 Cassandra)可处理分布在许多服务器上的大量数据,没有单点故障,并提供了最大的可用性。

其他一些大型公司也使用 NoSQL 系统,因为它们依赖于大量不适合关系型数据库的数据,包括 Amazon、Google 和 Netflix。一般来说,数据集越广泛,NoSQL 就越有可能是更好的选择。

SQL、NoSQL 和 IBM

选择或建议数据库是大多数数据库专家的关键责任,而“SQL 与 NoSQL”是做出明智决策的一个有用框架。在选择数据库时,还需重点考量核心数据需求与可接受的权衡方案,以确保满足性能与可用性目标。

IBM Cloud 通过其云原生数据库支持多种 SQL 和 NoSQL 数据库的云托管版本。要获取更多关于选择最佳数据库选项的指导,请查看“数据库领域概述”和“如何在 IBM Cloud 上选择数据库”。

对深入了解各个数据库感兴趣吗?欢迎阅读我们的“数据库深度解析”系列博客文章。

相关解决方案
数据管理软件和解决方案

设计数据战略,消除数据孤岛、降低复杂性并提高数据质量,以获得卓越的客户和员工体验。

深入了解数据管理解决方案
IBM watsonx.data™

watsonx.data 支持您通过开放、混合和已治理数据,利用您的所有数据(无论位于何处)来扩展分析和 AI。

了解 watsonx.data
数据和分析咨询服务

通过 IBM® Consulting 发掘企业数据的价值,建立以洞察分析为导向的组织,实现业务优势。

了解分析服务
采取下一步行动

设计数据战略,消除数据孤岛、降低复杂性并提高数据质量,以获得卓越的客户和员工体验。

深入了解数据管理解决方案 了解 watsonx.data