NoSQL 数据库是针对可扩展性能和无架构数据模型进行了优化的非关系数据库。
NoSQL 数据库也因其易于开发、延迟低且具有弹性而得到广泛认可。
此类数据库可使用各种数据模型,包括列式、文档、图形和内存键值存储。
NoSQL 数据库系统可使用各种模型进行数据管理,例如内存键值存储、图形数据模型和文档存储。
此类数据库针对需要大数据量、低延迟和灵活数据模型的应用程序进行了优化,
这是通过放松传统关系数据库的一些数据一致性限制实现的。
NoSQL 数据库非常适合许多大数据、移动和 Web 应用程序,
因为传统关系数据库的可扩展性和响应能力无法满足其需求。
由于数据结构更简单且可水平扩展,NoSQL 数据库通常比关系数据库响应速度更快且更易扩展。
关系数据库管理系统 (RDBMS) 和非关系 (NoSQL) 数据库各有优劣。
在 RDBMS 中,您可以灵活查询数据,但查询成本相对较高,并且在高流量的情况下无法有效扩展。
在 NoSQL 数据库中,您只能通过几种方式有效查询数据,否则查询成本高且速度慢。
关系数据库 | NoSQL 数据库 | |
数据模型 | 关系模型可将数据标准化为由行和列组成的表。采用一种架构来严格定义表、行、列、索引、各个表之间的关系及其他数据库元素。 | NoSQL 数据库一般不会实施架构。一般使用分区键来检索值、列集或半结构化 JSON、XML 或其他包含相关项目属性的文档。 |
ACID 属性 | 传统的 RDBMS 支持关系数据库的 ACID 属性:原子性、一致性、隔离性和持久性。原子性表示“全有或全无”,即完全执行或完全不执行某项事务。一致性表示事务提交之后,数据必须符合数据库架构。隔离性要求并发事务应分别执行,互不干扰。持久性即能够从意外系统故障或断电情况中恢复到上一个已知状态。 | 为了获得更为灵活且可水平扩展的数据模型,NoSQL 数据库通常会放弃传统 RDBMS 的部分 ACID 属性。凭借这些特性,当传统的 RDBMS 遇到架构方面的挑战时,NoSQL 数据库便成了最佳选择,可用来克服一系列问题,包括性能瓶颈、可扩展性、运营复杂性和不断增加的管理和支持成本。 |
性能 | 性能一般取决于磁盘子系统。要获得最佳性能,就需要优化查询、索引和表结构。 | 性能通常由底层硬件集群大小、网络延迟以及调用应用程序来决定。 |
扩展 | 进行纵向扩展最简单的方式是利用运行更快的硬件。您需要追加投资才能获得跨分布式系统的关系表。 | 旨在利用低成本硬件的分布式群集进行横向扩展,从而在不增加延迟的前提下提高吞吐量。 |
API | 存储和检索数据的请求由符合结构化查询语言 (SQL) 的查询来传达。这些查询由 RDBMS 解析和执行。 | 借助基于对象的 API,应用程序开发人员可以轻松存储和检索内存数据结构。通过分区键,应用程序可以查找键值对、列集或包含序列化应用程序对象和属性的半结构化文档。 |
工具 | SQL 数据库一般会提供一组丰富的工具,用于简化数据库驱动型应用程序的开发流程。 | 而 NoSQL 数据库一般会提供多种工具来管理集群和扩展。应用程序是底层数据的主要接口。 |
NoSQL 数据库的不同类型
有四种常见的 NoSQL 数据库类型:列式、文档、图形和内存键值。
通常,这些数据库在存储、访问和结构化数据的方式上有所差异,但都针对不同的使用案例和应用程序进行了优化。
- 列式数据库针对读取和写入数据列(而不是数据行)进行了优化。适用于数据库表的列式存储是分析查询性能的一大要素,因为它极大地降低了整体磁盘 I/O 要求,并减少了您需要从磁盘加载的数据量。
-
文档数据库旨在将半结构化数据存储为文档,通常采用 JSON 或 XML 格式。与传统关系数据库不同的是,每个 NoSQL 文档的架构是不同的,可让您更加灵活地整理和存储应用程序数据并减少可选值所需的存储。
-
图形数据库可存储顶点以及称为边缘的直接链路。图形数据库可以在 SQL 和 NoSQL 数据库上构建。顶点和边缘可以拥有各自的相关属性。
- 内存键值存储是针对读取密集型应用程序工作负载(例如社交网络、游戏、媒体共享和 Q&A 门户)或计算密集型工作负载(例如推荐引擎)进行了优化的 NoSQL 数据库。内存缓存可将重要数据存储在内存中以实现低延迟访问,从而提高应用程序性能。
SQL |
MongoDB (NoSQL) | DynamoDB (NoSQL) | Cassandra (NoSQL) | Couchbase (NoSQL) |
表 | 集合 | 表 | 表 | 数据存储桶 |
行 | 文档 | 项目 | 行 | 文档 |
列 | 字段 | 属性 | 列 | 字段 |
主键 | 对象 ID | 主键 | 主键 | 文档 ID |
索引 | 索引 | 二级索引 | 索引 | 索引 |
视图 | 视图 | 全局二级索引 | 具体化视图 | 视图 |
嵌套表或对象 | 嵌入文档 | 映射 | 映射 | 映射 |
数组 | 数组 | 列表 | 列表 | 列表 |
转自:
https://aws.amazon.com/cn/nosql/?nc1=f_cc