1️⃣ 关系型数据库(Relational Database,RDBMS)
核心概念
- 数据以 表(Table) 形式存储
- 表由 行(Row) 和 列(Column) 组成
- 表与表之间可以通过 外键(Foreign Key) 建立关系
- 数据结构固定,需要定义 Schema
- 支持 ACID 事务(原子性、一致性、隔离性、持久性)
典型代表
- MySQL
- PostgreSQL
- Oracle
- SQL Server
特点
特性 描述
数据结构 表格形式,严格 schema
查询语言 SQL
事务 完整支持 ACID
关系 表与表可以 join
优势 数据一致性高,适合核心业务系统
缺点 扩展性差(水平扩展困难),大规模海量数据性能可能受限
示例
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
INSERT INTO users (id, name, age) VALUES (1, '张三', 20);
SELECT * FROM users WHERE name='张三';
2️⃣ 非关系型数据库(NoSQL)
核心概念
- 不用固定表结构(Schema-less),数据形式多样
- 主要存储模式:
- 文档型(Document) → JSON 文档
- 例如:Elasticsearch、MongoDB
- 键值型(Key-Value) → Redis、Riak
- 通过 key 直接获取 value
- 列族型(Column-Family) → HBase、Cassandra
- 类似关系型表,但列可以动态添加
- 图数据库 → Neo4j
- 存储节点和边,适合社交网络、推荐系统
- 文档型(Document) → JSON 文档
- 支持高并发、分布式、水平扩展
- 事务支持弱,有些只支持文档级事务或最终一致性
特点
特性 描述
数据结构 灵活,JSON、键值、列族或图
查询语言 DSL、API 或专有查询语言
事务 弱事务(部分支持最终一致性)
关系 数据间关系弱或用嵌套结构表示
优势 扩展性好,适合大数据、搜索、缓存、日志分析
缺点 数据一致性和完整性不如关系型数据库
示例(文档型 MongoDB)
db.animals.insert({
"_id": 1,
"name": "猫",
"age": 2,
"description": "可爱的小动物"
});
db.animals.find({ "name": "猫" });
3️⃣ 核心区别总结
特性 关系型数据库 RDBMS 非关系型数据库 NoSQL
数据结构 表格、固定 schema 文档/键值/列族/图,灵活 schema
查询语言 SQL API 或 DSL,不一定用 SQL
事务 完整 ACID 弱事务/最终一致性
扩展性 垂直扩展为主 水平扩展方便
适用场景 核心业务系统(银行、ERP) 大数据、搜索、缓存、日志分析
示例 MySQL, Oracle Elasticsearch, MongoDB, Redis
💡 小结:
- RDBMS → 注重数据一致性、关系型、适合传统业务系统
- NoSQL → 注重性能、可扩展性、适合大数据、搜索、缓存、日志分析等场景