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、分片、复制、一致性哈希等分布式原理。
相关推荐
IvorySQL6 小时前
PG 日报|新增 VACUUM 全维度统计信息补丁迭代
数据库·人工智能·postgresql·ivorysql
白露与泡影8 小时前
Redis 缓存实战:雪崩、穿透、击穿一次讲透
数据库·redis·缓存
赵渝强老师9 小时前
【赵渝强老师】使用Oracle可传输的表空间迁移数据
数据库·oracle
IpdataCloud10 小时前
跨区服玩家延迟高怎么办?用IP离线库自动分配到最近服务器
数据库·tcp/ip·github·php·ip
wuqingshun31415911 小时前
MYSQL默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql
空中湖12 小时前
电池简史(五):极限之梦与终章——锂硫、锂空气、量子电池,以及你该知道的电池投资与生活指南
数据库·程序人生
蓝胖子酱13 小时前
在 Electron 中用 electron-store 实现加密存储与自定义格式文件
前端·javascript·数据库
snow@li14 小时前
Redis:数据库语法速查表 / 全景梳理
数据库·redis·缓存
Devlive 开源社区14 小时前
Nebula 1.6.0 发布:跨区域桶自动路由、秒传、文本/PDF 预览一次到位
数据库·sql
这个DBA有点耶14 小时前
导个数据中文全变问号?字符集这事儿真没那么简单
数据库·mysql·代码规范