Skip to content

数据库

数据库是后端开发的基石。本文档集合覆盖了从关系型、文档型、内存型到搜索引擎和前端存储的完整技术栈。

文档导航

分类文档说明
关系型MySQL 基础环境搭建、Workbench、表设计、CRUD、用户权限、批量数据
MySQL 进阶字段设计、索引优化、聚合/JOIN、事务锁、慢查询
PostgreSQL 基础psql/pgAdmin、schema 架构、特有类型、RETURNING 语法
PostgreSQL 进阶JSONB、高级索引、窗口函数、MVCC、PL/pgSQL、全文搜索
SQLite 基础嵌入式数据库、DB Browser、类型亲和性、对比与选型
文档型MongoDB 基础非关系型概念、Compass、CRUD、聚合管道
MongoDB 进阶聚合管道、索引 ESR 规则、Schema 设计、事务、并发
内存型Redis 基础五大数据类型、Pipeline、旁路缓存模式
Redis 进阶Pub/Sub、Stream、持久化、分布式锁、Lua 脚本
搜索引擎Elasticsearch 基础Kibana、全文搜索、Mapping、聚合
Elasticsearch 进阶IK 分词、向量搜索、RAG 集成、相关性调优
浏览器端IndexedDBDexie.js、浏览器存储全景、离线应用模式

全景对比

一句话定位

数据库一句话定位
MySQL最成熟的开源关系型数据库,Web 应用首选
PostgreSQL最先进的开源关系型数据库,复杂查询和数据分析之王
SQLite嵌入式数据库,本地工具和移动端首选
MongoDB文档型 NoSQL,灵活 Schema + 水平扩展
Redis内存数据结构服务器,缓存和实时场景标配
Elasticsearch分布式搜索引擎,全文搜索和向量检索专用
IndexedDB浏览器端异步事务数据库,离线 Web 应用基石

多维对比

维度MySQLPostgreSQLSQLiteMongoDBRedisElasticsearch
类型关系型关系型嵌入式关系型文档型 NoSQL内存键值搜索引擎
数据模型表+行表+行表+行集合+文档键值/数据结构索引+文档
SQL 标准中等最高中高有自己的 QL自己的命令Query DSL
事务ACIDACIDACID4.0+ ACID有限事务(Lua)
索引B-Tree/FulltextB-Tree/Hash/GiST/GIN/BRINB-TreeB-Tree/Text/Geo/TTL无(内存直接访问)倒排索引/向量
扩展主从/分片流复制/Patroni复制集/分片主从/哨兵/集群天然分布式
部署需服务端需服务端零配置需服务端需服务端需服务端
学习曲线中高低入门高精通中高
典型 QPS1k~100k1k~100k1~1k(单机)1k~100k100k~1M1k~100k

技术选型决策树

需要做什么?

├─ 需要可靠的事务存储(订单、财务、用户)
│  ├─ 数据量大且查询复杂 → PostgreSQL
│  └─ 常规 Web、团队熟悉 → MySQL

├─ 本地工具、移动端、嵌入式
│  └─ SQLite

├─ 需要灵活 Schema、快速迭代、JSON 数据
│  └─ MongoDB

├─ 需要缓存、会话、排行榜、实时计数器
│  └─ Redis

├─ 需要全文搜索、日志分析、RAG 语义检索
│  └─ Elasticsearch

├─ 浏览器端离线存储、PWA
│  └─ IndexedDB

└─ 需要多个?
   └─ 组合使用(这是常态!)
      例:MySQL(业务) + Redis(缓存) + ES(搜索) + MongoDB(日志)

经典组合

场景组合方案
中小型 Web 应用MySQL + Redis
内容/社区/实时应用PostgreSQL + Redis + MongoDB(日志/行为数据)
AI/RAG 知识库PostgreSQL(结构化数据)+ Elasticsearch(向量检索)+ Redis(缓存)
离线桌面应用SQLite(本地存储)
离线 Web/PWAIndexedDB + Cache API
实时分析/监控Elasticsearch + Redis
高并发社交/物联网MongoDB(水平分片)+ Redis(缓存/队列)

学习建议

  1. 先学透一个关系型:MySQL 或 PostgreSQL 拿一个做到熟练 CRUD + 索引 + 事务
  2. 再加 Redis:缓存是后端面试的必考项,也是性能优化的核心手段
  3. 按需扩展:遇到灵活性需求学 MongoDB,遇到搜索需求学 ES,做离线应用学 IndexedDB
  4. 别同时学三四个:数据库之间概念会串,先深入一个,再横向扩展

数据库是后端工程师最重要的硬技能之一。不是"会用 SQL 就行"——理解索引原理、事务隔离、并发控制,才能写出高性能、高可靠的系统。