Z
Toggle Nav

SQL or NoSQL

SQL or NoSQL 简单来说只是两种不同类型的数据库:

  • 关系型数据库: MySQL、PostgreSQL
  • 非关系型数据库: MongoDB、CouchDB

但核心其实是两种数据模型的差异:关系模型与文档模型

SQL

SQL 基于 Edgar Codd 1970 年提出的关系模型:数据被组织称关系,不同的关系在 SQL 中称为 Table,就像我们常规见到的表格一样:

多个 Table 之间可以用相同的字段做关联,以此可以将多个不同的关系(Table)做关联查询。

关系模型主要思想是将数据按不同的关系拆分,不同的关系之间也能使用相同的字段做关联查询(多对多查询)。

NoSQL

NoSQL 概念兴起于 2009 年,它的含义也被重新解释成了“不仅仅是 SQL”,对应的实现则非常广泛:

其中最广泛的当属以 Key-Value 为核心的 DB,例如 Redis;以及以 Collection 与 Document 为核心的基于文档模型的 DB,例如 MongoDB。

实际业务中到底选择 SQL 还是 NoSQL,除了数据库的性能及功能指标,一个核心诉求就是对于数据该如何组织。

如果数据中含有很多关系,不同关系中还会有不同的关联查询,那么可能使用 SQL 会更符合需求。

如果数据相对独立,且一份数据可以看作一个整体,很难被拆分,那么可能 NoSQL 会比较适合。