[数据库] 数据库全套概念精讲|彻底分清:数据库、DBMS、数据库系统、各类数据库差异

22 0
Honkers 昨天 12:37 | 显示全部楼层 |阅读模式

前言

初学数据库最大的问题:概念混乱。

绝大多数新手分不清: 数据库、数据库软件、数据库系统、SQLite、MySQL、关系型、非关系型之间的层级关系。

本文将以计算机标准专业定义,从零梳理所有层级概念,统一认知,彻底杜绝混淆。

一、三层核心概念(最关键、面试必考)

由小到大层级:数据库 → DBMS → 数据库系统

1. 数据库(Database,DB)—— 数据容器

定义:长期存储在存储设备上、结构化、可共享、统一管理的数据集合。

简单理解: 数据库只是数据本身(表、数据、字段、关系),不是软件

特点:

  • 结构化存储
  • 独立于程序
  • 可被多个程序复用

2. 数据库管理系统(DBMS)—— 操作软件

定义:用于创建、管理、维护数据库的系统软件。

我们日常所说的 MySQL、SQLite、PostgreSQL 统统都是 DBMS。

它的核心功能:

  • 定义数据结构(建表、字段、约束)
  • 数据增删改查
  • 事务、权限、并发、备份、恢复

通俗层级:一个 DBMS 内可以包含多个 Database

3. 数据库系统(DBS)—— 完整整套环境

定义:由硬件、操作系统、DBMS、数据库、应用程序、用户共同组成的完整运行系统。

公式: 数据库系统 = 硬件 + OS + DBMS + DB + 应用 + 用户

✅ 范围最大、最完整的概念

二、彻底区分:数据库字段类型 vs 数据库软件

新手最大误区:把数据类型和数据库软件混为一谈。

1. 数据类型(字段层面)

属于表结构内部规则:Integer、Text、DateTime、Numeric、Boolean 等 作用:规定一列数据能够存储的数据格式。

2. 数据库软件(DBMS 产品层面)

属于管理数据的软件:SQLite、MySQL、PostgreSQL、Oracle 作用:管理多张数据表、整套数据库,提供数据访问能力。

一句话总结:数据类型是 “单元格规则”,DBMS 数据库软件是 “整张表格的管理软件”。

三、数据库两大体系:关系型 VS 非关系型(标准分类)

1. 关系型数据库(SQL 数据库)

核心特征:表结构、行与列、固定字段、主外键、事务、使用 SQL 语句查询。 适合:业务逻辑严谨、数据关联多、要求数据一致性的项目。

主流关系型 DBMS

  • SQLite:文件型、无服务、单机、本地开发首选
  • MySQL:开源轻量、互联网行业最通用、中小型项目主力
  • PostgreSQL:功能最强开源库、复杂查询、数据分析首选
  • SQL Server:微软生态、传统企业管理系统
  • Oracle:商用顶级数据库、银行、金融、大型企业

2. 非关系型数据库(NoSQL)

核心特征:无固定表结构、无主外键、无需标准 SQL、高并发、弱一致性。 适合:海量数据、高频读写、结构多变、缓存场景。

NoSQL 四大分类

  • 键值型:Redis(缓存、热点数据)
  • 文档型:MongoDB(动态结构、前后端灵活项目)
  • 时序型:InfluxDB(监控、传感器时序数据)
  • 图数据库:Neo4j(关系图谱、社交网络)

四、重点对比:SQLite VS MySQL(新手必懂)

两者都属于关系型数据库,但底层架构完全不同

表格

对比维度SQLiteMySQL
架构模式单文件、无服务、嵌入式客户端 / 服务端架构、独立进程
部署难度无需安装,直接使用需要安装、配置、启动服务
并发能力弱,多写场景容易锁表强,支持高并发读写
适用场景本地开发、测试、单机程序、桌面软件线上服务器、网站、多用户后台项目
配置难度零配置需要调优、权限、端口配置

五、ORM 与数据库的层级关系(彻底理清)

⚠️ ORM(SQLAlchemy)不是数据库! ORM 是编程语言与数据库之间的映射翻译层。

完整执行链路: Python 代码对象 → ORM(SQLAlchemy) → 翻译为 SQL → DBMS(MySQL/SQLite) → 落地数据

作用:

  • 不用手写原生 SQL
  • 使用面向对象方式操作数据库
  • 切换数据库几乎不用修改业务代码

拓展:PyMySQL 和 SQLAlchemy 是什么关系?

很多初学者容易混淆 PyMySQL、SQLAlchemy,二者定位完全不同:

  1. PyMySQL 是 Python 操作 MySQL 的驱动程序 它仅仅负责建立 Python 程序与 MySQL 服务之间的网络通信,原生写法需要手动编写 SQL 语句。 执行链路:Python 代码 → PyMySQL → MySQL 服务

  2. SQLAlchemy 是 ORM 框架,底层依赖驱动运行 当 SQLAlchemy 连接 MySQL 时,底层会自动调用 PyMySQL 完成通信。 完整链路: Python对象代码 → SQLAlchemy(ORM自动生成SQL) → PyMySQL(驱动) → MySQL

简单区分:

  • PyMySQL:通信驱动,仅适配 MySQL,开发时手写原生 SQL;
  • SQLAlchemy:上层 ORM 工具,支持多种数据库,底层自动调用对应驱动。

补充:不同数据库需要配套对应的驱动

  • SQLite:Python 内置驱动,无需额外安装;
  • MySQL:配套驱动 pymysql;
  • PostgreSQL:配套驱动 psycopg2。

⚠️ 常见误区纠正: SQLAlchemy 不能替代 PyMySQL。二者属于上下级协作关系,使用 SQLAlchemy 连接 MySQL 时,仍需要安装 PyMySQL 驱动。

六、终极专业总结

  • 数据库 (DB):纯粹的数据集合(表、字段、记录)
  • DBMS:管理数据库的软件,如 SQLite、MySQL
  • 数据库系统 (DBS):整套软硬件环境,范围最大
  • 数据类型:表字段的格式约束,和数据库软件不属于同一层级
  • 关系型数据库:表格结构、支持事务,适合传统业务系统
  • NoSQL:无固定表结构、高并发,适合缓存、海量数据场景
  • ORM:数据库操作工具,不属于数据库本身

七、项目选型标准

  • 本地开发、学习、单机小项目 → SQLite
  • 线上后台、网站、多用户系统 → MySQL
  • 复杂查询、数据分析、严谨业务 → PostgreSQL
  • 高速缓存、临时数据 → Redis
  • 结构灵活、频繁变动项目 → MongoDB
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行