Skip to content

第七章 非关系型数据库 v1.0 ​

第一部分 NoSQL概述 ​

一、什么是NoSQL ​

1.定义 ​

NoSQL(Not Only SQL)是对不同于传统关系型数据库的数据管理系统的统称。NoSQL用于超大规模数据的存储,这些数据类型不需要固定的模式,无需多余操作就可以横向扩展。

2.特点 ​

  • 高可扩展性:分布式架构,支持水平扩展
  • 高可用性:无单点故障,自动故障转移
  • 低延迟:针对特定数据模型优化,读写性能高
  • 灵活的数据模型:无需预定义模式(Schema-less)

二、CAP理论 ​

对于一个分布式系统,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)三个特点最多只能三选二。

  • CA系统:满足一致性和可用性,但无法容忍分区(传统关系型数据库)
  • CP系统:满足一致性和分区容忍性,但可能牺牲可用性(如MongoDB、Redis)
  • AP系统:满足可用性和分区容忍性,但可能牺牲一致性(如Cassandra)

第二部分 NoSQL数据库类型 ​

一、键值存储(Key-Value) ​

1.特点 ​

  • 数据模型简单,通过Key直接访问Value
  • 读写性能极高,通常基于内存
  • 适合缓存、会话管理、排行榜等场景

2.代表产品 ​

  • Redis:支持丰富数据结构(String、Hash、List、Set、Sorted Set),支持持久化
  • Memcached:高性能分布式内存缓存系统,仅支持简单键值对
  • etcd:分布式键值存储,用于配置管理和服务发现

二、文档存储(Document) ​

1.特点 ​

  • 数据以JSON/BSON/XML等格式存储
  • 支持复杂的数据结构和嵌套
  • 支持丰富的查询语言和索引

2.代表产品 ​

  • MongoDB:最流行的文档数据库,支持灵活的查询和聚合
  • CouchDB:面向文档的数据库,支持RESTful API
  • Elasticsearch:基于Lucene的搜索引擎,也常作为文档数据库使用

三、列存储(Column-Family) ​

1.特点 ​

  • 数据按列族(Column Family)组织
  • 适合大规模数据集的分布式存储
  • 支持高并发读写

2.代表产品 ​

  • Cassandra:分布式NoSQL数据库,高可用性和可扩展性
  • HBase:基于Hadoop的列存储数据库,适合大数据场景

四、图数据库(Graph) ​

1.特点 ​

  • 数据以节点(Node)和边(Edge)的形式存储
  • 适合处理复杂的关系网络
  • 支持高效的图遍历和关系查询

2.代表产品 ​

  • Neo4j:最流行的图数据库,支持Cypher查询语言
  • JanusGraph:分布式图数据库,支持多种存储后端

第三部分 SQL vs NoSQL ​

一、对比 ​

特性SQLNoSQL
数据模型关系型(表)键值、文档、列、图
模式固定模式(Schema-on-Write)动态模式(Schema-on-Read)
扩展方式垂直扩展(Scale Up)水平扩展(Scale Out)
事务支持ACID最终一致性(部分支持ACID)
查询语言SQL各产品自定义
适用场景复杂查询、事务处理大数据、高并发、灵活模型

二、如何选择 ​

1.选择SQL的场景 ​

  • 数据结构稳定,关系复杂
  • 需要ACID事务保证
  • 需要复杂的关联查询和报表

2.选择NoSQL的场景 ​

  • 数据模型灵活多变
  • 需要处理海量数据和高并发
  • 需要水平扩展能力
  • 对性能要求极高(如缓存)