MongoDB World is back in NYC June 7 - 9!MongoDB World is back in NYC June 7 - 9!

了解 SQL 与 NoSQL 数据库

2024 年,大数据市场规模预计将首次达到 840 亿美元。鉴于全球每天会生成约 2.5 万亿字节的数据(BDAN.com,2024),此市场增长规模完全合乎情理,同时它也是指数数据库系统开发和使用的驱动因素之一。

最常用的两种数据库类型为 SQL 数据库(例如,关系数据库)和 NoSQL 数据库。继续阅读以了解有关 SQL 数据库和 NoSQL 数据库、它们的工作原理、常见使用案例以及每种数据库优缺点的更多信息。

目录

结构化查询语言 (SQL)
什么是 SQL?

SQL 代表结构化查询语言,它是一种特定于领域的编程语言(例如,针对特定任务或问题的语言),且通常用于在数据库中完成插入、更新、查询和删除数据等任务。SQL 还可用于创建和修改数据库架构(例如,数据格式设置规则、表/索引结构)以及定义数据库访问与管理参数。

什么是结构化数据?

结构化数据是指以一致的预定义格式进行组织的数据,且通常由字母数字字符组成。其示例包括通常存储在 SQL 数据库(例如,关系数据库)中的金融交易、库存记录或客户列表。

什么是 SQL 数据库?

使用“SQL 数据库”一词时,它指代一种数据库;其中,SQL 是用于创建和管理该数据库的主要编程语言。SQL 应用程序编程接口 (API) 包含一组函数,它们有助于开发者执行和管理数据库操作,而无须反复创建单个 SQL 命令。

无论是使用 SQL 数据库来存储零售商的交易记录还是公司的财务信息,SQL 数据库均属于一种被称为“关系数据库”的数据库。

关系数据库

关系数据库或关系数据库管理系统 (RDBMS) 可将数据存储在用于形成表的行和列中。可使用外键创建两个(或更多)表之间的关系。这些外键(例如,唯一标识符)可维护各表之间存在的预定义关系。

示例: 存储客户、产品与订单信息的电商关系数据库

存储客户、产品与订单信息的电商关系数据库

须注意的是,关系数据库是使用固定架构来创建和管理的。固定架构意味着引入数据库中的所有数据均须完全符合预定义的格式设置标准,而这会限制关系数据库可存储的数据结构的类型。例如,关系数据库无法处理非结构化数据(例如,格式不一致且不符合预设数据模型的信息),但却能很好地支持包含结构化数据或半结构化数据类型(例如,格式一致且符合预设数据模型的数据)的事务信息或财务信息。

SQL 数据库示例

SQL 数据库示例多种多样,其中包括:

须注意的是,其他类型的数据库也可在各数据之间建立关系。对于规范化的表格数据库(例如,SQL 或关系数据库),这些关系会使用外键或交叉表来表示。对于 MongoDB(例如,NoSQL 数据库)等数据库管理系统 (DBMS),这些关系则是通过嵌入或引用数据来建立的。

不仅是结构化查询语言 (NoSQL)
什么是 NoSQL?

NoSQL 代表“不仅是 SQL”,它是一种数据库管理系统方法,且可用于引入、存储和检索数据库中的非结构化数据和半结构化数据。这意味着,无法通过传统关系数据库(例如 SQL)来分析或计数的数据可保留其原生格式,并被引入到 NoSQL数据库中。之所以被称为 NoSQL,是为了强调这些数据库可处理非表格、非关系型数据模型,并支持类似 SQL 的查询语言。

什么是非结构化数据?

非结构化数据是指没有预定义数据模型或一致组织结构的数据。此外,社交媒体帖子等非结构化数据可能会快速更新和变化,而银行交易等结构化数据的变化率则要低得多。非结构化数据的示例包括图片、音频文件、视频和地图。

什么是 NoSQL 数据库?

NoSQL 数据库是指可利用灵活架构(可支持非结构化数据和半结构化数据)同时还会利用非表格数据存储方法的数据库。

通过使用灵活架构,NoSQL 数据库便可以其原生格式(例如 .txt、.JPG、MP3)引入非结构化数据,而 SQL 数据库则无法实现此功能(因为所有数据均须符合预定义的格式)。此外,当 NoSQL 数据库存储数据时,也会采用灵活数据架构,因此非结构化数据文件可拥有不同的数据结构,但仍存储在同一集合中。

要了解更多信息,请关注我们的 NoSQL 数据库教程。

NoSQL 数据库的类型

