第 16 篇 给了机制对照。本文做两件事:一是何时选 MongoDB(从而落到 WiredTiger) 的决策树;二是回收系列开放问题并指向后续阅读。仍然不写未实测跨引擎延迟排名。
本文是「WiredTiger 内核」系列第 17 篇(共 17 篇,收束)。→ 系列目录
先修:第 1、8、16 篇。
一、决策树(机制条件,非营销)
flowchart TD
start["Workload"] --> doc{"Document model<br/>primary?"}
doc -->|no| sql{"Need SQL server<br/>multi-writer?"}
sql -->|yes| pg["PostgreSQL / InnoDB"]
sql -->|embed SQL| sqlite["SQLite"]
sql -->|raw KV high write| rocks["RocksDB"]
doc -->|yes| mongo{"Need MongoDB ecosystem<br/>repl/shard/query?"}
mongo -->|yes| wt["MongoDB + WiredTiger"]
mongo -->|only WT library| embed["Embed WiredTiger<br/>without MongoDB"]
wt --> cost{"OK with HS disk =<br/>update rate x window?"}
cost -->|no| rethink["Revisit schema / window<br/>or another store"]
cost -->|yes| ok["Fit"]
| 若你的硬约束是… | 更偏向 |
|---|---|
| 标准 SQL、成熟 ORM、复杂事务与约束 | PG / InnoDB(postgresql-kernel、mysql-innodb) |
进程内 SQL、单写者、可 cp 的库文件 |
SQLite(sqlite-kernel) |
| 嵌入式有序 KV、写优化、自管 compaction | RocksDB(rocksdb) |
| 文档模型 + MongoDB 查询/复制/生态 | MongoDB → WiredTiger(本系列) |
| 只要 WT 库、不要文档服务器 | 可直接链 WT;本系列机制仍适用,运维参数篇(14–15)需自行改写 |
负向信号(选 WT/MongoDB 前要想清楚):
- 期望「改一个小字段、历史也只占一个字段」——文档整值进 HS 时可能不符合直觉(第 08 篇)。
- 需要未实测就承诺的跨引擎尾延迟对比——本站拒绝。
- 把复制/分片问题当成「调 cacheSizeGB 能解决」——第 14–15 篇。
二、开放问题回收
| # | 问题 | 状态 |
|---|---|---|
| 1 | 局部更新 vs 全量历史载荷 → HS 曲线 | 开放;入口第 08、15 篇;需实测 |
| 2 | 历史窗口 × 复制延迟 / prepared × oldest | 开放;入口第 7、11、14 篇 |
| 3 | HS 页与用户热页抢 cache 的可复现阈值 | 开放;入口第 4、15 篇;需实测 |
系列承诺是把问题钉在 Guide/源码路径上,而不是用口号关闭。
三、17 篇阅读地图(收束)
| 部分 | 篇 | 一句话 |
|---|---|---|
| 模型与缓存 | 1–4 | 生态位;Session;Cache;Eviction 必须 reconcile |
| 写路径与版本 | 5–8 | Update chain;Reconcile;Timestamps;HS |
| 持久化与恢复 | 9–11 | Checkpoint;Journal;RTS |
| 磁盘与嵌入 | 12–15 | Block;Compact/Backup;MongoDB 参数;排障 |
| 对照与选型 | 16–17 | 对照表;决策树 |
必读核心仍建议:1 → 3 → 4 → 6 → 8 → 9 → 17。
四、三句话结语
- WiredTiger 是文档库默认引擎的内核答案:页式 B-Tree、旁路 History Store、checkpoint + journal、时间戳与 RTS。
- 它与 PG/InnoDB/SQLite/RocksDB 分工清晰;选它通常因为 MongoDB 文档生态,而不是「比 InnoDB 更快」这类无证据句。
- 机制上记住一句:脏页要 reconcile;最新留用户表,旧版进 HS;旧快照靠链 → 盘 → HS。
规划与实验台账见 PLAN.md。有环境时把第 08、15
篇实验补进 reproduce/ 再写数据结论。
参考资料
- 本系列 index、PLAN.md、第 08 篇
- mvcc、postgresql-kernel、mysql-innodb、sqlite-kernel、rocksdb
- WiredTiger Architecture Guide;MongoDB Manual WiredTiger Storage Engine
上一篇:与
PG / InnoDB / RocksDB 对照
返回:系列目录
· 数据库索引
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【WiredTiger 内核】与 PG / InnoDB / RocksDB 机制对照
按缓冲池、写前日志、MVCC 落点、脏页写出与故障模式对照 PostgreSQL、InnoDB、RocksDB 与 WiredTiger;只谈机制与代价,不写未实测延迟排名。
【SQLite 内核】选型与阅读地图:SQLite vs PG vs DuckDB vs RocksDB
用部署形态、写并发、查询形态与持久化需求收束 SQLite / PostgreSQL·InnoDB / DuckDB / RocksDB 选型;给出站内阅读地图、全系列学术谱系与开放问题,标志 SQLite 内核系列完成。
数据库内核实验索引
汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存、湖仓、流处理、查询引擎、RocksDB、向量、Redis、全文检索、TiKV/HTAP、FoundationDB、SQLite 与 WiredTiger 内核,以及 LSM-Tree 实验与其它单篇。
【WiredTiger 内核】文档库存储引擎全景:MongoDB 默认引擎的生态位
定位文档库默认引擎 WiredTiger 相对 PG/InnoDB/SQLite/RocksDB 的生态位;钉住 Session→Cache→Reconcile→HS→Checkpoint 主线、站内分工与 17 篇阅读路线,并以 Berenson 隔离词汇与 Durable History 为学术/工程锚点。