EventJoin us at AWS re:Invent 2024! Learn how to use MongoDB for AI use cases. Learn more >>

NoSQL 是什么?

免费启动 NoSQL 集群
使用 Atlas 试用 NoSQL 数据库
NoSQL 是什么?

NoSQL 数据库(意即“不仅仅是 SQL”)存储数据的方式与关系表不同。NoSQL 数据库的类型因数据模型而异。主要类型包括文档、键值、宽列和图形。它们提供了灵活的模式,可以随大量数据和高用户负载而轻松扩展。

在本文中,您将了解什么是 NoSQL 数据库,为什么(以及何时!)应该使用它,以及如何开始使用它。

目录
什么是 NoSQL 数据库?

人们使用“NoSQL 数据库”一词时,通常会使用它来指代任何非关系型数据库。有人说“NoSQL”代表“非 SQL”,而另一些人则说“不仅仅是 SQL”。无论哪种方式,大多数人都认为 NoSQL 数据库以更自然、更灵活的方式存储数据。NoSQL 是一种数据库管理方法,而 SQL 只是一种查询语言,与 NoSQL 数据库的查询语言类似。

数据库类型 - NoSQL

随着时间的推移,出现了四种主要的 NoSQL 数据库类型:文档数据库、键值数据库、宽列存储数据库和图形数据库如今,多模型数据库也变得相当流行。

面向文档的数据库

面向文档的数据库将数据存储在文档中,类似于 JSON (JavaScript Object Notation) 对象。每个文档包含成对的字段和值。值通常有多种类型,包括字符串、数字、布尔值、数组甚至其他对象。文档数据库提供了一种灵活的数据模型,非常适合半结构化和典型的非结构化数据集。它们还支持嵌套结构,便于表示复杂的关系或层级化数据。

文档数据库的例子有 MongoDB 和 Couchbase。典型的文档如下:

键值数据库

键值存储是一种较简单的数据库,其中每个项目都包含键和值。每个键都是唯一的,并与单个值相关联。它们用于缓存和会话管理,读写性能很高,因为它们倾向于将内容存储在内存中。例如 Amazon DynamoDB 和 Redis。键值数据库中存储的数据的简单视图如下:

宽列存储

宽列存储将数据存储在表格、行和动态列中。数据存储在表格中。不过,与传统的 SQL 数据库不同,宽列存储非常灵活,不同的行可以有不同的列集。这些数据库可采用列压缩技术来减少存储空间并提高性能。宽行宽列可高效检索稀疏和宽泛的数据。宽列存储的例子有 Apache Cassandra 和 HBase。宽列中存储数据的一个典型示例如下:

nameidemaildobcity
Foo bar12345foo@bar.comSome city
Carn Yale34521bar@foo.com12-05-1972

图形数据库

图形数据库以节点和边缘的形式存储数据。节点通常会存储有关人物、地点和事物(如名词)的信息,而边缘则会存储有关各节点间关系的信息。它们对于高度关联的数据非常有效,因为这些数据的关系或模式最初可能并不十分明显。图数据库的例子有 Neo4J 和 Amazon Neptune。MongoDB 还提供图遍历功能,使用聚合管道的 $graphLookup 阶段。下面举例说明如何存储数据:

图形数据库示例。
多模型数据库

多模型数据库支持多种类型的 NoSQL 数据模型,开发者可根据应用程序需求进行选择。这些数据库具有统一的数据库引擎,可以处理一个数据库实例中的多个数据模型。示例包括 CosmosDB 和 ArangoDB。

数据库类型快速比较 - NoSQL

每种 NoSQL 数据库都提供不同的功能。例如,图表数据库可能更适合分析实体之间的复杂关系和模式,而文档数据库以一种更灵活、更自然的方式来存储和检索文档之类的大量数据。数据库的选择取决于您想要开发的使用案例。

NoSQL 数据库类型比较。

要了解更多信息,请阅读了解不同类型的 NoSQL 数据库

NoSQL 数据库简史

随着存储成本的急剧下降,2000 年代末出现了 NoSQL 数据库。为了避免数据重复而创建难以管理的复杂数据模型的日子已经一去不复返了。为提高开发人员的工作效率,NoSQL 数据库获得了优化。

