02-NoSQL
约 1008 字大约 3 分钟
2025-03-19
著作权归 JavaGuide(javaguide.cn)所有 基于 MIT 协议 原文链接:https://javaguide.cn/database/nosql.html
Cue
- NoSQL 是什么?
- SQL 和 NoSQL 的区别?
- NoSQL 数据库的优势?
- NoSQL 数据库的类型?
- 举例说明 NoSQL 数据库的应用场景?
- 解释键值数据库的特点?
- 对比文档数据库和关系数据库的数据存储方式?
- 图形数据库的典型使用案例有哪些?
- 宽列存储数据库的优势?
Main
NoSQL 是什么?
NoSQL 是非关系型数据库的统称,主要针对键值、文档、图形等非传统结构化数据存储,天生支持分布式,具备数据冗余和分片特性,旨在提供可扩展、高可用、高性能的数据存储方案。NoSQL 数据库可以存储关系型数据,只是存储方式与关系型数据库不同。常见的 NoSQL 数据库有 HBase、Cassandra、MongoDB、Redis。

SQL 和 NoSQL 的区别
| 特性 | SQL 数据库 | NoSQL 数据库 |
|---|---|---|
| 数据存储模型 | 结构化存储,有固定行和列的表格 | 非结构化存储,如文档型的 JSON 文档、键值型的键值对、宽列型的动态列表、图型的节点和边 |
| 发展历程 | 开发于 1970 年代,注重减少数据重复 | 开发于 2000 年代后期,注重提升可扩展性、降低大规模数据存储成本 |
| 例子 | Oracle、MySQL、Microsoft SQL Server、PostgreSQL 等 | 文档:MongoDB、CouchDB,键值:Redis、DynamoDB,宽列:Cassandra、 HBase,图表:Neo4j、 Amazon Neptune、Giraph |
| ACID 属性 | 提供 ACID 属性 | 通常不支持 ACID 事务,为了可扩展、高性能部分如 MongoDB 有支持但与 MySQL 有区别 |
| 性能 | 性能依赖磁盘子系统,需优化查询、索引和表结构 | 性能由底层硬件集群大小、网络延迟以及调用应用程序等因素决定 |
| 扩展 | 通过垂直扩展(性能更强的服务器)或读写分离、分库分表等方式 | 通过横向扩展(增加服务器,基于分片机制)实现 |
| 用途 | 用于普通企业级项目数据存储 | 用途广泛,如图数据库用于分析关系、键值数据库用于处理大量数据 |
| 查询语法 | 使用结构化查询语言 | 数据访问语法因数据库而异 |
NoSQL 数据库的优势
- 灵活性:提供灵活架构,适合快速迭代开发,是半结构化和非结构化数据的理想选择。
- 可扩展性:通过分布式硬件集群横向扩展,而非纵向添加昂贵服务器。
- 高性能:针对特定数据模型和访问模式优化,相比关系数据库性能更高。
- 强大功能:提供针对各自数据模型构建的强大 API 和数据类型。
NoSQL 数据库的类型
- 键值数据库:简单灵活,每个项目含键和值,应用可完全控制值内容,如 Redis、DynamoDB。
- 文档数据库:数据存储在类似 JSON 对象的文档中,字段值类型多样,结构与代码中对象一致,如 MongoDB。
- 图形数据库:适合构建和运行与高度连接数据集的应用,如社交网络、推荐引擎,如 Neo4j、Giraph。
- 宽列数据库:适合存储大量数据,如 Cassandra、HBase。

Summary
NoSQL 数据库作为非关系型数据库,与传统 SQL 数据库在存储模型、发展历程、ACID 属性、性能、扩展性、用途和查询语法等方面存在显著差异。NoSQL 数据库具有灵活性、可扩展性、高性能和强大功能等优势,主要分为键值、文档、图形和宽列四种类型,适用于不同应用场景,满足现代应用程序对数据存储的多样化需求。
参考:
NoSQL 是什么?- MongoDB 官方文档:https://www.mongodb.com/zh-cn/nosql-explained
什么是 NoSQL? - AWS:https://aws.amazon.com/cn/nosql/
NoSQL vs. SQL Databases - MongoDB 官方文档:https://www.mongodb.com/zh-cn/nosql-explained/nosql-vs-sql
更新日志
2026/5/5 18:19
查看所有更新日志
fde06-docs: 添加 doc 技术文档于
