Logo
Section 1 / 3

SQL 或 NoSQL 数据库

了解 SQL 和 NoSQL 数据库之间的区别以及何时使用它们。

导入

SQL 或 NoSQL 数据库

了解 SQL 和 NoSQL 数据库之间的区别以及何时使用它们。

SQL数据库

SQL数据库自20世纪70年代起就已存在。它最初由唐纳德·D·查默林(Donald D. Chamberlin)和雷蒙德·F·博伊斯(Raymond F. Boyce)开发。在IBM发布详细的语法说明后,许多其他厂商开始研发自己的数据库系统,导致各系统之间出现了多种差异。到了80年代中期,美国国家标准协会(ANSI)开始推动SQL的标准化工作。这一标准化过程可分为四个主要版本:

  • 第一个版本包含了SQL的基本功能,于80年代末发布。
  • 第二个版本在1992年推出,引入了我们今天熟悉的许多关键字。
  • 现代SQL的发展始于1999年。
  • 现代SQL于2003年发布,最新版本发布于2019年。

如今,在这些标准的支持下,我们有多种数据库可供选择,如Postgres、MySQL、Microsoft SQL Server和MariaDB。这些数据库中的数据是结构化的,以表格形式存储,具有固定的行和列。

...
SQL和NoSQL数据库

NoSQL数据库

NoSQL数据库与SQL数据库截然相反,尤其是因为它们不采用结构化设计。正如其名称所示,这类数据库比SQL数据库更具灵活性。卡洛·斯特罗齐(Carlo Strozzi)于1998年使用“NoSQL”一词命名了自己的数据库系统“Strozzi NoSQL”。

由于这类数据库内部没有固定结构,因此在数据管理方式上采用了多种不同的方法。一些典型的例子包括:

  • 文档型:MongoDB 和 CouchDB
  • 键值对型:Redis 和 DynamoDB
  • 宽列型:Cassandra 和 HBase
  • 图数据库:Neo4j 和 Amazon Neptune

NoSQL数据库在2000年代后期迅速发展,但根据一些来自60年代中期的研究显示,其中超过一半的数据属于非结构化类型。

SQL与NoSQL数据库的区别

SQL与NoSQL数据库之间的主要区别总结如下:

SQL数据库NoSQL数据库
数据存储方式表格形式,包含行和列多种非结构化存储方式
发展时间20世纪70年代末2000年代末
典型示例Postgres、MariaDB、OracleMongoDB、CouchDB、Cassandra
模式设计固定严格灵活可变

结构化数据是指遵循特定格式或标准的数据,因此能够以某种确定的方式进行组织。SQL数据库中的数据以表格和列的形式进行结构化存储。而NoSQL数据库则不遵循任何特定规则,因此更适合处理非结构化数据。

...
结构化与非结构化数据

SQL的应用场景

SQL数据库最重要的特性之一是具备一组被称为ACID的属性:原子性、一致性、隔离性和持久性。这些特性保证了高可用性和数据可靠性。简而言之,这类数据库适用于需要执行复杂查询且数据模型变化较少的应用场景。

通常用于会计系统、金融应用、用户管理系统,以及任何对数据模型修改需求较低的应用程序。

NoSQL的应用场景

当数据模型需要频繁变更、需横向扩展(例如跨多个地理位置部署),或需要存储无明确规则的数据时,NoSQL数据库通常更具优势。

一个典型例子是使用文档型数据库(如MongoDB)来支持电商应用。这是因为同一类数据可能包含不同类型的商品信息——卖家可能销售多种不同类型的产品。在这种情况下,灵活的数据库设计有助于更好地支撑应用的扩展。

创建一个基本的 GraphQL 端点

模式与应用场景