NoSQL 数据库有多种类型,其中包括:

  • 文档数据库: 文档数据库有时也称为面向对象的数据库,它可将数据存储在类似 JSON(JavaScript 对象表示法)对象的文档中,虽然它们并非 JSON 存储。它们使用从原生对象返回到开发者所用编程语言的驱动程序,而无需借助对象关系映射器 (ORM)。每个文档自身均被视为一条记录,且可包含数字、数组、对象、字符串甚至布尔字符等值。此外,还可包含键值对、嵌套文档或其他结构化数据。此类 NoSQL 数据库的其中一个热门提供商是 MongoDB
  • 键值数据库: 键值数据库会以键值对分组的形式收集、检索和存储数据。这意味着,每条数据记录均由一个唯一的键和关联的值来表示。该键可用于从数据库中检索相应的值。例如,在室内设计键值数据库中,某一键可能是“color”(颜色),而其值则可能是“purple”(紫色)。此类 NoSQL 数据库系统的热门提供商包括 AWS 和 ScyllaDB。
  • 列族存储: 列族数据库可将数据组织为列而非行,而这在处理深度稀疏的宽数据集时非常有用。事实上,列族存储有时也被称为“宽列存储”。在列族存储中,每一行均有一系列不同的列,然后会将列聚集成“列族”。在处理得益于水平扩展以优化性能的大型数据集时,这些数据模型非常有用。此类 NoSQL 数据库的热门提供商包括 Apache Cassandra 和 HBase。
  • 图数据库: 图数据库会将数据存储在节点和边缘中。节点通常会存储有关人物、地点和事物的信息,而边缘则会存储有关各节点间关系的信息。图数据库是用于查询图表结构(例如,社交网络、层次结构)的理想工具。此类 NoSQL 数据库的热门提供商包括 Neo4j、AWS 和 Kibana。
SQL 与 NoSQL 数据库之间的主要区别

虽然 SQL 和 NoSQL 数据库均可提供有价值的功能,但了解它们之间的主要区别依然非常重要。

数据库存储模型

SQL 与 NoSQL 数据库系统在数据存储方面存在显著差异。具体而言,SQL 数据库会将数据存储在包含行和列的表中,而 NoSQL 系统则会根据当前引入的非结构化数据的类型(例如,JSON文档、键值对、族分组、图表节点/边缘)使用各种方法来存储数据。### 数据类型

虽然 NoSQL 数据库(有时也称为非关系型数据库)可引入、存储和检索非结构化数据,但 SQL 数据库(例如,传统关系数据库)却不支持这些功能。SQL 数据库只能引入、存储和检索结构化数据。这是因为所用 SQL 与 NoSQL 架构之间存在差异。

架构

SQL 数据库依赖于严格的预定义数据架构,而要引入的数据必须与该架构保持一致。相比之下,NoSQL 数据库则使用灵活架构,以便能引入采用其原生格式的数据。

可扩展性

对于数据库管理员来说,规划数据库系统的增长和扩展非常重要,而这也是 SQL 数据库与 NoSQL 数据库之间的另一明显区别点。

垂直与水平扩展的插图

SQL数据库

一般而言,SQL 数据库可垂直扩展。这意味着会向单个服务器添加资源(例如 CPU、存储或内存)。虽然此特性可能会限制潜在增长量,因为只有一台容量有限的服务器会进行扩展,而此扩展选择存在以下几个原因:

NoSQL 数据库

NoSQL 数据库系统通常会在所谓的分布式系统中进行配置。这意味着,很多独立计算机(例如,节点)会通过网络进行链接,以便一同实现共同目标。成为分布式系统的一部分还意味着可利用水平扩展与垂直扩展

水平扩展涉及通过向分布式系统添加更多节点(例如,计算机、服务器)来增加该系统的可用资源和容量。这样,就有更多节点可用于支持系统的工作负载。此外,由于可继续增加节点,因而从容量角度来看,数据库的增长几乎不受限制。

了解有关数据库扩展的更多信息。

SQL 与 NoSQL 数据库技术的使用案例

虽然 SQL 数据库擅长管理结构化的关系型数据,同时保持事务完整性以及执行复杂的查询,但 NoSQL 数据库在查询和存储非结构化或半结构化数据方面仍具有无可比拟的优势,同时还能提供无限的可扩展性和灵活性。

因此,使用案例是在 SQL 数据库与 NoSQL 数据库(例如,关系数据库与非关系数据库)之间进行取舍的驱动力所在。下文总结了 SQL 数据库与 NoSQL 数据库的优势和相关使用案例。

SQL 数据库使用案例

鉴于 SQL 数据库的主要特点,此类数据库适合以下使用案例:

法规遵从性

由于 SQL 数据库结构适合实现 ACID 遵从性,因此常被用于存储必须符合某些政府或行业标准的数据。

以下使用案例均涉及某种程度的 ACID 合规性。

事务数据库

