犀牛鸟 2026 研究笔记 estelledc.github.io

第 2 章:阅读路线图与前置知识——你的学习 GPS

结论先行:不要试图一次读完所有内容。根据你的目标(参加竞赛、系统学习、技术选型),选一条路径,按顺序推进。本章帮你搞清楚”先学什么”和”需要什么基础”。


你在哪里,要去哪里

学习分布式数据库就像规划一次旅行。你不会同时去所有景点——你需要先确定目的地,再规划路线。

这本导读有 13 章内容,涵盖从基础概念到竞赛实战的完整链路。但你不需要从头到尾顺序读完。根据你的目标,有三条推荐路线。

路径 A:竞赛路径(2-3 周)

适合人群:参加犀牛鸟 2026 的同学,目标是尽快理解 OpenTenBase 并提交有价值的 PR。

核心思路:先建立最小必要知识,然后深入 OpenTenBase,最后找到贡献切入点。

第 1 章                    第 3 章                 第 10 章
为什么需要分布式  ───►  架构模式(看 PG Fork) ───►  OpenTenBase 精读
  (1天)                  (1天)                     (3-4天)
                                                      │
         ┌──────────────────────────────────────────────┘
         ▼
      第 4 章              第 6 章              第 12 章         第 13 章
   共识(看 GTM)  ───►  查询优化  ───►  技术难点  ───►   竞赛实战指南
     (2天)            (pgxcship)        (挑相关的)        (开始写代码)
                       (2天)             (1-2天)           (持续)

每个阶段的里程碑

可以跳过的内容:第 2 章(就是本章,你正在读了)、第 7 章(Citus/Vitess 细节)、第 8 章(TiDB/CockroachDB 细节)、第 9 章(YugabyteDB 细节)、第 11 章(横向对比细节)。这些内容对竞赛不是关键路径,有时间再回来看。

路径 B:全景路径(4-6 周)

适合人群:想系统性理解分布式数据库领域的同学,比如准备研究生面试、想写综述论文、或者纯粹对这个领域感兴趣。

核心思路:从概念到架构到项目到对比,层层递进。

Part 1(概念)→ Part 2(架构)→ Part 3(项目)→ Part 4(对比)

第1章 → 第2章 → 第3章 → 第4章 → 第5章 → 第6章
 (基础)  (路线)  (架构)  (共识)  (分片)  (优化)
   └─────────┬──────────────────────┘
             ▼
第7章 → 第8章 → 第9章 → 第10章 → 第11章 → 第12章
(轻量)  (重量)  (YDB)  (OTB)    (对比)    (难点)

每两章为一个学习单元,建议用 2-3 天完成一个单元。

学习节奏建议

路径 C:生产实践路径(1-2 周)

适合人群:需要为公司做技术选型的工程师,或者准备面试想快速了解各项目特点。

核心思路:抓大放小,重点看对比和取舍。

第 1 章 → 第 3 章 → 第 11 章 → 选一对深读 → 第 12 章
(为什么)  (架构)   (对比表)   (7或8章)     (难点)
 (半天)   (1天)    (1天)     (2天)        (挑感兴趣的)

这条路径的重点

前置知识清单

分布式数据库涉及的知识面很广,但你不需要全部掌握才能开始阅读。以下是按”必须”、”最好有”、”加分项”三个层次列出的前置知识。

必须掌握(没有这些会读不懂)

SQL 基础:知道 SELECT、INSERT、UPDATE、DELETE 怎么用,理解表、行、列、主键的概念。如果你用过 MySQL 或 PostgreSQL 的命令行客户端做过简单查询,就够了。

-- 你需要能读懂这种级别的 SQL
SELECT user_name, order_count
FROM users
WHERE city = '北京'
ORDER BY order_count DESC
LIMIT 10;

基本的计算机网络概念:知道什么是客户端和服务器、什么是 IP 地址和端口、什么是网络延迟。不需要理解 TCP 三次握手的细节,但需要知道”两台机器之间通过网络通信,通信有延迟且可能失败”。

编程基础:能读懂基本的代码逻辑(条件判断、循环、函数调用)。本导读的代码示例以 Go、C 和 SQL 为主,但不要求你精通任何一门语言——代码注释会解释关键逻辑。

最好有(会让你理解更深)

数据库事务概念:理解 ACID(原子性、一致性、隔离性、持久性)的含义。第 1 章已经做了介绍,如果你之前没接触过,回去复习一下。

基本的操作系统概念:进程和线程的区别、什么是内存和磁盘 IO、什么是锁。这些概念在讨论并发控制和性能优化时会用到。

Git 基本操作:如果你打算参加竞赛,需要知道 clone、branch、commit、push、pull request 的基本流程。

加分项(让你成为高手)

C 语言:OpenTenBase 和 Citus 都是 C 语言项目。如果你能读懂 C 的指针、结构体、函数指针,在阅读源码时会如虎添翼。

Go 语言:TiDB、CockroachDB、Vitess 都是 Go 项目。Go 的语法比较简洁,即使没学过也能大致看懂。

数据结构与算法:理解哈希表、B+ 树、LSM-Tree 等数据结构会帮助你理解存储引擎的设计。