随着存储成本的迅速降低,应用程序需要存储和查询的数据量也随之增加。这些数据形形色色 - 结构化、半结构化和非结构化 - 提前定义模式几乎是不可能的。NoSQL 数据库允许开发者存储大量非结构化数据,从而为他们提供了很高的灵活性。
NoSQL 数据库简史。

2000 年代初期,Google 发表了一篇关于 BigTable(宽列数据库)的论文,探讨了分布式存储系统的广泛可能性。2009 年,NoSQL 数据库大幅增长,两个关键的面向文档数据库 MongoDB 和 CouchDB 应运而生。

到 2010 年代,出现了不同类型的 NoSQL 数据库,NoSQL 的接受度越来越高,企业变得更加以数据为导向。

此外,敏捷宣言 (Agile Manifesto) 越来越受欢迎,软件工程师正在重新考虑他们开发软件的方式。他们必须快速适应不断变化的需求,快速迭代,并在整个软件堆栈中(一直到数据库)进行更改。NoSQL 数据库为他们提供了这种灵活性。

云计算也越来越流行,开发者开始使用公有云来托管其应用程序和数据。他们希望能够在多个服务器和区域之间分布数据,以使其应用程序具有弹性,可以横向扩展而不是纵向扩展以及对数据进行智能地理定位。一些 NoSQL 数据库,如 MongoDB Atlas,提供这些功能。由于数字化的指数级增长,企业现在收集尽可能多的非结构化数据。为了能够从这样的 大数据 中分析和得出可行的 实时见解,企业需要超越简单存储的现代解决方案。企业需要一个可以轻松扩展转换可视化数据 的平台;创建仪表盘、报告和图表;以及使用 AI 和商业智能工具 以提高企业生产力。由于其灵活和分布式特性,NoSQL 数据库(例如 MongoDB)在这些任务中大放异彩。

NoSQL 数据库功能

NoSQL 数据库是灵活、可扩展的分布式数据库。不同类型的 NoSQL 数据库有其独特的功能。

NoSQL 功能说明。

从高层次来看,NoSQL 数据库通常具有以下功能:

BASE 合规

NoSQL 数据库符合 BASE 标准,即 b(基本)a(可用性)s(软状态)e(最终一致性)。基本可用性是指系统容忍部分故障(如节点丢失)的能力。软状态是指系统允许暂时的不一致性,最终随着时间的推移自动实现一致性。BASE 合规可确保高可用性、更快的数据处理速度、可扩展性和灵活性。但是, MongoDB 也可以配置为提供多文档 ACID 合规

详细了解 NoSQL 数据库的优势

关系数据库与 NoSQL数据库示例

假设我们要存储有关用户及其爱好的信息。我们需要存储用户的名、姓、手机号码、城市和爱好。

在关系数据库管理系统 (RDBMS) 中,我们可能会创建两个表:一个用于“用户”,另一个用于“爱好”。

为了检索用户及其爱好的所有信息,需要将“用户”表和“爱好”表中的信息连接在一起。

我们为 NoSQL 数据库设计的数据模型将取决于我们选择的 NoSQL 数据库类型。我们考虑如何将有关用户及其爱好的相同信息存储在文档数据库(如 MongoDB)中。

为了检索有关用户及其爱好的所有信息,可以从数据库中检索单个文档。这样不需要连接,从而实现更快的查询。

RDBMS 与 NoSQL(文档)

要查看此数据建模示例的更详细版本,请阅读将术语和概念从 SQL 映射到 MongoDB

RDBMS 和 NoSQL 数据库的区别

关系数据库管理系统和非关系数据库之间存在多种差异。主要区别之一是数据在数据库中的建模方式。下面列出了每个功能的一些主要区别:

数据建模

NoSQL:数据模型根据所使用的 NoSQL 数据库类型(如键值、文档、图表和宽列)而有所不同,模型适用于半结构化和非结构化数据。

RDBMS:RDBMS 使用表格数据结构,数据表示为一组行和列,模型适用于结构化数据。

模式

NoSQL:它提供了一个灵活的模式,其中每组文档/行-列/键-值对可以包含不同类型的数据。由于灵活性,如果需要,更改模式会更容易。

RDBMS:这是一个固定模式,其中每行都应包含相同的预定义列类型。存储数据后,很难更改模式。

查询语言

NoSQL:它根据所使用的 NoSQL 数据库类型而有所不同。例如,MongoDB 有 MQL,Neo4J 使用 Cypher。

