须注意的是,关系数据库是使用固定架构来创建和管理的。固定架构意味着引入数据库中的所有数据均须完全符合预定义的格式设置标准,而这会限制关系数据库可存储的数据结构的类型。例如,关系数据库无法处理非结构化数据(例如,格式不一致且不符合预设数据模型的信息),但却能很好地支持包含结构化数据或半结构化数据类型(例如,格式一致且符合预设数据模型的数据)的事务信息或财务信息。
SQL 数据库示例
SQL 数据库示例多种多样,其中包括:
- Oracle: Oracle 数据库是由 Oracle Corporation 开发和销售的一种关系数据库管理系统 (RDBMS),同时也是全球最常用的企业数据库系统之一。
- MySQL: MySQL 是用于创建和管理数据库的一种常用开源关系数据库管理系统。MySQL 由 Oracle Corporation 开发和分发,并以其易用性、广泛的社区支持和可靠性而为人所知。
- 注意:MySQL 有一个名为“MariaDB”的开源替代品,它是在 Oracle Corporation 收购 MySQL 后作为MySQL 的替代品而设计的。
- PostgreSQL: PostgreSQL 是一个开源对象关系数据库管理系统,并以其先进且功能丰富的功能而闻名,而这些功能可扩展 SQL 的能力。PostgreSQL 是加州大学伯克利分校的 POSTGRES 项目的其中一部分,它提供符合 ACID标准的功能,而这些功能可安全存储和扩展复杂的数据工作负载 (PostgreSQL.org 2024)。
- MSSQL: MSSQL 是 Microsoft SQL Server 的缩写,它是由 Microsoft 开发的一种关系数据库管理系统。该数据库平台通常用于大型企业环境,以支持大规模 ACID 事务处理、商业智能与分析应用。
- SQLite: 与此列表中的其他示例不同,SQLite 其实是一个用于提供 RDBMS 的软件库。与本列表中的其他 RDBMS 不同,SQLite 采用无服务器架构且自成一体,而无需任何配置。这是因为它会嵌入到使用 SQLite 的应用程序中,因此无需单独的服务器。
须注意的是,其他类型的数据库也可在各数据之间建立关系。对于规范化的表格数据库(例如,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 数据库之间的另一明显区别点。