章节摘要:本章解决三个问题——为什么会有 NoSQL、MongoDB 的架构长什么样、怎么把它正确地装起来。三个问题分别对应三起事故:用关系型思路硬扛海量半结构化数据导致迁移失败、驱动与服务器版本不匹配导致上线崩溃、数据目录权限错误导致服务起不来。读完本章,你能在选型讨论里说清 MongoDB 的边界,也能独立完成一次干净的部署。
金句:MongoDB 不是"更快的 MySQL",它是把"结构"还给应用层的数据库——这一句话理解错,后面所有建模都会错。

先判断"该不该用",再看"里面长什么样",最后"装起来跑通"——三节是决策链,不是知识清单。反过来看也成立:如果 1.1 的判据通不过,后面两节就不该发生;如果 1.3 的排查法救不了你的实例,问题多半出在 1.2 讲的组件层而不是安装层。
该不该用(1.1) ──► 里面长什么样(1.2) ──► 装起来跑通(1.3) │ │ │ 选型判据 架构与版本 排查套路
三起事故还有一个共同点值得点破:它们都不是数据库的 bug,而是使用者的假设与数据库的假设错位——假设结构稳定、假设升级无断层、假设目录权限无关紧要。带着"对齐假设"的意识读后面的故障年鉴,每一起都能读出双层的教训。
离开本章前,逐条自查:能否不看资料说出 NoSQL 四类分支各自的代表与短板;能否解释 BSON 与 JSON 的差异以及 MongoDB 三层结构(实例、数据库、集合)的对应关系;能否画出 mongod 进程内 WiredTiger 缓存、数据文件、journal 三者的写入路径;能否默写一份最小可用的生产配置文件骨架;能否对着一条 NonExistentPath 或 Permission denied 日志说出排查动作。任何一条卡住,回到对应小节的事故复盘里再走一遍定位过程。
前置:基本的 Linux 命令行操作、JSON 读写能力。延伸:第 2 章开始进入数据模型与 CRUD,本章装好的实例正是后续所有操作的舞台。