RDBMS:这使用结构化查询语言 (SQL)。

可扩展性

NoSQL:NoSQL 专为垂直和水平扩展而设计。

RDBMS:RDBMS 专为垂直扩展而设计。但是,它可以增强水平扩展的有限功能。

数据关系

NoSQL:关系可以是嵌套、显式或隐式。RDBMS:关系通过外键定义,并使用连接进行访问。

事务类型

NoSQL:事务符合 ACID- 或 BASE 标准。RDBMS:事务符合 ACID 标准。

性能

NoSQL:NoSQL 适用于实时处理、大数据分析和分布式环境。

RDBMS:RDBMS 适用于读取密集型和事务工作负载。

数据一致性

NoSQL:这提供了高数据一致性。

RDBMS:在大多数情况下,这提供了最终一致性。

分布式计算

NoSQL:引入 NoSQL 的主要原因之一是分布式计算,NoSQL 数据库通过分片、复制和集群支持分布式数据存储、垂直和水平扩展。

RDBMS:RDBMS 通过集群和复制支持分布式计算。但是,它的可扩展性和灵活性较低,因为它的传统设计并非支持分布式架构。

容错

NoSQL:NoSQL 具有内置的容错能力和由于数据复制而实现的高可用性。

RDBMS:RDBMS 使用复制、备份和恢复机制。不过,由于这些机制是为容错和数据可用性而设计的,因此在应用程序开发过程中可能需要实施其他措施,例如灾难恢复机制。

数据分区

NoSQL:它是通过分片和复制完成的。

RDBMS:它支持基于表的分区和分区修剪。

在此处了解有关数据分区的更多信息。

数据到对象的映射

NoSQL:NoSQL 以多种方式存储数据 - 如 JSON 文档、宽列存储或键值对。它通过 ODM(对象-数据映射)框架提供抽象,以面向对象的方式处理 NoSQL 数据。

RDBMS:RDBMS 更多地依赖于数据到对象的映射,因此数据库列和面向对象的应用程序代码之间存在无缝集成。

要详细了解关系数据库和 NoSQL 数据库之间的差异,请阅读 NoSQL 与 SQL 数据库

NoSQL 使用案例

NoSQL 数据库系统几乎用于每个行业,适用于实时分析、内容管理、IoT 应用程序、推荐系统、欺诈检测、产品目录管理等等。使用案例既有高度关键的(如存储财务数据医疗记录),也有轻松有趣的(如存储智能猫砂盆的 IoT 读数)。

何时使用 NoSQL?

在决定使用哪个数据库时,决策者通常会发现以下一个或多个因素引导他们选择 NoSQL 数据库:

  • 快节奏的敏捷开发
  • 结构化和半结构化数据的存储
  • 数据量巨大
  • 横向扩展架构的要求
  • 现代应用程序范式,如微服务和实时流媒体

有关上述原因的更多详细信息,请参阅何时使用 NoSQL 数据库探索 NoSQL 数据库示例

NoSQL 数据库误解

多年来,关于 NoSQL 数据库的许多误解已经传遍整个开发者社区。在本节中,我们将讨论两个最常见的误解。

误解:关系型数据最适合关系数据库

一个常见的误解是 NoSQL 数据库或非关系型数据库不能很好地存储关系型数据。NoSQL 数据库可以存储关系型数据 - 它们与关系型数据库的存储方式不同。

事实上,与关系数据库相比,许多人发现在 NoSQL 数据库中对关系型数据建模比在关系数据库中更容易,因为不必在表之间拆分相关数据。NoSQL 数据模型允许将相关数据嵌套在单个数据结构中。

误解:NoSQL 数据库不支持 ACID 事务

另一个常见的误解是 NoSQL 数据库不支持 ACID 事务。一些 NoSQL 数据库,如 MongoDB,实际上支持 ACID 事务]transactions

请注意,在 NoSQL 数据库中对数据进行建模的方式,可以消除许多使用案例中对多记录事务的需求。考虑前面的示例,我们在关系模型和文档存储中存储了有关用户及其爱好的信息。为了确保有关用户及其爱好的信息在关系数据库中一起更新,我们需要使用事务来更新两个表中的记录。要在文档存储中执行相同的操作,我们可以更新单个文档 - 不需要多记录事务。

