公告推出MongoDB 8.0,有史以来最快的MongoDB!阅读更多 >>推出MongoDB 8.0,有史以来最快的MongoDB!>>

理解 SQL 与 NoSQL 数据库

2024年,大数据市场规模预计将首次达到840亿美元。考虑到每天全球约产生2500亿字节的数据(BDAN.com,2024年),这一市场的增长完全合理——并且是指数级数据库系统开发和应用的驱动因素之一。

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

目录

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

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

什么是结构化数据?

结构化数据是有序、预先定义格式的数据,通常由字母数字字符组成。例如,金融交易、库存记录或客户列表通常存储在SQL数据库中(例如,关系型数据库)。

什么是SQL数据库?

当使用“SQL数据库”一词时,它指的是一种以SQL作为创建和管理该数据库的主要编程语言的数据库类型。SQL应用程序编程接口(API)包含一组函数,使开发者能够执行和管理数据库操作,而无需反复创建单个SQL命令。

无论SQL数据库是用于存储零售商的交易还是公司的财务信息,SQL数据库都属于关系型数据库这一类型。

关系型数据库

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

示例:一个包含客户、产品和订单信息的电子商务关系型数据库

an e-commerce relational database housing customer, product, and order information

需要注意的是,关系型数据库使用的是固定模式。固定模式意味着所有输入到数据库中的数据都必须精确符合预定义的格式标准,这限制了关系型数据库可以存储的数据结构类型。例如,关系型数据库无法处理非结构化数据(例如,格式不一致且不与预设数据模型对齐的信息),但非常适合支持包含结构化数据或半结构化数据(例如,具有一致格式并符合预设数据模型的数据)的交易或财务信息。

SQL数据库的示例

有各种各样的SQL数据库示例,包括

需要注意的是,其他类型的数据库也可以建立数据之间的关联。在规范化表格数据库(例如,SQL或关系数据库)的情况下,这些关系是通过外键或交表来表达的。在如MongoDB(例如,一个NoSQL数据库)这样的数据库管理系统(DBMS)的情况下,这些关系是通过嵌入或引用数据来建立的。

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

NoSQL,即Not only SQL,是一种数据库管理系统方法,用于在数据库中摄取、存储和检索非结构化和半结构化数据。这意味着那些不能通过传统的关系数据库(例如,SQL)进行分析或计数的数据库可以保留其原始格式,并摄取到NoSQL数据库中。之所以称之为NoSQL,是为了强调这些数据库不仅可以处理非表格、非关系型数据模型,还可以支持类似SQL的查询语言。

什么是非结构化数据?

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

什么是NoSQL数据库?

NoSQL数据库是利用灵活的模式以适应非结构化和半结构化数据,同时利用非表格数据存储方法的数据库。

使用灵活的架构可以使NoSQL数据库以原生格式(例如,.txt、.JPG、MP3)摄取非结构化数据,而SQL数据库由于所有数据都必须符合预定义格式的要求,无法做到这一点。此外,当NoSQL数据库存储数据时,采用灵活的数据模型,以便非结构化数据文件可以具有不同的数据结构,但仍可存储在同一集合中。

想了解更多信息,请跟随我们的关于NoSQL数据库的教程。

NoSQL数据库的类型

存在不同类型的NoSQL数据库,包括

  • 文档数据库:文档数据库,有时被称为面向对象数据库,存储数据类似于JSON(JavaScript对象表示法)对象,尽管它们不是JSON存储。它们使用从本地对象返回到开发者使用的编程语言的驱动程序,而无需对象关系映射器(ORM)。每个文档本身被视为一条记录,可以包含包括数字、数组、对象、字符串甚至是布尔字符在内的值。此外,还可以包含键值对、嵌套文档或其他结构化数据。这些NoSQL数据库的流行提供商包括MongoDB
  • 键值数据库:键值数据库以键值对的形式收集、检索和存储数据。这意味着每个数据记录都由一个唯一的键和一个相关的值表示。键用于从数据库中检索相应的值。例如,在一个室内设计键值数据库中,键可能是“颜色”,值可能是“紫色”。这些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数据库之间另一个明显的差异点。

Illustration of Vertical and Horizontal Scaling

SQL数据库

传统上,SQL数据库以垂直扩展的方式进行扩展。这意味着资源(例如,CPU、存储或内存)被添加到单个服务器中。虽然这可能会因为只有一个具有有限容量的服务器进行扩展而导致增长数量有限,但有几个选择这个扩展方式的原因

NoSQL数据库

NoSQL数据库系统通常配置为分布式系统。这意味着通过网络连接的一组独立计算机(例如,节点)共同工作以实现共同目标。成为分布式系统的一部分也意味着可以利用横向扩展与垂直扩展

水平扩展涉及通过向系统中添加更多节点(例如,计算机、服务器)来增加分布式系统的可用资源和容量。这样做可以提供更多节点来支持系统的负载。此外,从容量角度来看,数据库的增长几乎没有任何限制,因为可以继续添加更多节点。

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

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

虽然SQL数据库在管理结构化、关系型数据、保持事务完整性和执行复杂查询方面表现出色,但NoSQL数据库在查询和存储非结构化或半结构化数据方面无与伦比,同时提供无限的扩展性和灵活性。

话虽如此,应用案例是选择SQL和NoSQL数据库(例如,关系型数据库与非关系型数据库)之间的驱动力。以下是SQL数据库和NoSQL数据库的优缺点及关联应用案例的总结。

SQL数据库应用案例

SQL数据库的关键特性使其适用于以下应用案例

合规性监管

由于SQL数据库的结构适合符合ACID规范,因此它们通常用于存储必须符合某些政府或行业标准的数据。

以下案例都涉及一定程度上的ACID合规性。

事务型数据库

事务型数据库存储来自两个或多个参与者之间交互的数据。

示例

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

企业资源计划(ERP)系统

ERP系统用于帮助企业管理关键业务流程,如员工管理、生产等。

示例

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

尽管常见的观念认为NoSQL(例如,非关系型)数据库不符合ACID规范,但实际上一些是符合的。MongoDB是NoSQL、ACID符合性数据库的一个领先例子。

考虑到这一点,以下是一些常见的NoSQL数据库应用案例

事务型数据库

事务型数据库也可以由NoSQL数据库支持,因为它们用于存储两个或多个参与者之间交互产生的非结构化数据。

示例

  • 需要非关系型数据库功能(例如,患者记录、X光/扫描照片和视频)的医疗患者档案
  • 保险案例文件(例如,汽车事故照片、伤害记录)
  • 法律文件数据库(例如,审问、诉状、案件文件)

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

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

示例

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

图和网络分析

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

示例

  • 社交网络分析(例如,帖子和使用者指标)
  • 欺诈检测,用于隔离异常交易或其他异常
  • 知识图谱(例如,Gartner 产品/服务象限)

物联网(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数据库)在云上的好处。
免费开始!