📜  SQL 和 NoSQL 的区别

📅  最后修改于: 2021-09-09 10:49:17             🧑  作者: Mango

先决条件——SQL、NoSQL
在选择数据库时,最大的决定是选择关系 (SQL)或非关系 (NoSQL)数据结构。虽然这两个数据库都是可行的选择,但用户在做出决定时必须牢记两者之间的某些关键差异。

主要区别:

  1. 类型 –
    SQL 数据库主要称为关系数据库 (RDBMS);而 NoSQL 数据库主要被称为非关系型或分布式数据库。
  2. 语 –
    SQL 数据库定义和操作基于数据的结构化查询语言 (SQL)。从侧面看,这种语言非常强大。 SQL 是最通用和最广泛使用的选项之一,这使它成为一个安全的选择,尤其是对于非常复杂的查询。但从另一方面来看,它可能是限制性的。 SQL 要求您在使用数据之前使用预定义的模式来确定数据的结构。此外,您的所有数据都必须遵循相同的结构。这可能需要大量的前期准备,这意味着结构的更改既困难又会破坏整个系统。

    NoSQL 数据库具有非结构化数据的动态架构。数据以多种方式存储,这意味着它可以面向文档、面向列、基于图形或组织为 KeyValue 存储。这种灵活性意味着无需先定义结构即可创建文档。每个文档也可以有自己独特的结构。语法因数据库而异,您可以随时添加字段。

  3. 可扩展性——
    在几乎所有情况下,SQL 数据库都可以垂直扩展。这意味着您可以通过增加 RAM、CPU 或 SSD 等内容来增加单个服务器的负载。但另一方面,NoSQL 数据库是水平可扩展的。这意味着您可以通过分片或在 NoSQL 数据库中添加更多服务器来处理更多流量。这类似于向同一建筑物添加更多楼层而不是向社区添加更多建筑物。因此,NoSQL 最终可以变得更大、更强大,使这些数据库成为大型或不断变化的数据集的首选。
  4. 结构 –
    SQL 数据库是基于表的,而 NoSQL 数据库是键值对、基于文档的图形数据库或宽列存储。这使得关系 SQL 数据库成为需要多行事务的应用程序(如会计系统)或为关系结构构建的遗留系统的更好选择。
  5. 属性跟随 –
    SQL 数据库遵循 ACID 属性(原子性、一致性、隔离性和持久性),而 NoSQL 数据库遵循 Brewers CAP 定理(一致性、可用性和分区容错性)。
  6. 支持 –
    其供应商对所有 SQL 数据库都提供了强大的支持。还有很多独立咨询可以帮助您使用 SQL 数据库进行非常大规模的部署,但是对于某些 NoSQL 数据库,您仍然必须依赖社区支持,并且只有有限的外部专家可用于设置和部署您的大规模 NoSQL部署。

    SQL 数据库的一些示例包括 PostgreSQL、MySQL、Oracle 和 Microsoft SQL Server。 NoSQL 数据库示例包括 Redis、RavenDB Cassandra、MongoDB、BigTable、HBase、Neo4j 和 CouchDB。

SQL 与 NoSQL 的主要亮点:

SQL NoSQL
RELATIONAL DATABASE MANAGEMENT SYSTEM (RDBMS) Non-relational or distributed database system.
These databases have fixed or static or predefined schema They have dynamic schema
These databases are not suited for hierarchical data storage. These databases are best suited for hierarchical data storage.
These databases are best suited for complex queries These databases are not so good for complex queries
Vertically Scalable Horizontally scalable
Follows ACID property Follows CAP(consistency, availability, partition tolerance)