第 4 章 · 写入之旅:文档 API 与并发控制 章节摘要:一条写入请求从客户端出发,被协调节点按路由公式派往某个主分片,在那里经历内存缓冲、事务日志、刷新成段的全过程。本章沿这条路径讲三组能力:写入与自动生成 id、单文档的读取更新删除、批量写入与乐观并发控制。写路径是理解集群行为(黄色状态、近实时、段合并)的地基,第 8 章的所有"为什么"都能在本章找到起点。 学习目标 阅读完本章,你应当能够: 手算一条文档的路由结果,说出指定 id 与自动生成 id 在路由与写入语义上的差别。 按需求选用读取、存在性检查、局部更新、删除四类单文档操作,并说明各自的代价。 用批量接口组织混合操作流,解释其换行分隔的报文格式与部分失败的读法。
章节摘要:一条写入请求从客户端出发,被协调节点按路由公式派往某个主分片,在那里经历内存缓冲、事务日志、刷新成段的全过程。本章沿这条路径讲三组能力:写入与自动生成 id、单文档的读取更新删除、批量写入与乐观并发控制。写路径是理解集群行为(黄色状态、近实时、段合并)的地基,第 8 章的所有"为什么"都能在本章找到起点。
阅读完本章,你应当能够:
金句:写路径的每一步都在回答同一个问题——此刻掉电,哪些数据必须还在,哪些可以晚点可见。
写入请求发出后的完整旅程:路由公式的推导、指定 id 与自动 id 的分野、写路径六步里每步的持久化语义。这一节是全册"分片之旅"主线的核心一站。
单文档的四件套:按 id 取原文、轻量存在性检查、脚本驱动的局部更新、打标记式删除。顺带说清一个反直觉事实——更新从来不是原地修改,而是删除加重写。
一次搬运一千条文档的正确姿势:批量接口的报文格式、部分失败的处理纪律;再给并发更新装上护栏——序列号做版本判官,谁持有旧号谁被拒。
三节按"一、单、批"的组织逻辑递进:先吃透一条文档的完整写入路径,再看单文档的读改删如何复用同一条路径,最后扩展到批量与并发场景。4.3 的并发控制依赖 4.1 写入返回的序列号,4.2 的更新语义依赖 4.1 的"删除加重写"模型——顺序阅读,每一节都站在前一节的肩膀上。
4.1 写入与路由 ──► 4.2 单文档读改删 ──► 4.3 批量与并发 │ │ │ └─► 第8章 refresh └─► 第5章 读取与_source └─► 第9章 数据搬运与同步
| 考核点 | 达标标准 | 对应小节 |
|---|---|---|
| 手算路由 | 给定文档 id 与主分片数,算出目标分片并说出公式的三个输入 | 4.1 |
| 选 id 策略 | 对"工单同步"与"日志采集"两类数据各选对 id 方案并说明理由 | 4.1 |
| 复述写路径 | 按顺序说出写路径六步,标出每步的持久化与可见性边界 | 4.1 |
| 四件套选型 | 对取、探针、改、删四类需求各写出正确的接口 | 4.2 |
| 批量纪律 | 写出合规的批量报文,并演示从响应里找出部分失败条目 | 4.3 |
| 并发护栏 | 用序列号指纹演示一次冲突被拒,并说明外部版本的适用面 | 4.3 |