数据库管理系统(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 NULLCHECKUNIQUE


6️⃣ 安全性与权限控制

CREATE USER / GRANT / REVOKE
  • 认证(用户名/密码 / LDAP / Kerberos)

  • 授权(表级 / 列级 / 行级)


7️⃣ 备份与恢复

  • 逻辑备份:mysqldumppg_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


Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