NoSQL 系列 · 起始篇——全景导读:NoSQL 认知地图与选型框架

从关系型瓶颈到五大 NoSQL 类型,用 CAP / BASE 建立选型大脑

目 录

[一、导读:为什么需要 NoSQL](#一、导读:为什么需要 NoSQL)

[1.1 关系型数据库的成就与瓶颈](#1.1 关系型数据库的成就与瓶颈)

[1.2 NoSQL 的定位:Not Only SQL](#1.2 NoSQL 的定位:Not Only SQL)

[二、NoSQL 认知地图:四大类型 + 搜索](#二、NoSQL 认知地图:四大类型 + 搜索)

[2.1 键值存储(Key-Value)](#2.1 键值存储(Key-Value))

[2.2 文档存储(Document)](#2.2 文档存储(Document))

[2.3 列族存储(Wide-Column)](#2.3 列族存储(Wide-Column))

[2.4 图数据库(Graph)](#2.4 图数据库(Graph))

[2.5 搜索引擎(Search)](#2.5 搜索引擎(Search))

[2.6 五大类型综合对比](#2.6 五大类型综合对比)

[三、选型的理论基础:CAP 与 BASE](#三、选型的理论基础:CAP 与 BASE)

[3.1 CAP 定理](#3.1 CAP 定理)

[3.2 P 是必选项:CP 与 AP 的权衡](#3.2 P 是必选项:CP 与 AP 的权衡)

[3.3 BASE 理论](#3.3 BASE 理论)

[3.4 从理论到选型](#3.4 从理论到选型)

四、选型框架:从业务需求到技术决策

[4.1 关键决策维度](#4.1 关键决策维度)

[4.2 决策流程](#4.2 决策流程)

[4.3 边界:何时仍该用关系型 / NewSQL](#4.3 边界:何时仍该用关系型 / NewSQL)

五、本系列路线图

一、导读:为什么需要 NoSQL

本系列面向非关系型数据库的运维实战。作为第 0 篇导读,本文先帮你在脑中建立一张 NoSQL 认知地图,理解它从哪里来、分哪几类、如何按业务选型,再进入后续各技术族的子系列。

1.1 关系型数据库的成就与瓶颈

关系型数据库以 SQL 与 ACID 事务为基石,几十年来一直是企业数据存储的中流砥柱。但当互联网业务走向高并发、海量数据、模型快速迭代时,关系型自身的几个短板被不断放大:

  • 单机扩展受限:垂直扩展(加 CPU / 内存)有物理上限,水平分库分表又显著抬高运维复杂度。
  • 强一致事务带来锁与协调开销,高并发写入场景下吞吐与扩展性受限。
  • 表结构固定,schema 变更成本高,难以匹配快速变化的业务数据模型。

1.2 NoSQL 的定位:Not Only SQL

NoSQL(Not Only SQL)并非要取代关系型,而是在特定场景下的补充与扩展。它往往放弃部分一致性或通用 SQL 能力,换取更高的扩展性、吞吐与模型灵活度。真实生产环境中,NoSQL 与关系型绝大多数时候是协作关系,而不是替代关系。

二、NoSQL 认知地图:四大类型 + 搜索

主流 NoSQL 按数据模型可分为四大类型,外加承担搜索职责的搜索引擎,共同构成完整的认知地图。

2.1 键值存储(Key-Value)

最简洁的模型,数据以「键---值」形式存储,读写性能极高,常用于缓存、会话、实时计数。

|-----------------------|
| SET user:1001 "Tommy" |
| GET user:1001 |

代表产品:Redis、DynamoDB、Memcached。

2.2 文档存储(Document)

以 JSON 类文档(MongoDB 为 BSON)存储,结构灵活、支持嵌套与丰富查询,适合内容管理、用户档案、订单等半结构化数据。

|-----------------------------------------------------------|
| { "_id": 1001, "name": "Tommy", "tags": "运维", "DBA" } |

代表产品:MongoDB、CouchDB。

2.3 列族存储(Wide-Column)

以列族(Column Family)组织数据,擅长海量结构化数据的横向扩展,适合日志、时序、物联网等海量写入场景。

代表产品:Cassandra、HBase、ScyllaDB。

2.4 图数据库(Graph)

以节点和边建模实体及其关系,擅长多跳关联查询,适合社交网络、推荐系统、风控反欺诈等强关系场景。

代表产品:Neo4j、JanusGraph、ArangoDB。

2.5 搜索引擎(Search)

基于倒排索引实现全文检索与实时分析,通常不充当主存储,而是承载站内搜索与日志分析。

代表产品:Elasticsearch、Solr。

2.6 五大类型综合对比

|------------|--------------|----------------------|----------------|--------------|
| 类型 | 数据模型 | 代表产品 | 核心优势 | 典型场景 |
| 键值 | 键值对 | Redis / DynamoDB | 极高读写性能 | 缓存、会话、实时计数 |
| 文档 | JSON 文档 | MongoDB / CouchDB | 灵活 schema、丰富查询 | 内容管理、用户档案、订单 |
| 列族 | 列族 / 宽表 | Cassandra / HBase | 海量横向扩展 | 日志、时序、物联网 |
| 图 | 节点 + 边 | Neo4j / JanusGraph | 多跳关联查询 | 社交、推荐、风控 |
| 搜索 | 倒排索引 | Elasticsearch / Solr | 全文检索、实时分析 | 站内搜索、日志分析 |

三、选型的理论基础:CAP 与 BASE

3.1 CAP 定理

CAP 定理(布鲁尔定理)由 Eric Brewer 于 2000 年提出,2002 年由 Gilbert 与 Lynch 形式化证明:分布式系统中,一致性、可用性、分区容错三者最多只能同时满足两个。

  • 一致性 C(Consistency):所有节点同一时刻看到相同数据,读操作返回最近一次写入结果。
  • 可用性 A(Availability):每个请求都能在有限时间内得到非错误响应。
  • 分区容错 P(Partition Tolerance):网络分区(节点间通信中断)时系统仍能继续运行。

3.2 P 是必选项:CP 与 AP 的权衡

分布式系统必然跨多节点,网络分区客观存在、无法消除,因此 P 不可舍弃。真正的设计决策是在 C 与 A 之间权衡:

  • CP(强一致):金融核心、账户余额等场景,宁可短暂拒绝服务也不接受数据不一致。如 HBase、TiKV 等多副本多数派确认。
  • AP(最终一致):互联网高并发场景,宁可数据暂时不一致也要保证服务可用。如 Cassandra、DynamoDB。

3.3 BASE 理论

BASE 是对 CAP 中 AP 路线的细化,与关系型的 ACID 相对:

  • 基本可用(Basically Available):故障时允许部分功能降级,系统整体保持响应。
  • 软状态(Soft State):允许数据在节点间出现短暂不一致。
  • 最终一致(Eventually Consistent):在没有新写入的前提下,数据最终会收敛到一致。

3.4 从理论到选型

理论上,数据强相关、一致性要求高的场景优先关系型或 CP 型 NoSQL;对扩展性与吞吐要求高、可接受最终一致的场景优先 AP 型 NoSQL。这把 CAP 取舍映射到具体的业务诉求上。

四、选型框架:从业务需求到技术决策

4.1 关键决策维度

|------------|---------------|---------------------------|
| 维度 | 关注问题 | 决策影响 |
| 数据结构 | 结构化、半结构化还是强关系 | 决定文档 / 列族 / 图 |
| 读写模式 | 读多写少还是海量写入 | 缓存(Redis)vs 列族(Cassandra) |
| 一致性要求 | 能否接受最终一致 | 关系型 / CP vs AP |
| 扩展方式 | 需要水平扩展的规模 | 单机 / 主从 / 分片集群 |
| 查询复杂度 | 是否需多表 / 多跳关联 | 关系型 / 图 |
| 运维成本 | 团队熟悉度与运维投入 | 优先成熟生态 |

4.2 决策流程

  • 先定数据模型:结构化强关联 → 关系型;半结构化灵活 → 文档;实体强关系 → 图;热点键值 → 键值;海量写入 → 列族。
  • 再定一致性:强一致优先 → 关系型 / CP;最终一致可接受 → AP。
  • 最后看扩展与生态:评估集群方案、工具链、团队经验。

4.3 边界:何时仍该用关系型 / NewSQL

并非所有场景都适合 NoSQL。需要复杂关联查询、强一致事务的核心系统,关系型仍是首选。若既要 SQL 与强事务、又要水平扩展,可考虑 NewSQL------它在 SQL 便利性与 NoSQL 可扩展性之间求平衡,代表产品有 TiDB、CockroachDB、OceanBase。NoSQL 的定位是补充与扩展,而非全面替代。

五、本系列路线图

作为第 0 篇导读,本文负责建立认知地图。后续按技术族各开一个 8 篇闭环子系列,读者可按需选读,也可顺序通读形成完整知识闭环。

  • Redis 系列(键值)------ 运维度最高,建议先行。
  • MongoDB 系列(文档)------ 副本集 / 分片高可用实操强。
  • 列族系列(Cassandra / HBase)------ 海量横向扩展。
  • 图数据库系列(Neo4j)------ 关系建模。

搜索系列(Elasticsearch)------ 倒排索引 / 日志分析。

相关推荐
浅念-2 天前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
JAVA面经实录9173 个月前
HBase 知识点梳理(文档型 NoSQL)
大数据·数据库·nosql数据库·hbase
JAVA面经实录9173 个月前
Redis 知识体系(完整版)
java·redis·nosql数据库·nosql
数据库知识分享者小北9 个月前
即将开源 | 阿里云Tair KVCache Manager:企业级全局 KVCache 管理服务的架构设计与实现
数据库·阿里云·nosql数据库·tair
林抒10 个月前
(2025版)MongoDB 8.0.13 版本安装与配置(Windows 版)保姆级教程
windows·mongodb·nosql数据库
她说..1 年前
Redis的Java客户端
java·数据库·redis·nosql数据库·nosql
数据艺术家.1 年前
Java八股文——Redis篇
java·redis·缓存·面试·nosql数据库·nosql·八股文
小伍_Five1 年前
使用Java操作Neo4j数据库
大数据·数据库·nosql数据库·neo4j
dushky2 年前
主流NoSQL数据库类型及选型分析
nosql数据库·nosql·数据库架构