SQL和NoSQL对比

本文最后更新于:8 个月前

SQL和NoSQL对比

一、概念解析

  • SQL,全称:Structured Query Language(结构化查询语言),本质是一门数据库语言,这里用来代表「关系数据库」
  • NoSQL,代表「非关系数据库」,对不同于传统的关系数据库的数据库管理系统的统称

下面以 MySQL 和 MongoDB 中的术语为代表,对比两种类型数据库的术语差异

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
column field 数据字段/域
row document 数据记录行/文档
index index 索引
primary_key _id 主键
table joins populate 表连接

两者最主要的区别是:数据的组织形式

  • SQL关系型数据库,采用表格的形式组织数据,数据之间存在明确的关系,结构清晰。适合大规模事务性应用。
  • NoSQL非关系型数据库,使用不同的数据结构来组织数据,包括:文档、键值对、图形等,数据之间的关系不如前者明确。优势在于处理海量数据和高并发访问。

所以,SQL适用于数据结构简单明确的场景;NoSQL适用于数据结构较复杂或不能一次性明确、并且需要高效处理的场景。

二、SQL

1、数据库代表

  • SQL server
  • MySQL
  • Oracle

2、优点

  • (1)事务一致性
  • (2)几乎没有数据冗余

3、缺点

  • (1)读写性能瓶颈,系统逻辑比较复杂,当数据量很大时,为了维护一致性,容易发生死锁等并发问题,读写速度下滑严重

  • (2)表结构在定义之后很进行较大的更新

    数据库中的数据之间存在着复杂的关联关系,例如外键约束、索引等,修改一个表的结构可能会对其他表的结构产生影响。不仅需要修改本表的结构,还需要对受到影响的其他表进行相应的修改,这些修改需要非常小心谨慎地进行,否则会引起数据异常等问题。

  • (3)不适合大数据量、高并发场景,读写和查询效率都较低

三、NoSQL

1、数据库代表

  • MongoDB(面向文档的数据库)
  • Redis(永久性键值数据库)
  • HBase(面向列的数据库)

2、优点

不同类型的非关系型数据库有各自突出的优点

  • key-value键值对数据库,高性能的并发读写,如Redis
  • 面向文档数据库,海量数据下的快速查询效率,如MongoDB
  • 分布式数据库,支持分布式扩展,如HBase

除此之外,还有一些共性优点

  • 支持的储存格式丰富,而SQL只支持基础类型
  • 读写性能,NoSQL数据库不使用SQL语言,所以不经过SQL层解析
  • 横向扩展性,很多支持集群部署

3、缺点

  • 不支持复杂的事务

4、适用场景

(1)数据库表结构经常变化,eg: 电商产品,属性会经常发生变化
(2)字段包含复杂类型,因为NoSQL可以使用JSON方式储存,所以对复杂对象提供了原生的支持,效率更高
(3)高并发数据库请求 + 对数据一致性没有严格追求
(4)海量数据

四、MongoDB

特点

  • 灵活的模型,适合迭代开发,数据模型多变的情况
  • JSON数据结构,读写简单,支持原生复杂对象
  • 学习成本低、文档完善

适用场景

(1)应用不需要事务和复杂的join连接操作
(2)新应用,需求会变,数据模型无法一次性定型
(3)需要大量的文本查询、地理位置查询

参考链接

干货 | SQL 与 NoSQL还在傻傻分不清? - 知乎 (zhihu.com)


SQL和NoSQL对比
http://timegogo.top/2023/05/10/后端/SQL与NoSQL对比/
作者
丘智聪
发布于
2023年5月10日
更新于
2023年7月16日
许可协议