事务数据库 可存储双方或多方互动所产生的数据。

示例:

  • 零售商销售点 (PoS) 数据库
  • 医疗处方与订单数据库
  • 商业银行
  • 会计与财务记录数据库

企业资源规划 (ERP) 系统

ERP 系统可用于帮助企业管理对运营、员工管理、生产等事项至关重要的各项流程。

示例:

  • 人力资源数据库
  • 供应链管理系统
  • 风险管理系统
NoSQL 数据库使用案例

虽然人们普遍认为 NoSQL(例如,非关系)数据库无法实现 ACID 合规性,但其实有些 NoSQL 数据库可实现此功能。MongoDB 是 NoSQL、符合 ACID 标准的数据库的杰出示例。

有基于此,NoSQL 数据库使用案例的部分常见示例如下:

事务性数据库

NoSQL 数据库也支持事务性数据库,因为它们可用于存储由两方或多方互动所产生的非结构化数据。

示例:

  • 需要非关系数据库功能的医疗保健患者文件(例如,患者记录、X 光/扫描照片和视频)
  • 保险案例文件(例如,车祸照片、伤情文档)
  • 法律文档数据库(例如,证词、证言、诉状、案例卷宗)

文档数据库和数字资产管理 (DAM)

文档数据库和数字资产管理功能可存储和管理文档、图像、多媒体内容、视频等。

示例:

  • 在线图书馆(例如,法律图书馆、在线国会图书馆)
  • Kindle 或 Nook 等数字出版平台
  • Netflix 和 Hulu 等流媒体服务
  • Instagram 或 Meta 等在线照片共享平台

图表与网络分析

图数据库和网络数据库在管理推荐引擎、社交网络等数据结构以及相关网络分析方面非常出色,因为它们能识别并分析相互关联的数据元素中的非直观关系。

示例:

  • 社交网络分析(例如,帖子与用户指标)
  • 可识别异常交易或其他异常情况的欺诈检测
  • 知识图谱(例如,Gartner 产品/服务象限)

物联网 (IoT) 平台

IoT 平台通常被用于实时存储和分析传感器数据与设备元数据。

示例:

  • 智能家居系统(例如,Google Nest、Amazon Alexa)
  • 智能城市系统(例如,交通灯运行)
  • 气象信息收集

常见问题解答

什么是 SQL?

结构化查询语言 (SQL) 是一种特定于领域的编程语言,它通常用于在数据库中完成插入、更新、查询和删除数据等任务。它是用于创建和管理关系数据库的通用编程语言。

什么是结构化数据?

结构化数据是指以一致的预定义格式进行组织的数据,且通常由字母数字字符组成。其示例包括通常存储在 SQL 数据库(例如,关系数据库)中的金融交易、库存记录或客户列表。

什么是关系数据库?

关系数据库或关系数据库管理系统 (RDBMS) 可将数据存储在用于形成表的行和列中。可使用外键创建两个(或更多)表之间的关系。这些外键(例如,唯一标识符)可维护各表之间存在的预定义关系。

为什么关系数据库只存储结构化数据?

由于采用固定架构 SQL 数据库(例如,关系数据库),此类数据库系统无法支持非结构化数据(例如,视频文件、照片或文本文件)的不同数据结构。

NoSQL 是什么?

“不仅 SQL (NoSQL)”是一种数据库管理系统 (DBMS) 方法,它可用于在数据库中引入、存储和检索非结构化数据和半结构化数据。

什么是非结构化数据?

非结构化数据是指没有预定义数据模型或一致组织结构的数据。此外,非结构化数据(如社交媒体帖子)可能会快速更新和更改,而结构化数据(如交易)的变化率则要低得多。非结构化数据的示例包括图片、音频文件、视频和地图。

什么是 NoSQL 数据库?

NoSQL 数据库是指可利用灵活架构(可支持非结构化数据和半结构化数据)同时还会利用非表格数据存储方法的数据库。

为什么 NoSQL 数据库能存储非结构化数据,而 SQL 数据库则不能?
通过使用灵活架构,NoSQL 数据库便可以其原生格式(例如 .txt、.JPG、MP3)引入非结构化数据,而 SQL 数据库则无法实现此功能(因为所有数据均须符合预定义的格式)。
NoSQL 数据库有哪些类型?

最常见的 NoSQL 数据库类型包括:

  • 文档数据库
  • 键值数据库
  • 列族存储
  • 图数据库
NoSQL 数据库与 SQL 数据库之间的主要区别是什么?

SQL 数据库与 NoSQL 数据库之间的主要区别包括:

  • 数据库存储模型。
  • 数据类型。
  • 架构。
  • 可扩展性。

开始使用 MongoDB Atlas

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