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

1、主要区别
SQL 数据库主要称为关系数据库 (RDBMS); 而 NoSQL 数据库主要被称为非关系型或分布式数据库。

2、语言
SQL 数据库定义和操作基于数据的结构化查询语言 (SQL)。从侧面看,这种语言非常强大。SQL 是可用的最通用和广泛使用的选项之一,这使得它成为一个安全的选择,尤其是对于非常复杂的查询。但从另一方面来看,它可能是限制性的。 SQL要求在使用数据之前使用预定义的模式来确定数据的结构。此外,所有数据都必须遵循相同的结构。这可能需要大量的前期准备,这意味着结构的改变对整个系统来说既困难又破坏性。
NoSQL 数据库具有用于非结构化数据的动态模式。数据以多种方式存储,它可以是面向文档的、面向列的、基于图形的或组织为 KeyValue 存储的。这种灵活性意味着无需先定义结构即可创建文档。此外,每个文档都可以有自己独特的结构。语法因数据库而异,可以随时添加字段。

3、可扩展性
在几乎所有情况下,SQL 数据库都是垂直可扩展的。可以通过增加 RAM、CPU 或 SSD 等内容来增加单个服务器的负载。 但另一方面,NoSQL 数据库是水平可扩展的。 可以通过分片或在 NoSQL 数据库中添加更多服务器来处理更多流量。 这类似于在同一建筑物中添加更多楼层而不是在社区中添加更多建筑物。 因此,NoSQL 最终可以变得更大、更强大,使这些数据库成为大型或不断变化的数据集的首选。

4、属性紧随其后
SQL 数据库遵循 ACID 属性(原子性、一致性、隔离性和持久性),而 NoSQL 数据库遵循 Brewers CAP 定理(一致性、可用性和分区容限)。

5、支持
其供应商为所有 SQL 数据库提供了强大的支持。 还有很多独立的咨询,他们可以帮助您使用 SQL 数据库进行非常大规模的部署,但是对于某些 NoSQL 数据库,您仍然必须依赖社区支持,并且只有有限的外部专家可用于设置和部署您的大规模 NoSQL 部署。
SQL 数据库的一些示例包括 PostgreSQL、MySQL、Oracle 和 Microsoft SQL Server。 NoSQL 数据库示例包括 Redis、RavenDB Cassandra、MongoDB、BigTable、HBase、Neo4j 和 CouchDB。

SQL 与 NoSQL 的主要对比点:

SQL NoSQL
关系数据库管理系统 (RDBMS) 非关系或分布式数据库系统。
数据库具有固定的或静态的或预定义的模式 具有动态模式
数据库不适合分层数据存储。 数据库最适合分层数据存储。
数据库最适合复杂查询 数据库不太适合复杂查询
垂直可扩展 水平可扩展
遵循 ACID 属性 遵循 CAP(一致性、可用性、分区容限)