要了解有关常见误解的更多信息,请阅读您所知道的关于 MongoDB 的一切都是错误的

NoSQL 查询教程

您可以从 MongoDB 开始,根据 DB-Engines 的说法,MongoDB 是世界上最受欢迎的 NoSQL 数据库。开始使用 MongoDB 的最简单方法是 MongoDB Atlas。Atlas 是 MongoDB 的完全托管式数据库即服务。Atlas 有一个永久免费的套餐,您可以使用它来尝试。查看 MongoDB Atlas 教程以开始使用。

您可以通过使用 Atlas 数据浏览器插入新文档、编辑现有文档和删除文档来继续与数据交互。

当您准备好尝试更高级的查询来聚合数据时,创建聚合管道。聚合框架是分析数据的强大工具。要了解更多信息,请参加免费的 MongoDB University 课程 MongoDB Aggregation

如果您想可视化数据,请查看 MongoDB Charts。Charts 允许您创建充满数据可视化效果的仪表盘。

总结

NoSQL 数据库具有多种优势,包括灵活的数据模型、水平扩展、快如闪电的查询以及易于开发者使用。NoSQL 数据库有多种类型,包括文档存储、键值数据库、宽列存储、图表数据库和多模型数据库。

MongoDB 是世界上最受欢迎的 NoSQL 数据库。了解有关 MongoDB Atlas 的更多信息,并尝试免费套餐。

现在您拥有自己的 Atlas 帐户,期待了解更多信息?前往 MongoDB University,在这里,您可以接受 MongoDB 工程师的免费在线培训并获得 MongoDB 认证快速入门是另一个不错的起点;它们将帮助您使用自己喜欢的编程语言快速入门和运行。

常见问题解答

NoSQL 有哪些优势?

许多 NoSQL 数据库具有以下优点:

什么是最终一致性?
最终一致性 是分布式数据库的一个属性。最终一致性确保当对数据库进行更新时,最终分布式数据库中的所有节点都将反映该更新。
什么是 CAP 定理?
CAP 定理指出,分布式计算系统最多可以提供以下三个属性中的两个:致性、用性和 区容差。
NoSQL 有什么用途?

NoSQL 数据库几乎在每个行业都有各种使用案例

NoSQL 数据库的类型决定了典型使用案例。例如,MongoDB 等文档数据库是通用数据库。键值数据库非常适合大量数据和简单的查找查询。宽列存储非常适合具有大量数据和可预测查询模式的使用案例。图形数据库擅长分析和遍历数据之间的关系。有关更多信息,请参阅了解不同类型的 NoSQL 数据库

什么是 NoSQL 数据库?
NoSQL数据库 是一种以关系表以外的格式存储数据的数据库。
如何编写 NoSQL 查询?
每个 NoSQL数据库都有自己的查询编写方法。访问交互式 MongoDB 文档,了解有关查询 MongoDB 数据库的更多信息。
NoSQL 难学吗?

NoSQL 数据库并不难学。事实上,许多开发者认为 NoSQL 数据库中的数据建模非常直观。例如,MongoDB 中的文档映射到最流行的编程语言中的数据结构,使编程更快、更容易。

需要注意的是,受过关系型数据库培训并有相关经验的人在适应 NoSQL 数据库数据建模的新方法时,可能会面临一定的学习曲线。

JSON 是 NoSQL 数据库吗?
文档数据库 是一种将数据存储在 JSON 或 BSON 文档中的 NoSQL 数据库。
使用什么语言来查询 NoSQL?
NoSQL 数据库涵盖多种类型和实现。因此,可以使用多种查询语言和 API 来查询 NoSQL 数据库。MongoDB 是世界上最受欢迎的 NoSQL 数据库,可以使用 MongoDB 查询语言 (MQL) 进行查询。
NoSQL 有模式吗?
NoSQL 数据库通常具有灵活的模式。请注意,某些 NoSQL 数据库(例如 MongoDB)也支持模式验证,因此开发者可以在准备就绪后随意锁模式。

本文由 MongoDB 开发大使 Lauren Schaefer 撰写。

详细了解 NoSQL 与 SQL 数据库]的主要区别

NoSQL 相关资源
了解更多

按照本教程使用 MongoDB Atlas

体验在云中使用 MongoDB(首选的 NoSQL 数据库)带来的益处。
免费试用!