这座图书馆从来不打烊。
数据库的每一次读写,都是这座馆里一次默默完成的借还。
这次参加 1024 TiDB 社区 AIGC 黑客松,我借助AI工具试着把平凯数据库(TiDB)的整套架构,画成了一座只有夜晚的图书馆——同一个世界观、同一套孔版印刷视觉、5 件作品:一张海报、一张架构导览图、一条 8 格条漫、一支 60 秒短片,还有一个能点着玩的互动网页。
做完之后最大的感受是:架构名词一旦翻译成「人的动作」,比我预想的好懂太多。
馆里有四位馆员,正好对应四个组件
| 馆员 | 对应组件 | 他的规矩 |
|---|---|---|
| 前台接待员(云朵身体、头顶一盏台灯、胸前空白名牌) | TiDB Server(SQL 层) | 只看单,不看馆藏——她本身不存任何数据;读者多了,随时可以再请一位 |
| 抄书三兄弟(三个长得完全一样的小抄书员) | TiKV(存储层 / Raft 三副本) | 三人一模一样,这就是「副本一致」;抄到第二本,账就认了 |
| 老馆长(单片眼镜、怀表、木质指示棒) | PD(调度中枢) | 管账本、发号、把书调匀;但他只提建议,不亲自搬书 |
| 统计员(青绿条纹围裙、一沓竖排统计表) | TiFlash(列存扩展) | 只看不写,账本永远慢半拍——因为副本是异步拿到的 |
下面 5 件,从「看」到「玩」,依次来。
作品 1|主视觉海报《一座永不打烊的图书馆》
深夜的图书馆、无限延伸的书架、暖光下的四位馆员。海报不含技术信息,它的任务只有一件——先把世界观立住,让你相信这座图书馆真的存在。
孔版印刷风格,1240 × 1748。
作品 2|架构导览图《图书馆导览图》
把 TiDB 的四个核心组件画成图书馆里的四位馆员:不存东西的前台、一模一样的抄书三兄弟、只提建议的老馆长、只读不写的统计员。一张图,左边是角色,右边是机制。
这是整套作品里技术密度最高的一张。左边看脸,右边看机制。
作品 3|8 格条漫《图书馆的一天》
主角是一张借书单——它就是一个客户端请求。8 格讲完它在图书馆的一夜:递单、读单、拆解、三兄弟同时动笔、抄到第二本账就认了、馆长发号、搬书、行列存分流。竖排长图,一镜到底。
8 格讲了什么(每格一句叙事 + 一条技术口径)
| 格 | 叙事 | 技术口径 |
|---|---|---|
| 01 递单 | 23:00,一条查询到达前台。 | TiDB Server 接收连接,解析 SQL |
| 02 前台读单 | 前台只看单,不看馆藏——她本身不存任何数据。 | SQL 层无状态,可多实例并行,由负载均衡分摊连接 |
| 03 拆解 | 一张单被拆成几条,分头去办。 | 解析与优化后生成分布式执行计划,下推到多个 Region |
| 04 三兄弟动笔 | 同一个架区,三个抄书员同时落笔,姿势一模一样。 | 一个 Region 默认三副本,组成 Raft 组;Leader 写,Follower 复制 |
| 05 过半入库 | 抄到第二本,账就认了。 | 写入只需同步复制到多数节点即认为成功;少数副本失效可自动补齐 |
| 06 馆长发号 | 馆长管着全馆的账本,也管着每一次借还的号。 | PD 存储各节点实时数据分布与集群拓扑,为分布式事务分配事务 ID |
| 07 搬书 | 哪座馆太挤,书就自己搬过去。 | PD 依节点上报状态生成调度计划,使 Region 分布尽量均匀 |
| 08 两条路 | 要查一本,走左边;要数一整个月,找她。 | TiKV 行存 vs TiFlash 列存,TiDB 自动选择,甚至同一查询内混用 |
作品 4|60 秒短片《为什么同一本书要抄三份》
一座图书馆用 60 秒回答一个问题:同一本书,为什么要抄三份?孔版印刷风格动画,6 镜 × 10 秒。
- 00–10s 夜里推门进馆,永不打烊
- 10–20s 一本书被抄成三份,三个一模一样的抄书员
- 20–30s 两份先放下笔,账就认了(全片高潮)
- 30–40s 一座分馆灯灭,另两馆的书还在
- 40–50s 灯重新亮起,缺的那份已经被悄悄补齐
- 50–60s 家族群像收尾
作品 5|互动演示《点一下,看数据搬家》
这不是示意图,是一份能跑的小模拟:点一下「新开分馆」,看 8 个 Region 先加副本、追平数据、再删旧副本,一路搬完家;还能制造一个访问热点,看 Leader 换人。单文件 HTML,零依赖,在线可玩,源码随帖附上。
在线玩:https://tidb-library-demo.app.workbuddy.host/
点「在南边新开一座分馆」:新馆通过心跳向 PD 报到;PD 检查副本分布、生成调度计划;Region 分三批搬家——先在目标分馆把新副本建起来、等它把数据追平,再删掉源分馆的旧副本,整个过程三副本始终在线。 再点「制造一个访问热点」:这次一本书都不搬,只换 Leader。


