Skip to content

数据库

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

文档导航

分类文档说明
关系型MySQL环境搭建、CRUD、索引优化、事务锁
PostgreSQLpsql/pgAdmin、JSONB、高级索引、全文搜索
SQLite 基础嵌入式数据库、DB Browser、类型亲和性
文档型MongoDB非关系型概念、CRUD、聚合管道、Schema 设计
内存型Redis五大数据类型、缓存模式、Pub/Sub、持久化
搜索引擎Elasticsearch全文搜索、IK 分词、向量搜索、RAG 集成
向量型Milvus 基础向量数据库、语义检索、RAG 知识库
图数据库Neo4j图数据库、Cypher、GraphRAG、性能优化
浏览器端IndexedDBDexie.js、浏览器存储全景、离线应用模式

全景对比

一句话定位

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

多维对比

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

技术选型决策树

需要做什么?

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

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

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

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

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

├─ 需要语义检索、AI 知识库、向量相似度搜索
│  └─ Milvus

├─ 需要实体关联、多跳推理、知识图谱
│  └─ Neo4j

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

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

经典组合

场景组合方案
中小型 Web 应用MySQL + Redis
内容/社区/实时应用PostgreSQL + Redis + MongoDB(日志/行为数据)
AI/RAG 知识库PostgreSQL(结构化数据)+ Elasticsearch(词条检索)+ Milvus(语义检索)+ Neo4j(知识图谱)+ Redis(缓存)
离线桌面应用SQLite(本地存储)
离线 Web/PWAIndexedDB + Cache API
实时分析/监控Elasticsearch + Redis
混合检索 RAGElasticsearch(词条匹配)+ Milvus(语义匹配)+ Neo4j(关系图谱)+ Rerank(重排序)
高并发社交/物联网MongoDB(水平分片)+ Redis(缓存/队列)

学习建议

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

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