00-数据库
🗄️ 项目筑基里最重的一块。以前我总觉得"数据库"就是 MySQL 那一个东西,后来接触的东西多了才发现——数据库是一个大家族:关系型、KV、文档、列存、图、向量……每一类都是为了解决特定问题才被造出来的。这一篇先做总领介绍,把整个家族的版图讲清楚,再往下展开一组一组看。
为什么数据库分这么多种?
一句话:没有万能的数据库,只有适合某种数据形态和访问模式的数据库。
关系型数据库把数据塞进表格,行是记录、列是字段,用 SQL 查询,靠事务保证不出错——这套模型 1970 年提出来,到今天还是主流。但它不是没有短板:数据必须先定义好表结构(schema),改结构很麻烦;超高的并发读写会卡在磁盘和锁上。
于是后来的人针对不同的"痛点"造出了不同的数据库:
- 想要快(缓存、会话)→ 把数据放内存里,用最简单的键值对存 → Redis
- 想要灵活(字段经常变、嵌套结构)→ 别固定表结构了,直接存 JSON 文档 → MongoDB
- 想要海量(亿级行、宽表)→ 按列存、按列读 → HBase / Cassandra
- 想要找关系(社交网络、推荐)→ 数据本来就是点和边 → Neo4j
- 想要按语义找(AI、相似度)→ 存向量、算距离 → Milvus / pgvector
数据库家族版图
| 类型 | 数据形态 | 代表 | 强项 | 我库里的位置 |
|---|---|---|---|---|
| 关系型(RDBMS) | 表格,行+列,SQL | MySQL / SQL Server / PostgreSQL / SQLite | 事务、复杂查询、强一致 | 01-关系型 / Mysql |
| KV 型 | 键 → 值 | Redis | 极快读写(内存)、做缓存 | 02-NoSQL |
| 文档型 | JSON/BSON 文档 | MongoDB | schema 灵活、嵌套结构友好 | 02-NoSQL |
| 列存型 | 按列族存的宽表 | HBase / Cassandra | 海量数据、高吞吐写入 | 暂无实操,见 02-NoSQL 里的介绍 |
| 图型 | 点和边 | Neo4j | 关系查询天然高效 | 暂无实操 |
| 向量型 | 高维向量(嵌入) | Milvus / Chroma / pgvector / FAISS | 语义相似度检索,AI 时代的刚需 | 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 改表结构时用它做版本管理。
怎么选?
- 默认关系型。结构化数据、要事务、要 SQL,闭眼选 MySQL/PostgreSQL,生态最成熟。
- 快到极致找 KV。热点数据、会话、排行榜这种"读多写多但结构简单"的,前面挡一层 Redis。
- 结构天天变、字段深嵌套,才考虑文档型。别为了"灵活"放弃 SQL 的查询能力,schema 灵活是双刃剑。
- 语义搜索(文本、图片相似)用向量库;AI 应用里一般不是替代关系型,而是搭配用:业务数据在 MySQL,嵌入向量在向量库。
- 单机小工具别上重型数据库——SQLite 一个文件就够。
so——数据库选型不是"哪个最强",而是"哪个最匹配你的数据形态和访问模式"。很多时候答案是组合:MySQL 管业务、Redis 管缓存、向量库管语义检索。
💬 评论