数据库导论:12 分钟看懂整个数据库世界
面向零基础学习者的数据库导论教程,12分钟建立数据库世界地图,覆盖为何需要数据库、OLTP vs OLAP、9类数据库系统(关系型、键值、文档、宽列、图、搜索、时序、OLAP、向量)、SQL vs NoSQL、共同框架(Schema、数据类型、CRUD、持久化、索引)、对象存储与数据库的区别,以及程序如何通过 Driver、Connection Pool、ORM 连接数据库。
视频讲解
数据库导论:12 分钟看懂整个数据库世界
Episode 0 / 导论篇:建立地图,而不是背定义。
A. 完整课程教材
课程定位
这节课不是传统大学数据库课。它不从定义开始,不要求观众记住一堆术语,而是用一次探索式旅程回答三个问题:
- 数据长什么样?
- 它最擅长回答什么问题?
- 它为什么不能被另一个数据库完全替代?
12 分钟之后,观众应该第一次真正看懂:为什么 MySQL、PostgreSQL、Redis、MongoDB、Cassandra、ScyllaDB、ClickHouse、Elasticsearch、Neo4j、InfluxDB、DuckDB、Qdrant、Milvus 会同时存在。
本期是整个数据库系列的 Episode 0。它负责分类、定位、比较和埋钩子,不把每个数据库的内部机制一次讲完。
MODULE 01|为什么需要数据库?
先不要急着定义数据库。想象你在做一个小网站,最开始只有几条用户记录,放在 TXT、CSV、JSON 文件里当然能跑。
TXT CSV JSON
用户列表 订单列表 配置对象
\ | /
数据越来越多
|
v
查询、并发、恢复、扩展
问题不是“文件能不能存数据”。文件当然能存。真正的问题是:数据变多、用户变多、程序变复杂之后,文件会逐渐顶不住。
你会开始遇到这些事:
- 怎么从 1000 万条记录里快速找到一个用户?
- 两个人同时修改库存,谁先谁后?
- 订单扣款成功,但库存更新失败,怎么办?
- 服务器突然宕机,刚写入的数据还在吗?
- 数据越积越多,单机放不下怎么办?
数据库真正解决的不是“能不能存”,而是“能不能安全、高效、长期、并发地管理数据”。
文件
|
| 数据量上升
v
问题出现
├─ Query:怎么查
├─ Concurrency:怎么多人同时改
├─ Integrity:怎么不写坏
├─ Recovery:宕机后怎么恢复
├─ Persistence:怎么长期保存
└─ Scale:怎么变大
|
v
Database
这一刻,数据库才出现。它不是更高级的文件夹,而是一套管理数据的系统。
MODULE 02|为什么会出现这么多数据库?
第一个明显分叉,是 OLTP 和 OLAP。
OLTP 指在线事务处理。它关心大量、小型、高频、实时的业务操作,比如注册、下单、支付、扣库存、改余额。MySQL、PostgreSQL、Oracle、SQL Server 是典型代表。
OLAP 指在线分析处理。它关心扫描大量历史数据,做 SUM、AVG、GROUP BY、趋势分析和报表统计。ClickHouse、Snowflake、BigQuery、DuckDB 是典型代表。
OLTP OLAP
小交易流 大表扫描
订单 支付 库存 十亿行数据
| | | |
v v v v
马上正确完成 快速聚合算完
一句话:
OLTP 更关心“一笔业务能不能马上正确完成”;OLAP 更关心“十亿条数据能不能马上算完”。
但 OLTP / OLAP 只是数据库分化的一部分原因,不是全部原因。数据库越来越多,是因为人类向数据提出的问题越来越不一样。
继续分化的原因包括:
- 数据形态不同:表格、键值、文档、图、向量都不一样。
- 查询方式不同:有人按 ID 查,有人全文搜索,有人找关系路径,有人找语义相似。
- 性能目标不同:有人要低延迟,有人要高吞吐,有人要大规模扫描。
- 一致性要求不同:金融余额和日志分析对“马上正确”的要求不同。
- 规模不同:单机、小集群、全球分布式系统面对的问题完全不同。
核心观点:
不是数据库越来越乱,而是问题越来越多样。
MODULE 03|数据库世界地图
下面这张图是本期最重要的知识地图。但必须先说明:这些类别并不都在同一个分类维度上。
Relational、Key-Value、Document、Wide-Column、Graph 主要描述逻辑数据模型,也就是数据在数据库里主要被抽象成什么样。
Search、Time-Series、OLAP、Vector 更多代表专业工作负载、核心访问模式或专业数据库系统类别。
为了工程理解,我们把它们放进同一张类别矩阵,但要记住:
类别存在重叠,现代数据库越来越 Multi-model。
Database World
|
-------------------------------------------------
| | | | |
Data Model Workload Access Scale Ecosystem
| | | | |
表/键值/文档 事务/分析 搜索/相似 单机/分布式 Driver/ORM/SDK
Relational 像一张张表。它擅长复杂业务、事务和关联关系。PostgreSQL、MySQL、Oracle、SQL Server 是老牌代表。它不是只能做传统表,PostgreSQL 还能处理 JSON,甚至通过 pgvector 做向量检索。
Key-Value 像一个巨大的字典:给我 Key,我马上给你 Value。Redis 和 DynamoDB 是典型代表。它擅长缓存、会话、排行榜、状态读取,但不适合复杂条件查询和关系查询。
Document 把数据组织成类似 JSON 的文档。MongoDB、Couchbase 是代表。它适合结构变化快、嵌套明显的内容,比如商品详情、用户画像、配置数据。
Wide-Column 不是列式存储。它更像用 Row Key 找到一个分区,再在 Column Family 里组织大量稀疏字段。Cassandra、ScyllaDB、HBase 代表这类系统,擅长海量写入和水平扩展。
Graph 把世界看成 Node 和 Edge。Neo4j 是代表。它擅长多跳关系,比如好友网络、知识图谱、风控链路、推荐路径。
Search 关注全文检索和相关性排序。Elasticsearch、OpenSearch 是代表。它不是为了强事务下单而生,而是为了“用户搜一句话,系统找到最相关的文档”。
Time-Series 关注时间戳和指标。InfluxDB、TimescaleDB 常用于监控、IoT、行情、传感器数据。它的问题通常是“过去 5 分钟 CPU 平均值是多少”。
OLAP 关注大规模分析。ClickHouse、DuckDB、Snowflake 代表不同场景下的分析系统。它擅长扫描和聚合,不适合高频单行事务更新。
Vector 关注向量和元数据。Qdrant、Milvus、Pinecone、pgvector 常用于 RAG、语义搜索和多模态检索。它不是简单“存非结构化数据”,而是把文本、图片、音频经过模型变成 Embedding,再做 Similarity Search。
MODULE 04|SQL vs NoSQL
SQL 是结构化查询语言,和关系型数据库强相关。你用它描述“我要哪些列、从哪张表、按什么条件过滤、怎么 Join”。
NoSQL 不是一个严谨的数据模型分类。它是历史上形成的宽泛类别,常被理解为 Not Only SQL,通常包括 Key-Value、Document、Wide-Column、Graph。
SQL / NoSQL
|
v
方便但粗糙的标签
|
v
真正要问:
数据模型是什么?
访问模式是什么?
核心工作负载是什么?
现代数据库已经高度融合:
- PostgreSQL 支持 JSON,也可以通过 pgvector 做 Vector Search。
- Elasticsearch 支持 SQL 风格查询。
- ClickHouse 使用 SQL 做分析。
- Redis 拥有多种数据结构,也有搜索能力。
所以真正理解数据库,不要只问“SQL 还是 NoSQL”。更好的问题是:它的数据怎么组织、它最擅长什么访问模式、它主要为哪种工作负载优化。
MODULE 05|所有数据库共同面对的问题
以后无论单独讲 MySQL、PostgreSQL、Redis、MongoDB、ScyllaDB、ClickHouse、Elasticsearch、Qdrant,都可以回到同一套拆解框架。
1. Data Model / Schema
Schema 不一定都等于关系型数据库里的固定表结构。更广义地说,它是数据组织规则。
Relational: Table -> Row -> Column
MongoDB: Collection -> Document -> Field
Redis: Key -> Value
Neo4j: Node -> Edge
Vector DB: Collection -> Vector + Metadata
2. Data Type
数据类型回答的是:这个字段到底应该按什么方式保存和计算。
Integer 包括 SMALLINT、INT / INTEGER、BIGINT,适合年龄、数量、计数。但手机号、银行卡号、身份证号通常不应该因为长得像数字就当整数,因为它们不参与数学计算,还可能有前导 0。
Exact Numeric 包括 DECIMAL、NUMERIC,适合金额、价格、金融数据。钱通常不应该随便用 FLOAT,因为浮点数可能出现精度误差。
Floating Point 包括 FLOAT、DOUBLE,适合科学计算、概率、测量值、模型结果。它追求近似计算效率,不追求每一分钱精确。
String 包括 CHAR、VARCHAR、TEXT,适合名称、手机号、邮箱、长文本。
Boolean 表示 TRUE / FALSE。
Date & Time 包括 DATE、TIME、DATETIME、TIMESTAMP。真实工程里还会遇到 Timezone 和 UTC,但本期只需要知道时间不是普通字符串。
JSON 适合灵活配置和嵌套数据。
Binary / BLOB 理论上能保存图片、文件等二进制内容。但能放数据库,不代表一定应该放数据库。
UUID 常用于分布式环境中的唯一标识。
Vector 形如 [0.21, -0.84, 0.17, ...],来自 Embedding,用于 Semantic Search 和 RAG。
28 -> INT
19.99 -> DECIMAL
"OpenAI" -> VARCHAR
true -> BOOLEAN
2026-08-26 -> TIMESTAMP
{JSON} -> JSON
550e8400... -> UUID
[0.12,-0.83] -> VECTOR
3. CRUD / Query
所有数据库都绕不开 Create、Read、Update、Delete。但不同数据库用不同访问方式回答问题:
- SQL:条件查询、Join、聚合。
- Key Lookup:按 Key 直取。
- Document Query:按字段和嵌套结构查。
- Graph Traversal:沿关系边走。
- Full-text Search:按关键词和相关性查。
- Vector Similarity Search:按语义相似度查。
4. Persistence / Durability
Persistence 是数据能保存下来。Durability 是系统承诺:一旦写入成功,就尽量别因为宕机而丢。
Memory
|
| 快,但断电会丢
v
Disk / Persistent Storage
|
| 慢一些,但能长期保存
v
Durable Data
即使 Redis 主要以内存访问著称,也有持久化机制。WAL、AOF、RDB、Checkpoint 这些名字以后会单独展开,本期只要知道它们是数据库为了恢复数据而设计的机制。
5. Index / Access Path
索引回答的是:数据越来越多以后,怎么快速找到目标。
同一个问题:找到数据
|
|-- B+ Tree:范围查询、排序
|-- Hash:等值查找
|-- Inverted Index:全文搜索
|-- HNSW:向量近邻
|-- IVF:向量分桶召回
不同数据库之所以擅长不同查询,很大程度来自底层选择了不同的数据结构和访问路径。
MODULE 06|对象存储
Object Storage 不是 Database。
Amazon S3、Alibaba OSS、Tencent COS、MinIO 这类对象存储,主要保存图片、视频、音频、PDF、AI 模型文件、数据集、大型二进制对象。
对象可以简单理解为:
Object = Data + Metadata + Object Key
数据库擅长管理、查询、关系、状态。对象存储擅长保存大量文件和大对象。
MP4 PDF PNG MODEL
| | | |
v v v v
Object Storage Bucket
S3 / OSS / COS / MinIO
Database
保存:文件地址、状态、权限、索引信息
所以图片理论上能放进数据库 BLOB,但工程上更常见的是:文件放对象存储,数据库保存文件的 URL、元数据、归属关系和权限状态。
MODULE 07|程序怎么真正使用数据库
应用程序不是直接“碰硬盘”。它通常通过 Driver、Connection、Connection Pool、ORM 或 Client SDK 使用数据库。
Driver 是数据库驱动。Python、Java、Go、Node.js 都需要对应驱动来和数据库通信。
Application
|
v
Driver
|
v
Connection
|
v
Database
Connection 是应用和数据库之间的一条通信通道。每次访问数据库都重新建立连接成本很高,所以应用通常维护 Connection Pool。
Connection Pool
[conn1] [conn2] [conn3]
| | |
v v v
借一个 使用 还回去
ORM 是 Object Relational Mapping。程序里是 User Object,数据库里是 users Table,ORM 负责在两边映射。
User Object users Table
{ id, name, age } <--> id | name | age
\ ORM /
常见 ORM 包括 Hibernate、SQLAlchemy、Prisma、GORM。要注意:ORM 主要针对关系型数据库。Document Database 可能出现 ODM。Redis、Elasticsearch、Vector DB 很多时候直接使用 Client SDK。
Migration 是数据库结构的版本管理。代码有版本,数据库结构同样有版本。
v1 users
id | name
|
v
v2 users
id | name | email
|
v
v3 users
id | name | email
index(email)
这就是 Schema Migration。数据库不是一次创建后永远不变,它会跟着业务一起演化。
B. 12 分钟内容时间轴
| 时间 | 核心知识 | 必须出现的产品 | 视觉重点 | 下一段连接 |
|---|---|---|---|---|
| 00:00-00:35 | 开场:为什么数据库世界看起来很乱 | MySQL、Redis、MongoDB、ClickHouse、Elasticsearch、Qdrant | 产品名从星图中浮现,最后收束成“数据库世界地图” | 先从最原始的文件开始 |
| 00:35-02:00 | 文件能存数据,但不能长期安全高效管理复杂数据 | 无 | TXT / CSV / JSON 堆积,问题标签逐个压上来,Database 圆柱体出现 | 数据库出现后,为什么还会继续分化 |
| 02:00-03:20 | OLTP vs OLAP 是第一条明显分叉 | PostgreSQL、MySQL、Oracle、SQL Server、ClickHouse、Snowflake、BigQuery、DuckDB | 左侧小交易高速流动,右侧大表列被扫描聚合 | OLTP/OLAP 不是全部分类原因 |
| 03:20-05:35 | 数据库类别地图:9 类系统与代表产品 | PostgreSQL、MySQL、Redis、MongoDB、Cassandra、ScyllaDB、Neo4j、Elasticsearch、InfluxDB、ClickHouse、DuckDB、Qdrant、Milvus | 中心地图展开,每类出现数据形态和代表产品 | 类别之间容易混淆,需要差异矩阵 |
| 05:35-06:50 | Database Difference Matrix:看懂核心差异 | 同上 | 上三角矩阵 Zoom / Pan,重点高亮 7 组组合 | SQL/NoSQL 是更粗糙的历史标签 |
| 06:50-07:45 | SQL vs NoSQL:方便但不够严谨 | PostgreSQL、Elasticsearch、ClickHouse、Redis、pgvector | SQL/NoSQL 两个标签被拆成 Data Model / Access Pattern / Workload | 真正学习数据库要看共同底层问题 |
| 07:45-09:35 | 共同框架:Schema、Data Type、CRUD、Persistence、Index | Redis、MongoDB、Neo4j、Qdrant | 数据类型传送带、CRUD 分叉、Memory/Disk、索引寻路 | 有些文件不该塞进数据库 |
| 09:35-10:20 | Object Storage 不是 Database | S3、Alibaba OSS、Tencent COS、MinIO | MP4/PDF/PNG/MODEL 飞入 Bucket,数据库只保存元数据和 URL | 数据库最终要被程序使用 |
| 10:20-11:35 | Driver、Connection、Pool、ORM、Migration | Hibernate、SQLAlchemy、Prisma、GORM | App -> Driver -> Pool -> DB,ORM 映射,Schema v1/v2/v3 动画 | 收束到后续系列路线 |
| 11:35-12:00 | 总结:建立地图,开启系列 | PostgreSQL、MySQL、Redis、MongoDB、ClickHouse、Elasticsearch、Qdrant、Milvus | 世界地图重新点亮,后续课程卡片排成路线 | 下一期进入具体数据库 |
C. Remotion Scene List
| Scene ID | 时长 | 画面目的 | 主要视觉元素 | 动画方式 | 屏幕文字 | 数据流 | Transition | Logo | Code | Matrix / Chart / Diagram |
|---|---|---|---|---|---|---|---|---|---|---|
| S01-ColdOpen | 35s | 建立问题:数据库为什么这么多 | 产品名星图、中心标题、地图轮廓 | 名称粒子聚合,镜头推进 | 数据库世界不是一堆名字 | 名称 -> 地图 | 快速 Push In | 否 | 否 | Diagram |
| S02-FilePressure | 50s | 从文件引出数据库 | TXT、CSV、JSON、问题标签、Database | 文件堆积,标签压缩,圆柱体弹出 | 文件能存,但不够管理 | 文件 -> 问题 -> 数据库 | Glass Wipe | 否 | 否 | Diagram |
| S03-DatabaseJobs | 35s | 说明数据库解决什么 | Query、Concurrency、Integrity、Recovery、Scale 节点 | 六节点环绕数据库依次点亮 | 安全、高效、长期、并发 | 数据库 -> 六能力 | Radial Reveal | 否 | 否 | Diagram |
| S04-OLTPvsOLAP | 70s | 建立第一分叉 | 左交易流、右列式大表、聚合器 | 左侧小点高速进入,右侧列块被扫描 | 一笔业务 vs 十亿行分析 | Transaction / Rows -> Result | Split Screen | 是 | 否 | Chart |
| S05-WhyManyDBs | 30s | 扩大分化原因 | 数据形态、查询方式、性能、规模、一致性、延迟 | 六张卡片从 OLTP/OLAP 裂变 | 问题不同,数据库不同 | 问题 -> 类别 | Morph | 否 | 否 | Diagram |
| S06-CategoryMap | 95s | 展开 9 类数据库地图 | 9 类节点、数据形态、产品名 | 中心放射,逐类展开,产品贴标 | 类别有重叠,现代系统 Multi-model | 中心 -> 9 类 | Orbit Pan | 是 | 否 | Diagram |
| S07-ClassificationMatrix | 40s | 用矩阵固化地图 | 分类矩阵 | 行列逐行扫光,高亮产品 | 看数据形态、查询、Schema、擅长什么 | 类别 -> 属性 | Matrix Zoom | 是 | 否 | Matrix |
| S08-DifferenceMatrix | 75s | 对比核心差异 | 9x9 上三角矩阵 | Zoom / Pan / Highlight 7 个 Cell | 两类数据库差在哪 | 类别 A + B -> 差异 | Camera Pan | 否 | 否 | Matrix |
| S09-SQLNoSQL | 55s | 降低 SQL/NoSQL 的权重 | SQL/NoSQL 标签、三维分类轴 | 标签拆解成模型/访问/负载 | SQL/NoSQL 方便但粗糙 | 标签 -> 三轴 | Shatter Morph | 是 | 否 | Diagram |
| S10-CommonFramework | 45s | 建立后续系列统一框架 | Schema、Data Type、Query、Durability、Index 五节点 | 五节点转成雷达图 | 以后每期都回到这五问 | 系统 -> 五问 | Radar Reveal | 否 | 否 | Chart |
| S11-DataTypeBelt | 55s | 小白理解数据类型 | 传送带、数据值、类型标签 | 数据项进入扫描门并贴标签 | 类型决定保存和计算方式 | 值 -> 类型 | Conveyor | 否 | 否 | Diagram |
| S12-QueryAndIndex | 55s | 展示访问路径差异 | B+ Tree、Hash、Inverted Index、HNSW、IVF | 同一查询分成五条寻路动画 | 擅长什么,取决于怎么找 | Query -> Access Path | Multi-path | 否 | 否 | Diagram |
| S13-ObjectStorage | 45s | 明确对象存储不是数据库 | MP4/PDF/PNG/MODEL、Bucket、DB 元数据表 | 大文件飞向 Bucket,URL 写入 DB | Object Storage 不是 Database | File -> Bucket; Metadata -> DB | Bucket Drop | 是 | 否 | Diagram |
| S14-AppToDB | 45s | 程序如何连接数据库 | Application、Driver、Connection、Pool、Database | 连接线建立,Pool 借还动画 | 应用通过连接使用数据库 | App -> Driver -> Pool -> DB | Line Draw | 否 | 否 | Diagram |
| S15-ORMMigration | 45s | 解释 ORM 和 Migration | User Object、users Table、ORM、Schema v1/v2/v3 | 对象字段映射到表列,Schema 版本翻页 | 代码有版本,Schema 也有版本 | Object -> ORM -> Table; v1 -> v3 | Flip + Slide | 是 | 否 | Diagram |
| S16-SeriesMap | 25s | 收束并埋后续课程 | 后续课程卡片路线 | 地图节点变成课程列表 | 下一期开始拆具体数据库 | 地图 -> 系列 | Pull Back | 是 | 否 | Diagram |
D. Database Classification Matrix
| 类别 | 数据主要长什么样 | 最典型查询 | Schema | 最擅长 | 相对不擅长 | 代表产品 |
|---|---|---|---|---|---|---|
| Relational | Table / Row / Column | SQL、Join、条件查询 | 通常较强 | 复杂业务、事务、关联关系 | 特殊超大规模工作负载未必最优 | PostgreSQL、MySQL、Oracle、SQL Server |
| Key-Value | Key -> Value | 按 Key 查 | 通常弱 / 灵活 | 极低延迟读取、缓存、状态 | 复杂条件查询、关系查询 | Redis、DynamoDB |
| Document | Document / JSON-like | 按字段、文档查询 | 灵活 | JSON-like 内容、快速变化的数据结构 | 大量复杂 Join | MongoDB、Couchbase |
| Wide-Column | Row Key + Column Family | Partition Key / Range | 灵活 | 海量写入、水平扩展 | 任意复杂查询 | Cassandra、ScyllaDB、HBase |
| Graph | Node + Edge | Relationship Traversal | 图结构 | 多跳关系、关系网络 | 普通聚合分析 | Neo4j |
| Search | Document + Index | Full-text Search | 灵活 | 全文搜索、相关性排序 | 强事务业务 | Elasticsearch、OpenSearch |
| Time-Series | Timestamp + Metrics | 时间范围、聚合 | 通常较规则 | IoT、监控、行情 | 通用业务关系 | InfluxDB、TimescaleDB |
| OLAP | 大型表格数据 | SUM / GROUP BY / Scan | 通常较强 | 亿级数据统计分析 | 高频单行更新事务 | ClickHouse、DuckDB、Snowflake |
| Vector | Vector + Metadata | Similarity Search | 灵活 | RAG、语义搜索、多模态检索 | 普通业务事务 | Qdrant、Milvus、Pinecone、pgvector |
E. Database Difference Matrix
说明:下表使用上三角形式。每个有效 Cell 只保留两个核心区别,优先比较数据模型、访问模式和核心工作负载。
| Relational | Key-Value | Document | Wide-Column | Graph | Search | Time-Series | OLAP | Vector | |
|---|---|---|---|---|---|---|---|---|---|
| Relational | 同类 | 表关系 vs 键值对;复杂查询 vs Key直取 | 固定关系 vs 灵活文档;Join vs 嵌套结构 | 强关系 vs 宽行分区;事务业务 vs 海量写入 | 表关联 vs 点边图;Join vs 路径遍历 | 精确查询 vs 全文检索;事务一致 vs 相关排序 | 业务实体 vs 时间指标;任意查询 vs 时间聚合 | 在线事务 vs 大规模分析;行级操作 vs 聚合扫描 | 结构数据 vs 向量空间;SQL条件 vs 相似搜索 |
| Key-Value | 同类 | 单值读取 vs 文档字段;弱结构 vs 嵌套结构 | 单Key直取 vs 分区范围;缓存状态 vs 海量写入 | 键值映射 vs 关系网络;直取 vs 多跳遍历 | Key命中 vs 关键词匹配;状态读取 vs 相关排序 | 当前状态 vs 时间序列;单点读写 vs 区间聚合 | 低延迟点查 vs 扫描分析;短请求 vs 大计算 | 精确Key vs 语义近邻;缓存值 vs Embedding | |
| Document | 同类 | 文档嵌套 vs 宽行族;字段查询 vs 分区范围 | 文档对象 vs 点边关系;嵌套结构 vs 路径遍历 | 文档管理 vs 文档检索;字段查询 vs 相关排序 | 内容文档 vs 时间指标;灵活字段 vs 时间窗口 | 灵活文档 vs 分析表;单文档读写 vs 聚合扫描 | JSON文档 vs 向量元组;字段匹配 vs 语义相似 | ||
| Wide-Column | 同类 | 分区宽行 vs 点边网络;范围读取 vs 关系遍历 | 分区查询 vs 倒排检索;海量写入 vs 文本相关 | 宽行事件 vs 时间指标;写入扩展 vs 时间聚合 | 分布写入 vs 列式分析;Key范围 vs 全表扫描 | 分区数据 vs 向量空间;Range查 vs ANN搜索 | |||
| Graph | 同类 | 显式关系 vs 文本索引;路径遍历 vs 关键词查 | 关系网络 vs 时间指标;多跳路径 vs 时间窗口 | 关系路径 vs 聚合扫描;图结构 vs 大宽表 | 显式关系 vs 隐式相似;路径遍历 vs 近邻搜索 | ||||
| Search | 同类 | 文本相关 vs 时间趋势;倒排索引 vs 时间索引 | 文档检索 vs 数据分析;相关排序 vs 聚合统计 | 关键词匹配 vs 语义相似;倒排索引 vs ANN索引 | |||||
| Time-Series | 同类 | 指标时间窗 vs 多维分析;时间聚合 vs 任意聚合 | 时间趋势 vs 语义空间;指标相似 vs 向量近邻 | ||||||
| OLAP | 同类 | 统计分析 vs 语义检索;列式扫描 vs ANN召回 | |||||||
| Vector | 同类 |
F. Data Type Cheat Sheet
| 类型 | 存什么 | 一个例子 | 最容易犯什么错误 |
|---|---|---|---|
| INT | 普通整数计数 | 年龄 28、库存 120 | 把手机号当整数 |
| BIGINT | 很大的整数 | 订单数、雪花 ID | 前端数字精度丢失 |
| DECIMAL | 精确小数 | 价格 19.99 | 用 FLOAT 存金额 |
| FLOAT | 近似小数 | 概率 0.83 | 期待完全精确 |
| DOUBLE | 更高精度近似小数 | 科学测量值 | 仍把它当金融精确值 |
| CHAR | 固定长度字符串 | 国家码 CN | 用它存长度变化大的文本 |
| VARCHAR | 可变短文本 | 邮箱、手机号 | 长度限制设计太小 |
| TEXT | 长文本 | 文章正文 | 拿它做高频精确过滤 |
| BOOLEAN | 真或假 | is_active = true | 用字符串 yes/no 代替 |
| DATE | 日期 | 2026-08-26 | 混入具体时分秒 |
| TIME | 时间 | 14:30:00 | 脱离日期误判业务含义 |
| TIMESTAMP | 时间点 | 创建时间 UTC | 忽略 Timezone / UTC |
| JSON | 灵活嵌套结构 | 用户偏好配置 | 把核心关系全塞 JSON |
| BLOB | 二进制内容 | 小文件、二进制片段 | 把大视频直接塞数据库 |
| UUID | 全局唯一标识 | 550e8400-e29b | 当作有序递增 ID |
| VECTOR | Embedding 向量 | [0.21,-0.84,0.17] | 以为它是原始文本 |
G. 后续系列目录
| 后续课程 | 为什么值得单独讲 | 最容易和谁混淆 | 最值得拆的核心机制 |
|---|---|---|---|
| PostgreSQL | 关系型核心能力强,又不断扩展 JSON、全文、向量能力 | MySQL、MongoDB、pgvector | MVCC、索引、事务、扩展体系 |
| MySQL | Web 业务最常见入口,工程实践覆盖面极广 | PostgreSQL、MariaDB | InnoDB、B+ Tree、事务隔离、主从复制 |
| Redis | 小白最容易听过,但常误解为“只是缓存” | Key-Value、内存数据库、消息队列 | 数据结构、过期策略、持久化、集群 |
| MongoDB | Document 模型代表,适合解释灵活 Schema | PostgreSQL JSON、Elasticsearch | 文档建模、索引、聚合管道、副本集 |
| ScyllaDB | Cassandra 思想的高性能实现,适合讲极致吞吐 | Cassandra、Wide-Column、Key-Value | 分区、LSM、Shard-per-core、一致性级别 |
| Cassandra | Wide-Column 和分布式高可用代表 | ScyllaDB、HBase | Partition Key、Quorum、Compaction、复制 |
| ClickHouse | OLAP 入门最直观,列式存储和聚合性能突出 | PostgreSQL、DuckDB、Elasticsearch | 列式存储、MergeTree、分区、向量化执行 |
| DuckDB | 单机分析和本地数据科学场景越来越重要 | SQLite、ClickHouse、Pandas | 嵌入式 OLAP、列式执行、Parquet 查询 |
| Elasticsearch | 全文搜索和相关性排序代表 | MongoDB、Vector DB、ClickHouse | 倒排索引、分词、相关性评分、聚合 |
| Neo4j | Graph 模型最直观,适合讲关系遍历 | Relational Join、Vector Search | Node / Edge、Cypher、多跳路径、图建模 |
| InfluxDB | Time-Series 模型清晰,适合监控和 IoT | ClickHouse、TimescaleDB | 时间窗口、Retention、Downsampling、Tag/Field |
| Qdrant / Milvus | AI 时代理解 RAG 和语义搜索的关键 | Elasticsearch、pgvector、普通 Document DB | Embedding、ANN、HNSW、Metadata Filter |
Remotion 视觉设计总纲
视觉语言
整体风格:高级 IT 教学动画 + Vox 信息图动画 + 极简数据可视化。
禁止方向:
- 不做传统 PPT。
- 不大段铺文字。
- 不整屏代码。
- 不使用真人素材。
- 不使用俗套卡通角色。
主要视觉对象:
- 数据块
- 卡片
- 节点
- 表格
- 数据流
- 数据库圆柱体
- 文件
- Key / Value
- JSON Document
- Node / Edge
- Vector Point
- Search Index
- 时间轴
- OLAP 数据列
- Object Storage Bucket
- ORM 映射动画
必须制作的重点动画
1. 文件 -> 数据库
TXT、CSV、JSON 从左侧不断堆积。右侧出现问题标签:Query、Concurrency、Integrity、Recovery、Index、Scale。文件堆被压缩成混乱状态后,Database 圆柱体从中心升起,把问题标签吸附成有序能力环。
2. OLTP vs OLAP
屏幕左右分屏。左侧大量小 Transaction 像短脉冲快速通过,标签是 order、payment、inventory。右侧是巨大的列式数据表,镜头沿列向下扫描,SUM、AVG、GROUP BY 在底部汇总。
3. Database Category Map
中心是 Database World。九类数据库沿环形展开,每个节点显示数据形态:表、键值、文档、宽行、点边、倒排索引、时间线、列式表、向量点云。代表产品以文字 Logo 形式贴在节点下方。
4. Database Difference Matrix
大型二维矩阵只显示上三角。镜头先俯视全局,再逐个 Zoom 到重点 Cell:Relational × Key-Value、Relational × Document、Relational × OLAP、Document × Search、Search × Vector、Graph × Vector、Wide-Column × Relational。
5. Data Type Conveyor Belt
传送带从左到右运行。不同数据值经过扫描门,被贴上 INT、DECIMAL、VARCHAR、BOOLEAN、TIMESTAMP、JSON、UUID、VECTOR。错误案例用红色短闪提醒:手机号不是 INT,钱别随便 FLOAT。
6. Index 可视化
同一个查询“找目标数据”分成四路动画:B+ Tree 沿树层下降;Hash 直接跳桶;Inverted Index 从词找到文档列表;HNSW 在点云中跳近邻;IVF 先进入分区再召回候选。
7. Object Storage
大型 MP4、PDF、PNG、MODEL 被推向数据库时,数据库变红并出现“Not ideal”。随后这些文件转向 S3 / OSS / COS / MinIO Bucket,数据库只保存 URL、Metadata、Owner、Permission。
8. ORM Mapping
左侧 User Object 展开字段 id、name、age。右侧 users Table 展开列 id、name、age。中间 ORM 建立连线。随后画面下方出现 Driver、Connection、Connection Pool,把 ORM 放回完整访问链路。
9. Migration
Schema 卡片按 v1、v2、v3 翻页。v1 只有 id/name,v2 添加 email,v3 添加 index(email)。最后代码版本线和数据库版本线并排前进,强调数据库结构也有版本。
总结
数据库不是一个单一工具,而是一整套围绕数据模型、访问模式、工作负载、持久化、索引和程序连接方式分化出来的系统家族。
这节导论课的目标不是让观众背完所有概念,而是建立地图。后续每一期都应该回到同三个问题:数据长什么样,最擅长回答什么问题,为什么不能被另一个数据库完全替代。
实践示例
关系型、键值、文档、宽列、图、搜索、时序、OLAP、向量九类数据库分类
OLTP 与 OLAP 的区别:一笔业务 vs 十亿行分析
对象存储与数据库分工:文件放 S3,数据库保存 URL 和元数据
ORM 映射:User Object 与 users Table
数据类型示例:28 为 INT,19.99 为 DECIMAL,VECTOR 用于语义搜索
后续与前置知识
- 数据结构演示教程:按 8 类结构建立全景图相关
10 分钟数据结构全景教程,按 8 类结构(基础存储、线性 ADT、树、Hash、图、集合维护、概率/高级索引、组合型工程结构)梳理数组、链表、栈、队列、堆、哈希表、布隆过滤器、跳表、LRU 缓存等常见数据结构,强调正确分类与典型应用场景。
- Docker 演示教程:一次打包,到处运行相关
面向初学者的 Docker 实操教程,10 分钟演示镜像与容器概念、Dockerfile 构建、Docker Compose 多服务编排、常用排错命令,并通过 Node.js + nginx + PostgreSQL 博客项目实战完成容器化部署。
- Node.js 演示教程:从“这东西跟我有关系?”到写完一个全栈应用相关
10 分钟 Node.js 实操教程,从识别电脑上已存在的 Node.js 开始,对比 npm 与 pnpm 的安装速度差异,使用内置 http 模块在 30 秒内启动一个 Web 服务器,再进阶用 pnpm + Express 在 60 行内完成一个支持增删改查的 Todo API,并演示 --watch、EADDRINUSE 报错处理以及 async/await 异步写法三个新手常见坑。
- 技术学习心法演示教程相关
五分钟技术学习心法演示:强调盯住问题而非版本号、学习前问三句话、将记忆外包给工具、与 AI 分工,并鼓励每日记笔记建立知识网络,从而不再惧怕新技术。
引用此知识点
- FastAPI 接口开发 演示教程:从 Hello World 到一个完整 CRUD API后续
本文通过十个演示和最终实战,使用 FastAPI 官方教程风格,从三行代码的 Hello World 开始,逐步讲解路径参数、查询参数、请求体、Pydantic 校验、自动文档、异常处理、枚举类型、PUT/DELETE,并最终实现一个基于内存字典的完整 CRUD API,全程使用 TestClient 测试,无需启动服务器。
- 数据分析双引擎 演示教程:同一份泰坦尼克数据,pandas 与 polars 各写一遍相关
使用泰坦尼克乘客数据集,通过 pandas 演示数据读取、筛选、分组聚合、缺失值处理、合并、时间序列等核心数据分析操作,并用 polars 实现相同任务进行对比,展示两种库的 API 差异与各自的性能特点,帮助学习者根据场景选择合适的工具。
- 文档数据库入门:MongoDB 与 Couchbase前置
本教程系统讲解文档数据库核心概念,以 MongoDB 和 Couchbase 为代表,涵盖数据模型、CRUD 操作、查询与聚合、索引、副本集、分片、事务、多模型能力、选型对比及 Python 接入方法,帮助建立文档数据库全景认知。
- 图数据库入门:Neo4j上下位
本文系统讲解图数据库核心概念,以 Neo4j 为代表,涵盖节点、边、路径的数据模型,Cypher 图查询语言,多跳遍历与最短路径,社交网络、知识图谱、风控、推荐等典型场景,对比关系型数据库的 JOIN 查询,并演示使用 Python 驱动连接 Neo4j。
- 键值数据库入门:Redis 与 DynamoDB前置
本教程系统讲解键值数据库核心概念,以 Redis 和 DynamoDB 为代表,对比内存与云托管两种形态,涵盖 Redis 五种数据结构、过期持久化高可用、经典场景,DynamoDB 数据模型、主键设计、CRUD、二级索引、容量一致性、单表设计,并通过 Python 示例连接两者,最后给出选型建议与练习。
- 分析型数据库入门:ClickHouse、DuckDB、Snowflake、BigQuery前置
本教程系统讲解分析型数据库(OLAP)核心概念,以 ClickHouse、DuckDB、Snowflake、BigQuery 为代表,涵盖列式存储、向量化执行、存算分离与无服务器架构,对比四者选型,并演示 Python 连接与适用场景,帮助快速建立分析型数据库全景认知。
- 搜索数据库入门:Elasticsearch 与 OpenSearch上下位
本教程系统讲解搜索数据库核心概念,以 Elasticsearch 与 OpenSearch 为代表,涵盖倒排索引、集群与索引/分片/副本数据模型、REST API 全文搜索、分词与 BM25 相关性排序、聚合分析、两者对比及 Python 接入方法,帮助建立搜索数据库全景认知。
- SQL 入门:从一张表看懂数据库前置
本文从一张表入手,系统讲解 SQL 数据库核心概念与操作,涵盖建库查数据、列记录主键、约束索引、DDL/DML/DQL/DCL/TCL 五类 SQL 语言、SELECT 聚合分组排序、JOIN 多表拼接、五大范式与反范式、事务与 ACID、视图索引权限、SQLite/PostgreSQL/MySQL 对比、Python 连接数据库、ORM 映射以及 DBeaver 图形化管理,适合快速建立 SQL 全景。
- 时序数据库入门:InfluxDB 与 TimescaleDB前置
本文系统讲解时序数据库核心概念,以 InfluxDB 和 TimescaleDB 为代表,涵盖数据模型、Line Protocol 与 Flux/InfluxQL 查询、保留策略与降采样、超表与连续聚合/压缩、两者对比及 Python 接入方法,帮助建立时序数据库全景认知。
- 向量数据库入门:Qdrant、Milvus、Pinecone前置
本教程系统讲解向量数据库核心概念,以 Qdrant、Milvus、Pinecone 为代表,涵盖 Embedding 向量生成、余弦相似度搜索、ANN 近似最近邻索引(HNSW/IVF)、三者选型对比及 Python 连接方法,帮助快速建立向量数据库全景认知。
- 宽列数据库入门:Cassandra 与 ScyllaDB前置
本教程系统讲解宽列数据库核心概念,以 Cassandra 和 ScyllaDB 为代表,涵盖数据模型(分区键+列族)、CQL 与 CRUD、无主架构与可调一致性、LSM 树与建模、ScyllaDB 的 Shard-per-core 架构、两者对比、Python 连接及适用场景,帮助快速建立宽列数据库全景认知。