数据库管理系统(DBMS)详细介绍
数据库管理系统(DBMS)是介于用户与操作系统之间的数据管理软件,用于定义、创建、查询、更新和管理数据库。它支持多种数据模型(关系型、NoSQL等),提供事务管理(ACID特性)、并发控制、安全权限、备份恢复等核心功能。典型架构包括解析器、优化器、执行引擎、存储管理等模块。主流DBMS如MySQL、PostgreSQL、Oracle各有特点,适用于不同场景。DBMS能确保数据独立性、完整性和安全性
数据库管理系统(DBMS, Database Management System)是位于用户与操作系统之间的一层数据管理软件,用于定义、创建、查询、更新、管理和保护数据库中的数据。它是现代信息系统的核心组件。
一、什么是 DBMS?
DBMS 是允许用户和应用程序对数据库进行以下操作的系统软件:
-
定义数据结构(表、视图、索引、约束等)
-
插入 / 更新 / 删除 / 查询数据
-
控制多用户并发访问
-
保证数据安全、完整、一致
-
提供备份、恢复、权限管理
👉 常见例子:
-
关系型 DBMS:MySQL、PostgreSQL、Oracle Database、SQL Server、SQLite
-
非关系型(NoSQL) DBMS:MongoDB(文档)、Redis(键值)、Elasticsearch(搜索引擎)、Cassandra(列族)
-
NewSQL:TiDB、CockroachDB
二、DBMS 的整体架构(典型关系型)
┌──────────────┐
│ 用户 / 应用 │ (SQL / API)
└───────▲──────┘
│
┌───────┴─────────── DBMS ───────────────┐
│ │
│ DDL / DML 解析器 │
│ ├─ SQL 解析 → 语法树 → 执行计划 │
│ │
│ 查询优化器 │
│ │
│ 执行引擎 │
│ │
│ 事务管理器(Transaction Manager) │
│ ├─ 并发控制(锁 / MVCC) │
│ │
│ 恢复管理器(日志 & 检查点) │
│ │
│ 存储管理器 │
│ ├─ 缓冲池 / 磁盘 I/O / 索引(B+Tree) │
└────────────────────────────────────────┘
│
┌───────┴────────┐
│ 物理存储(文件) │
└────────────────┘
三、DBMS 的核心功能模块
1️⃣ 数据定义(DDL)
通过 DDL(Data Definition Language) 定义:
CREATE TABLE / ALTER TABLE / DROP TABLE
CREATE INDEX / CREATE VIEW
DBMS 会维护数据字典(系统目录)来记录元数据。
2️⃣ 数据操纵(DML)
通过 DML(Data Manipulation Language):
SELECT -- 查询
INSERT -- 插入
UPDATE -- 更新
DELETE -- 删除
支持复杂查询(JOIN、子查询、聚合、分组、排序)。
3️⃣ 事务管理(ACID)
DBMS 保证事务(Transaction)的 ACID 特性:
|
特性 |
说明 |
|---|---|
|
Atomicity(原子性) |
全做或全不做(UNDO Log) |
|
Consistency(一致性) |
从一个一致状态到另一个一致状态 |
|
Isolation(隔离性) |
并发事务互不干扰(锁 / MVCC) |
|
Durability(持久性) |
提交后不丢失(REDO Log) |
隔离级别:
-
READ UNCOMMITTED
-
READ COMMITTED
-
REPEATABLE READ(MySQL InnoDB 默认)
-
SERIALIZABLE
4️⃣ 并发控制
-
锁机制:共享锁(S)、排他锁(X)、意向锁
-
MVCC(多版本并发控制):读写不阻塞(PostgreSQL、InnoDB)
-
防止:脏读、不可重复读、幻读
5️⃣ 完整性约束
-
实体完整性:
PRIMARY KEY -
参照完整性:
FOREIGN KEY -
用户定义完整性:
NOT NULL、CHECK、UNIQUE
6️⃣ 安全性与权限控制
CREATE USER / GRANT / REVOKE
-
认证(用户名/密码 / LDAP / Kerberos)
-
授权(表级 / 列级 / 行级)
7️⃣ 备份与恢复
-
逻辑备份:
mysqldump、pg_dump -
物理备份:热备 / 冷备
-
WAL(Write-Ahead Logging)+ 检查点实现崩溃恢复
8️⃣ 存储与索引
-
数据存储:堆文件 / 页(Page)/ 块(Block)
-
索引结构:
-
B+ Tree(范围查询,最常用)
-
Hash(等值查询)
-
Bitmap / GiST(特殊场景)
-
四、DBMS 的主要分类
✅ 按数据模型
|
类型 |
示例 |
|---|---|
|
关系型(RDBMS) |
MySQL、Oracle、PG、SQL Server |
|
文档型(NoSQL) |
MongoDB、CouchDB |
|
键值型(NoSQL) |
Redis、DynamoDB |
|
列族(NoSQL) |
Cassandra、HBase |
|
图数据库 |
Neo4j、JanusGraph |
✅ 按部署方式
-
单机(SQLite)
-
客户端–服务器(MySQL、PG)
-
分布式 / 集群(TiDB、CockroachDB、MongoDB Sharded Cluster)
五、DBMS vs 数据库 vs SQL
|
概念 |
说明 |
|---|---|
|
数据库(DB) |
存储数据的集合(表、记录等) |
|
DBMS |
管理数据库的软件 |
|
SQL |
大多数关系型 DBMS 使用的查询语言 |
|
数据库系统 |
DB + DBMS + 应用 |
六、DBMS 的优点 & 缺点
✅ 优点
-
数据独立性(逻辑/物理)
-
统一的安全与权限管理
-
并发控制与事务保障
-
减少数据冗余(规范化)
-
强大的查询能力
⚠️ 缺点
-
安装和维护成本较高
-
学习曲线(调优、索引设计)
-
分布式场景下复杂度上升
七、常见 DBMS 简要对比
|
DBMS |
特点 |
|---|---|
|
MySQL |
开源、轻量、Web 应用广泛(InnoDB 支持 ACID) |
|
PostgreSQL |
功能强、标准兼容好、支持 JSON / 自定义类型 |
|
Oracle |
企业级、贵、功能极丰富 |
|
SQL Server |
Windows 生态友好、BI 集成好 |
|
SQLite |
嵌入式、零配置、单机应用 |
|
MongoDB |
文档模型、灵活 Schema |
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)