跳到主要内容

数据库知识体系概览

什么是数据库?

数据库(Database) 是一种按照特定结构组织、存储和管理数据的系统。你可以把它理解为一个高级的"数据仓库"——它不仅能存放海量数据,还能极快地查找、修改和删除数据,同时保证数据的一致性和安全性。

几乎所有的 Web 应用都需要数据库:用户注册登录时,账号密码存在数据库里;刷朋友圈时,每条动态从数据库中读出来;下单购物时,订单和库存的变化要写入数据库——没有数据库,Web 应用只是一个没有记忆的空壳


为什么前端也要学数据库?

过去数据库完全是后端的领地,但今天的前端开发边界正在快速扩展:

  1. 全栈开发兴起:Next.js、NestJS 等框架让前端工程师直接操作数据库、写 API 接口
  2. BFF 层(Backend For Frontend):前端团队负责的中间层需要直接对接数据库
  3. Serverless 架构:前端直连 Supabase、PlanetScale 等云数据库,不再需要传统后端
  4. 面试需求:Redis 缓存、SQL 优化、事务隔离级别是后端面试的高频考题,全栈岗位更是必考
  5. 排查问题:理解数据库能帮你定位"接口为什么慢"、"数据为什么不一致"等线上问题

数据库的核心分类

关系型数据库(SQL)

关系型数据库用"表格"的形式组织数据,就像 Excel 表格一样——每一行是一条记录,每一列是一个字段。表与表之间通过"关系"(如外键)连接。

users 表:
+----+--------+-------------------+
| id | name | email |
+----+--------+-------------------+
| 1 | 张三 | zhang@example.com |
| 2 | 李四 | li@example.com |
+----+--------+-------------------+

orders 表:
+----+---------+--------+--------+
| id | user_id | amount | status |
+----+---------+--------+--------+
| 1 | 1 | 99.00 | paid |
| 2 | 2 | 199.00 | unpaid |
+----+---------+--------+--------+

代表产品:MySQL(最流行)、PostgreSQL(功能最强)、SQLite(轻量嵌入式)。

它们都使用 SQL(Structured Query Language) 来查询数据:

-- 查询张三的所有订单
SELECT orders.* FROM orders
JOIN users ON orders.user_id = users.id
WHERE users.name = '张三';
核心优势

关系型数据库的最大优势是事务(Transaction)——它能保证"要么全部成功,要么全部回滚",这对转账、下单等操作至关重要。

非关系型数据库(NoSQL)

NoSQL(Not Only SQL)不使用传统表格结构,适合存储非结构化或半结构化数据。

类型代表产品数据模型适用场景
文档型MongoDBJSON 文档内容管理、用户画像
键值型RedisKey-Value缓存、Session、排行榜
搜索引擎Elasticsearch倒排索引全文搜索、日志分析
时序型InfluxDB时间戳序列监控数据、IoT
向量型Pinecone、Milvus向量嵌入AI 语义搜索、RAG

你需要重点掌握的核心概念

1. 索引——让查询从"几秒"变成"几毫秒"

索引就像书的目录。没有目录,找一个知识点需要一页一页翻;有了目录,直接翻到对应页码。数据库索引的原理类似,底层通常使用 B+ 树数据结构,将查询的时间复杂度从 O(n)O(n) 降低到 O(logn)O(\log n)

2. 事务——保证数据操作的可靠性

事务是一组操作的集合,要么全部执行成功,要么全部不执行。经典的例子是转账:A 扣钱和 B 加钱必须同时成功或同时失败。事务有四个特性,简称 ACID

  • Atomicity(原子性):不可分割,全部成功或全部回滚
  • Consistency(一致性):执行前后数据状态合法
  • Isolation(隔离性):并发事务互不干扰
  • Durability(持久性):提交后数据永久保存

3. 缓存——用 Redis 给数据库"减压"

Redis 是最流行的内存数据库,读写速度极快(微秒级),常被用作缓存层——先在 Redis 中查找,命中就直接返回;没命中再去 MySQL 查,然后把结果写入 Redis。

但"缓存与数据库的一致性"是一个经典难题——当 MySQL 的数据更新了,Redis 里的旧缓存怎么办?这在面试中是高频考点。

4. ORM——用代码代替 SQL

ORM(Object-Relational Mapping) 将数据库表映射为代码中的对象,让你用编程语言操作数据库而不用写原生 SQL。前端/Node.js 生态中常用的 ORM:Prisma(类型安全,最推荐)、TypeORM(装饰器风格)、Drizzle(轻量 SQL-like)。


面试中数据库知识的考察维度

  • 初级:SQL 基本语法、索引是什么、事务 ACID
  • 中级:索引失效场景、隔离级别、Redis 数据结构、ORM 使用
  • 高级:B+ 树原理、MVCC 实现、分库分表、缓存一致性、分布式事务

学习建议

推荐学习路径
  1. 先理解 SQL 和关系型数据库 → 掌握建表、查询、索引的基本功
  2. 深入索引和事务 → 面试考察最多的底层原理
  3. 学习 Redis → 缓存是所有 Web 系统的标配
  4. 掌握一个 ORM → 前端全栈开发的必备工具
  5. 了解 NoSQL 生态 → MongoDB、Elasticsearch、向量数据库
  6. 进阶高可用方案 → 主从复制、分库分表、分布式事务

相关链接