先决条件——SQL、NoSQL
在选择数据库时,最大的决定是选择关系 (SQL)或非关系 (NoSQL)数据结构。虽然这两个数据库都是可行的选择,但用户在做出决定时必须牢记两者之间的某些关键差异。
主要区别:
- 类型 –
SQL 数据库主要称为关系数据库 (RDBMS);而 NoSQL 数据库主要被称为非关系型或分布式数据库。 - 语 –
SQL 数据库定义和操作基于数据的结构化查询语言 (SQL)。从侧面看,这种语言非常强大。 SQL 是最通用和最广泛使用的选项之一,这使它成为一个安全的选择,尤其是对于非常复杂的查询。但从另一方面来看,它可能是限制性的。 SQL 要求您在使用数据之前使用预定义的模式来确定数据的结构。此外,您的所有数据都必须遵循相同的结构。这可能需要大量的前期准备,这意味着结构的更改既困难又会破坏整个系统。NoSQL 数据库具有非结构化数据的动态架构。数据以多种方式存储,这意味着它可以面向文档、面向列、基于图形或组织为 KeyValue 存储。这种灵活性意味着无需先定义结构即可创建文档。每个文档也可以有自己独特的结构。语法因数据库而异,您可以随时添加字段。
- 可扩展性——
在几乎所有情况下,SQL 数据库都可以垂直扩展。这意味着您可以通过增加 RAM、CPU 或 SSD 等内容来增加单个服务器的负载。但另一方面,NoSQL 数据库是水平可扩展的。这意味着您可以通过分片或在 NoSQL 数据库中添加更多服务器来处理更多流量。这类似于向同一建筑物添加更多楼层而不是向社区添加更多建筑物。因此,NoSQL 最终可以变得更大、更强大,使这些数据库成为大型或不断变化的数据集的首选。 - 结构 –
SQL 数据库是基于表的,而 NoSQL 数据库是键值对、基于文档的图形数据库或宽列存储。这使得关系 SQL 数据库成为需要多行事务的应用程序(如会计系统)或为关系结构构建的遗留系统的更好选择。 - 属性跟随 –
SQL 数据库遵循 ACID 属性(原子性、一致性、隔离性和持久性),而 NoSQL 数据库遵循 Brewers CAP 定理(一致性、可用性和分区容错性)。 - 支持 –
其供应商对所有 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) |