📜  NoSQL 和 NewSQL 的区别(1)

📅  最后修改于: 2023-12-03 15:03:16.500000             🧑  作者: Mango

NoSQL 和 NewSQL 的区别

NoSQL

NoSQL(Not Only SQL)是一种非关系型数据库管理系统,用于大规模数据的存储。其主要是为了解决关系型数据库的扩展性问题而产生的。NoSQL数据库可以分为以下几类:

1. 面向列的数据库

面向列的数据库又称为列存储数据库,数据以列为单位进行存储,适用于数据量大,但查询一般只需要部分列的情况。典型的面向列的数据库有HBase等。

2. 面向文档的数据库

面向文档的数据库存储的是类似于JSON的文档格式,可以对文档进行嵌套。适合处理复杂的数据结构,典型的面向文档的数据库有MongoDB等。

3. 面向键值对的数据库

面向键值对的数据库以键值对的方式存储数据,适用于查询速度要求较高的场景。典型的面向键值对的数据库有Redis等。

4. 面向图形的数据库

面向图形的数据库可以有效地处理具有复杂关系的数据,比如社交网络中的好友关系、物流关系等。典型的面向图形的数据库有Neo4J等。

NewSQL

NewSQL是一种新型的数据库,它结合了关系型数据库和NoSQL数据库的优点。NewSQL试图在保留ACID事务特性的同时,提供分布式高可用性。NewSQL可以分为以下两类:

1. 分布式关系型数据库

分布式关系型数据库采用分布式架构,能够实现分布式事务和高可用性。典型的分布式关系型数据库有Google Spanner等。

2. 分布式NoSQL数据库

分布式NoSQL数据库采用分布式架构,实现了大规模数据的分布式存储和处理。典型的分布式NoSQL数据库有Cassandra等。

NoSQL 和 NewSQL 的区别
  • 数据模型:NoSQL提供了多种数据模型,包括文档、键值对、图形等,而NewSQL主要以关系型数据模型为基础。
  • 数据一致性:NoSQL多数情况下不保证强一致性,而NewSQL在保留ACID的特性下,能够实现分布式的强一致性。
  • 可扩展性:NoSQL在分布式方面比较优秀,能够通过水平扩展来应对大规模数据的存储和处理,而NewSQL虽然也支持分布式架构,但相对于NoSQL来说,扩展性还有些欠缺。

综上所述,NoSQL适用于数据量大、处理复杂数据结构的场景;而NewSQL则适合于高并发、需要强一致性的场景。