NoSQL

NoSQL(Not Only SQL) 是泛指非关系型数据库 的统称,核心是放弃固定表结构、优先水平扩展 + 高可用 + 灵活 Schema,适合海量、高并发、非结构化 / 半结构化数据场景。


一、核心特点(vs 传统 SQL)

  • Schema 灵活:无需预定义表结构,字段可动态增减(SQL 需严格建表)。
  • 水平扩展:易通过加机器扩容(SQL 多为垂直扩容,分库分表复杂)。
  • BASE 而非 ACID :
    • B asically Available(基本可用)
    • Soft state(软状态,允许短暂不一致)
    • Eventual consistency(最终一致性)(SQL 强一致、事务完整)。
  • 数据模型多样:键值、文档、列族、图等。

二、四大主流类型(含代表与场景)

1. 键值型(Key-Value)
  • 原理:哈希表,Key→Value,O (1) 读写。
  • 代表 :Redis(内存 + 持久化)、Memcached、DynamoDB。
  • 场景:缓存、Session、计数器、限流、排行榜。
2. 文档型(Document)
  • 原理:JSON/BSON/XML 文档,支持嵌套与二级索引。
  • 代表 :MongoDB、CouchDB、Couchbase。
  • 场景:内容管理、电商商品、用户画像、日志、App 后台。
3. 宽列 / 列族型(Wide-Column)
  • 原理:按列族存储,动态加列,稀疏数据友好,高写入吞吐。
  • 代表 :Cassandra、HBase、ScyllaDB。
  • 场景:时间序列、IoT 传感器、海量日志、推荐系统。
4. 图数据库(Graph)
  • 原理:节点(实体)+ 边(关系)+ 属性,高效关联查询。
  • 代表 :Neo4j、JanusGraph、ArangoDB。
  • 场景:社交网络、知识图谱、风控 / 反欺诈、路径分析。

三、核心理论

  • CAP 定理 :分布式系统中,一致性 (C)、可用性 (A)、分区容错 (P) 三者无法同时最优;NoSQL 常选AP(高可用)或CP(强一致)。
  • BASE 理论:NoSQL 设计基石,牺牲强一致换高可用与性能。

四、NoSQL vs SQL(选型参考)

表格

维度 SQL(MySQL/Oracle) NoSQL(Mongo/Redis)
数据结构 固定表、行 / 列、外键 灵活 Schema、嵌套、无外键
一致性 强一致(ACID) 最终一致(BASE)
扩展 垂直扩容、分库分表复杂 水平扩容、分片原生支持
事务 完整事务 有限事务或无
适合场景 金融交易、强一致、复杂关联查询 海量数据、高并发、快速迭代、非结构化数据

五、常见误区与最佳实践

  • ❌ 误区:NoSQL 完全替代 SQL → ✅ 正确:混合架构(如 MySQL 存订单 + Redis 缓存 + Mongo 存用户行为)。
  • ❌ 误区:NoSQL 无事务 → ✅ 正确:MongoDB 支持多文档 ACID,Redis 支持事务 / 脚本。
  • ✅ 选型原则:
    1. 数据模型是否简单 / 半结构化?
    2. 是否需要超高并发读写?
    3. 一致性要求是否可接受 "最终一致"?
    4. 是否需要水平扩展能力?

六、学习路径建议

  1. 掌握Redis(键值,缓存 / 高并发必学)。
  2. 学习MongoDB(文档,最接近 SQL,易上手)。
  3. 了解Cassandra/HBase(宽列,大数据 / 时序场景)。
  4. 理解CAP/BASE、分片、复制、一致性哈希等分布式原理。
相关推荐
独隅31 分钟前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
_孤傲_37 分钟前
快速掌握 MySQL 语法
数据库·后端·mysql
数字新视界2 小时前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB3 小时前
从 StarRocks 走向 Apache Doris:如何实现引擎平滑替换与架构升级?
大数据·数据库·数据分析
为思念酝酿的痛3 小时前
MySQL的操作
数据库·mysql
猫咪很可爱3 小时前
Oracle ORA-4031 错误分析与处理:SGA 内存不足导致 update/exp/expdp 失败
数据库·oracle
小豆庄4 小时前
视频素材处理时的隐私盲区:云处理与本地处理的边界在哪
数据库·图像处理·视频·敏捷流程
Umi·4 小时前
MySQL库表操作
数据库·mysql
风哥2号5 小时前
数据库教程FGMT69:PostgreSQL运维诊断与监控分析
运维·数据库·postgresql
ss2735 小时前
AI时代首先数据库-PostgreSQL实战笔记 27 PostgreSQL数据写入与读取流程解析
数据库·笔记·postgresql