Node系列 · 数据库:数据库简介
数据库(Database)是"按结构组织、能被高效存取和管理的相关数据集合"。它解决的核心问题是:怎么把数据长期存下来,并且保证数据找得到、改得对、丢不了。
一、数据库能干什么
四个核心能力:
| 能力 | 含义 | 典型场景 |
|---|---|---|
| 持久化存储 | 数据写到磁盘,重启后仍在 | 用户注册信息、订单记录、日志 |
| 备份与恢复 | 灾难时能复原数据 | 数据库快照、主从同步 |
| 快速存取 | 大量数据毫秒级查询 | 索引、B+ 树、查询优化器 |
| 权限控制 | 不同角色看不同数据 | DBA 给开发只读权限、给运营特定表权限 |
对应到 Node 项目里,最常见的就是 MySQL 这种关系型数据库——几乎所有业务都离不开。
二、数据库类型
| 类型 | 特点 | 典型代表 | 何时选 |
|---|---|---|---|
| 关系型 | 表格 + SQL + 事务 | MySQL、PostgreSQL、Oracle、SQL Server | 数据有强结构关系、要事务、要 JOIN |
| 非关系型(NoSQL) | 灵活 schema、高并发、海量数据 | MongoDB(文档)、Redis(KV)、Elasticsearch(搜索) | 数据半结构化或无结构、要求高吞吐 |
| 面向对象 | 数据按对象组织 | db4o、ObjectDB | 已被关系型 + ORM 替代,几乎不用 |
TIP
Node 项目里最常见的组合:MySQL/PostgreSQL 存业务数据 + Redis 做缓存/队列/限流 + MongoDB 存日志/文档。本指南聚焦 MySQL。
三、关系型 vs 非关系型
| 维度 | 关系型(MySQL) | 非关系型(MongoDB / Redis) |
|---|---|---|
| 数据模型 | 二维表(行 + 列) | 文档 / KV / 列族 / 图 |
| Schema | 严格(先建表才能插数据) | 灵活(同一集合字段可不同) |
| 查询语言 | SQL | 各异(MongoDB Query / Redis Commands) |
| 事务 | ACID 强支持 | 大多数只保证最终一致 |
| JOIN | 原生支持 | 一般不支持(应用层解决) |
| 扩展方式 | 纵向扩展(升级单机) | 横向扩展(加节点) |
| 适用 | 订单、支付、用户关系 | 日志、缓存、文档、社交 feed |
四、核心术语
| 缩写 | 全称 | 含义 |
|---|---|---|
| DB | Database | 数据库(按结构组织的数据集合本身) |
| DBA | Database Administrator | 数据库管理员(运维数据库的角色) |
| DBMS | Database Management System | 数据库管理系统(操作数据库的软件,如 MySQL Server) |
| DBS | Database System | 数据库系统(DB + DBA + DBMS + 应用程序的总和) |
INFO
口语里"数据库"既可能指 DB(一组数据),也可能指 DBMS(一个软件)——根据上下文判断。日常说的"装个数据库"通常指装 MySQL Server 这个软件。
五、SQL 三大分支
SQL 是"结构化查询语言"的统称,按用途分三支:
| 分支 | 含义 | 常见命令 |
|---|---|---|
| DDL(Data Definition Language) | 数据定义 | CREATE / DROP / ALTER(库、表、字段) |
| DML(Data Manipulation Language) | 数据操作 | INSERT / UPDATE / DELETE(行) |
| DCL(Data Control Language) | 数据控制 | GRANT / REVOKE(权限) |
另有一个常被并列的 DQL(Data Query Language)特指 SELECT——虽然技术上属于 DML,但因为查询占比最大被单列出来。
六、小结
- 数据库核心能力:持久化、备份恢复、快速存取、权限控制
- 关系型(MySQL/PostgreSQL)是业务系统主力;非关系型(MongoDB/Redis)做缓存/文档/日志
- 关键术语:DB(数据)/ DBA(人)/ DBMS(软件)/ DBS(系统)
- SQL 三分支:DDL(建表)/ DML(增删改)/ DCL(权限)
