--- title: "00-数据库" created: 2025-11-25 tags: - 项目筑基 --- # 00-数据库 > 🗄️ 项目筑基里最重的一块。以前我总觉得"数据库"就是 MySQL 那一个东西,后来接触的东西多了才发现——数据库是一个大家族:关系型、KV、文档、列存、图、向量……每一类都是为了解决特定问题才被造出来的。这一篇先做**总领介绍**,把整个家族的版图讲清楚,再往下展开一组一组看。 ## 为什么数据库分这么多种? 一句话:**没有万能的数据库,只有适合某种数据形态和访问模式的数据库。** 关系型数据库把数据塞进表格,行是记录、列是字段,用 SQL 查询,靠事务保证不出错——这套模型 1970 年提出来,到今天还是主流。但它不是没有短板:数据必须先定义好表结构(schema),改结构很麻烦;超高的并发读写会卡在磁盘和锁上。 于是后来的人针对不同的"痛点"造出了不同的数据库: - 想要**快**(缓存、会话)→ 把数据放内存里,用最简单的键值对存 → Redis - 想要**灵活**(字段经常变、嵌套结构)→ 别固定表结构了,直接存 JSON 文档 → MongoDB - 想要**海量**(亿级行、宽表)→ 按列存、按列读 → HBase / Cassandra - 想要**找关系**(社交网络、推荐)→ 数据本来就是点和边 → Neo4j - 想要**按语义找**(AI、相似度)→ 存向量、算距离 → Milvus / pgvector ## 数据库家族版图 | 类型 | 数据形态 | 代表 | 强项 | 我库里的位置 | | --- | --- | --- | --- | --- | | 关系型(RDBMS) | 表格,行+列,SQL | MySQL / SQL Server / PostgreSQL / **SQLite** | 事务、复杂查询、强一致 | [[00-关系型数据库总览\|01-关系型]] / [[01-数据库的管理技术及其发展\|Mysql]] | | KV 型 | 键 → 值 | Redis | 极快读写(内存)、做缓存 | [[00-NoSQL 数据库总览\|02-NoSQL]] | | 文档型 | JSON/BSON 文档 | MongoDB | schema 灵活、嵌套结构友好 | [[00-NoSQL 数据库总览\|02-NoSQL]] | | 列存型 | 按列族存的宽表 | HBase / Cassandra | 海量数据、高吞吐写入 | 暂无实操,见 [[00-NoSQL 数据库总览\|02-NoSQL]] 里的介绍 | | 图型 | 点和边 | Neo4j | 关系查询天然高效 | 暂无实操 | | 向量型 | 高维向量(嵌入) | Milvus / Chroma / pgvector / FAISS | 语义相似度检索,AI 时代的刚需 | [[00-向量数据库概览\|03-向量数据库]] | ## 我的学习线是怎么铺开的 **01-关系型**:按产品分四个子文件夹——`sqlserver/` 收学校课程的完整存档,从概念、范式、表管理到 T-SQL 编程;`SQLite/` 收单机场景的主力(一个文件就是一个库,写工具做实验都用它起步);`Mysql/` 收自学的核心资产,18 篇按学习顺序编号——理论 5 篇(管理技术 → 系统与数据模型 → 三级模式 → 设计与 E-R → 逻辑设计)→ 实操 7 篇(库管理 → 建表约束 → 改删表 → 增删改 → 查询四篇)→ 高级 6 篇(索引 → 视图 → 编程 → 存储过程 → 用户权限 → 事务并发),共 6200+ 行 86 图,是我目前最熟、项目里真正在用的;`PostgreSQL/` 正在系统学习,5 篇带编号(01 基础与 MySQL 对照 → 02 类型与表设计 → 03 查询进阶 → 04 索引与 MVCC → 05 Python 实战 psycopg),很常用所以值得从头走一遍。 **02-NoSQL**:Redis(KV,走缓存、求快)和 mongoDB(文档)。诚实说:还没真正在生产里用过——所以这组按"路线 + 系统讲解"两层组织:Redis 5 篇(01 路线 + 02 数据结构与命令 / 03 应用实战 / 04 持久化与高可用 / 05 底层原理),mongoDB 5 篇(02 上手 + 03 思维对照 + 04 索引优化 / 05 副本集与分片 / 06 数据建模),另有一批能回来查的干货手册(命令体感、缓存三兄弟、pymongo、事务备份)。 **03-向量数据库**:AI 时代的新物种。我只有概念认知,没有实操经验,所以这组是四篇学习笔记——00 概览讲清楚"为什么 AI 需要它",01 相似度与向量索引、02 Embedding 模型与文本切块、03 RAG 检索增强生成往下钻原理和应用,等真正用起来再补实操体感。 **04-工具**:Alembic——Python 生态的数据库迁移工具,ORM 改表结构时用它做版本管理。 ## 怎么选? 1. **默认关系型**。结构化数据、要事务、要 SQL,闭眼选 MySQL/PostgreSQL,生态最成熟。 2. **快到极致找 KV**。热点数据、会话、排行榜这种"读多写多但结构简单"的,前面挡一层 Redis。 3. **结构天天变、字段深嵌套**,才考虑文档型。别为了"灵活"放弃 SQL 的查询能力,schema 灵活是双刃剑。 4. **语义搜索**(文本、图片相似)用向量库;AI 应用里一般不是替代关系型,而是**搭配**用:业务数据在 MySQL,嵌入向量在向量库。 5. 单机小工具别上重型数据库——**SQLite 一个文件就够**。 so——数据库选型不是"哪个最强",而是"哪个最匹配你的数据形态和访问模式"。很多时候答案是**组合**:MySQL 管业务、Redis 管缓存、向量库管语义检索。 --- ⬅️ [[00-前端与可视化|00-前端与可视化]] 🏠 [[00-项目筑基|00-项目筑基]] ➡️ [[00-关系型数据库总览|01-关系型]]