分布式系统理论:Paxos/Raft 共识算法、两阶段提交、向量时钟等。本导读会用大量类比来解释这些概念,但如果你之前有所了解,理解会更快。

章节依赖关系

不是所有章节都有严格的先后依赖关系。下面这张图帮你理解哪些章节可以独立阅读,哪些必须先读前置章节。

                    第 1 章(基础,必读)
                    /         |          \
                   /          |           \
            第 3 章        第 4 章        第 5 章
           (架构模式)     (共识复制)     (分片均衡)
              |    \         |             |
              |     \        |             |
              |      --------+-------------+
              |              |
              |          第 6 章
              |        (查询优化)
              |              
         ┌────┼────┬─────────┐
         |    |    |         |
      第 7 章 第 8 章 第 9 章 第 10 章
     (轻量级)(重量级)(YDB)   (OTB)
         |    |    |         |
         └────┴────┴─────────┘
                   |
              第 11 章
             (横向对比)
                   |
              第 12 章          第 2 章
             (技术难点)        (路线图,独立)
                   |
              第 13 章
             (竞赛实战)

关键依赖关系说明

学习方法建议

阅读策略:三遍法

第一遍(浏览,10-15 分钟/章):只看每章开头的”结论先行”、每节的第一段、ASCII 架构图、对比表格。目标是建立全局印象——知道每章在讲什么,不纠结细节。

第二遍(精读,1-2 小时/章):带着第一遍产生的问题逐段阅读。重点关注生活类比(帮你建立直觉)、代码示例(帮你理解机制)、常见误区(帮你避免错误理解)。

第三遍(实践,时间不限):打开相关项目的源码,对照导读中的文件路径和代码片段实际阅读。动手画架构图、写笔记、跑示例。

笔记策略

每读完一章,试着用自己的话回答以下三个问题:

如果你能流利地回答第三个问题,说明你真正理解了内容。如果你发现自己只能背术语却不能用大白话解释,那就需要回去重新看类比部分。

时间管理

一个现实的建议:不要连续阅读超过 2 小时。分布式数据库的概念密度很高,连续阅读容易”看了后面忘了前面”。每 45-60 分钟休息一下,回顾一下笔记。

如果你是利用课余时间学习,建议每天投入 1-2 小时,一周完成 2-3 章。这样 4-6 周可以读完全部内容。

各章核心概念预览

为了帮你做学习规划,这里列出每章的核心概念和预期收获:

章节 核心概念 读完后你能…
第 1 章 分布式动机、CAP、ACID 挑战 解释为什么需要分布式数据库
第 2 章 学习路径、前置知识 制定自己的学习计划
第 3 章 5 种架构模式 看到一个新项目就能判断它属于哪种模式
第 4 章 Raft、GTM、时钟 解释”多台机器如何达成一致”
第 5 章 Hash/Range 分片、在线迁移 解释”数据怎么分、分了怎么移”
第 6 章 Cascades、五层规划器 解释”分布式查询为什么慢以及怎么优化”
第 7 章 PG 扩展 vs MySQL 代理 对比 Citus 和 Vitess 的设计取舍
第 8 章 HTAP、Parallel Commits 对比 TiDB 和 CockroachDB 的设计取舍
第 9 章 DocDB、HLC、双协议 解释 YugabyteDB 的独特设计
第 10 章 GTM、PG 内核改造 理解 OpenTenBase 的架构并找到贡献方向
第 11 章 设计取舍矩阵 在 6 个项目中做出选型决策
第 12 章 12 个技术难点 理解分布式数据库最难的部分
第 13 章 贡献策略、代码导航 开始为 OpenTenBase 写代码

术语对照表

本导读中会反复出现以下术语,提前熟悉可以减少阅读障碍:

中文术语 英文 一句话解释
分片/分区 Sharding / Partitioning 把数据拆分到多台机器上
副本 Replica 数据的冗余拷贝,用于容灾
共识 Consensus 多台机器就某件事达成一致
事务 Transaction 一组操作要么全成功要么全失败
隔离级别 Isolation Level 并发事务之间能看到多少互相的修改
快照 Snapshot 数据在某个时间点的完整状态
下推 Push Down 把计算任务推到数据所在的节点执行
协调节点 Coordinator 接收用户请求并分发到数据节点
数据节点 Datanode / Worker 实际存储和处理数据的节点
WAL Write-Ahead Log 先写日志再改数据,保证持久性
LSM-Tree Log-Structured Merge-Tree 一种写优化的存储结构
MVCC Multi-Version Concurrency Control 多版本并发控制,通过保留旧版本避免加锁
HTAP Hybrid Transaction/Analytical Processing 同时处理事务和分析的能力
2PC Two-Phase Commit 两阶段提交,分布式事务的经典协议
GTM Global Transaction Manager OpenTenBase 的全局事务管理器
Raft 一种共识算法,用于多副本之间达成一致
PG PostgreSQL 开源关系型数据库

读完本章你能做什么


导读目录:README.md 上一章:第 1 章 · 为什么需要分布式数据库 下一章:第 3 章 · 四大架构模式——从改装到重造