术语 NoSQL 是“not only SQL”(不仅是 SQL)的缩写,指的是以非表格格式存储数据的非关系型数据库,而不是使用关系型数据库之类的基于规则的关系型表来存储数据的非关系型数据库。NoSQL 数据库使用灵活的架构模型,该模型支持各种非结构化数据,例如文档、键值、宽列、图表等。
组织选择 NoSQL 数据库是因为其灵活性、高性能、横向可伸缩性和易于开发。
了解 Google Cloud 的 NoSQL 数据库 Bigtable、Memorystore 和 Firestore 如何帮助您增强应用并提供出色的客户体验,而无需担心可伸缩性、可靠性或频繁的数据更改。
NoSQL 数据库主要有五种类型:
文档数据库也称为面向文档的数据库或文档存储区,用于存储和查询半结构化数据。与开发者在应用代码中使用的数据对象类似,数据存储在类似 JSON 的文档中,这样无需引用主架构即可更轻松地创建和更新应用。文档数据库最常用于博客平台、电子商务、实时分析和内容管理系统。
键值对数据库(也称为键值对存储空间)是最简单的 NoSQL 数据库类型。数据以“键值对”结构存储,其中唯一键与字符串、数字、布尔值或复杂对象等值配对。您可以使用键来存储或检索其关联值。键值对存储区最常用于 Web 应用中的用户偏好设置、购物车和用户个人资料。
面向列的数据库或宽列存储区以行的形式存储和读取数据,并以一组列的形式进行整理。虽然与关系型数据库的表格格式类似,但宽列存储区中的列名称和格式可能会因单个表中的行而异。它们非常适合分析用例,在这类用例中,您可能需要在数据库中的特定列进行查询,然后快速聚合指定列的值。宽列存储区最常用于目录、欺诈检测和推荐引擎。
图表数据库将数据整理为图表中的节点,重点关注数据元素之间的关系。节点(边缘)之间的连接存储为一级元素,从而以更丰富的形式表示数据关系,同时简化存储和导航。图表数据库最常用于关系映射系统,包括社交媒体平台、预订系统、欺诈检测系统和物流应用。
内存中数据库将数据存储在内存中,以便为实时应用提供超低延迟时间。Redis 和 Valkey 是内存 NoSQL 数据库的示例。内存中数据库最常用于缓存、消息传递、流式传输和实时分析。
NoSQL 功能是您选择的数据库所独有的功能。然而,它们通常具有若干相似的高级品质:
这些特征使得非关系型数据库非常适合需要大规模、可靠性、高可用性和频繁数据更改的应用。
灵活的数据模型和架构
NoSQL 数据库可存储许多不同类型的数据,并提供灵活的架构,非常适合半结构化和非结构化数据。您可以轻松调整它们以适应新的数据类型,并改进架构以满足任何不断变化的数据要求。
敏捷开发
NoSQL 的灵活性是敏捷应用开发的有益补充。NoSQL 数据库能够以原生格式存储多种类型的数据,支持您随时定义和调整数据模型,让开发者能够快速上手,减少在数据转换上花费的时间,以及快速迭代。
可伸缩性
与关系型数据库不同,NoSQL 数据库可以随着数据和流量的增长轻松增加容量,大多数情况下无需停机。云端数据库更易于按需扩缩,提供自动扩缩功能和灵活的价格模式。
海量数据存储
NoSQL 旨在处理复杂的大型数据集,使组织可以将其用于大数据、实时分析和 IoT 使用场景。
高可用性
NoSQL 数据架构采用分布式设计,不存在单点故障。它们还可以轻松复制,使其更能抵御计划外的服务中断和其他中断。
查询速度更快
与已经过标准化以减少数据重复的关系型数据库不同,NoSQL 是针对快速查询进行了优化。它通常不需要复杂的联接,这意味着数据库查询可以更快地返回结果。
虽然 NoSQL 数据库近年来日益普及,但与关系型数据库相比,使用它们也存在一些缺点。它们仍然相对较新,可能缺乏关系型数据库的成熟度。总体而言,NoSQL 的开发者专业知识更少,可用的工具和产品更少,针对未载明的问题的支持也更少。
此外,NoSQL 没有像 SQL 那样的通用语言,每个数据库可能有自己的语言用于查询和管理数据。这些语言通常与 SQL 标准相似,但不完全兼容。
在许多情况下,NoSQL 数据库缺少 SQL 数据库标准的数据完整性保护措施和高水平的数据一致性。但有些支持 ACID 事务,例如 Firestore 和 MongoDB Atlas。
NoSQL 数据库通常不适合运行复杂查询和联接的应用。跨多个节点管理索引和查询不仅速度缓慢,而且可能无法返回一致的结果。
尽管如此,最终一致性模型足以满足大多数 NoSQL 使用场景的需求,其中微小的毫秒级延迟并不重要。对许多应用而言,高可用性和速度远远超过对强大的全局一致性的需求。
那么,为什么组织在一些应用中使用非关系型 NoSQL 数据库,而在其他应用中则坚持使用关系型 SQL 数据库呢?选择合适的数据库通常取决于您的使用场景。下面介绍了 SQL 与 NoSQL 的使用场景。
SQL 数据库在管理结构化、关系型数据和复杂查询方面表现出色。SQL 数据库与 ACID 兼容,因此适合事务性信息。
SQL 使用场景:
NoSQL 数据库在需要大量全球分布的用户来提供高度个性化体验的使用场景中表现出色。NoSQL 数据库的敏捷性为这些交互式应用提供了最佳的服务。
NoSQL 数据库优先考虑高可用性、提供一致的性能、快速扩容(无需停机),并且能够处理大量不同类型的数据。
NoSQL 数据库的这些特征使得非关系型数据库非常适合需要大规模、可靠性和高可用性的应用。
NoSQL 最常见的使用场景包括: