分离式内存事务系统全景调研 学习路线
DM 事务领域 12 年演进的横向调研路线:从 FaRM 到 AURA,覆盖核心问题地图、设计派系、RDMA 利用模式、索引与 MVCC、持久化与恢复、评测方法论、开放方向
DM 事务系统从 FaRM(NSDI’14)到 AURA(2026)已经走了 12 年。这条线上的论文有 30+ 篇,散落在 NSDI/OSDI/SOSP/ASPLOS/VLDB/SIGMOD/FAST/ATC 各个会议上,每篇都解了一个具体问题但又留下新 gap。本路线把这 12 年系统串成一条横向的全景调研——演进时间线、核心问题地图、设计派系全图、RDMA 利用范式、索引/MVCC/持久化/故障的工程权衡、评测方法论、开放方向。读完你会拿到这个领域完整的”地图能力”:看任何 DM 事务新论文都能秒判它在地图哪个角落、解了哪个问题、留下什么 gap。
与模块十五(AURA 论文系统化拆解)互补:模块十五是”一篇论文的纵深”,本模块是”整个领域的横扫”。先读本模块建立 landscape,再读模块十五深挖一篇是建议路径。
📑 目录
🌟 全景概览:为什么 DM 事务是分布式系统重新洗牌的角
传统分布式数据库的研究主线是**“如何让多个节点保持事务一致性”**——2PC、3PC、Paxos、Raft、Calvin、Spanner、Cockroach 这条线。它的隐含前提是:每个节点都是完整的”计算 + 存储”单元。
DM(Disaggregated Memory)打破了这个前提。在 DM 架构里:
- CN(Compute Node):只有 CPU + 缓存,几乎不持久化数据
- MN(Memory Node):只有内存,没有应用 CPU 参与的余地——它的 RNIC 处理 RDMA 请求,DMA 到/从主机内存
传统分布式数据库 DM 事务系统
────────────────── ──────────────────
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Node A │ │ CN │ │ CN │
│ ┌──────┐ │ │ logic │ │ logic │
│ │ CPU │ │ │ + cache │ │ + cache │
│ │ Disk │ │ └────┬─────┘ └────┬─────┘
│ │ DRAM │ │ │ │
│ └──────┘ │ │ RDMA │
└──────────┘ ▼ ▼
↕ network ┌─────────────────────┐
┌──────────┐ │ MN (passive memory) │
│ Node B │ │ data + locks │
│ ... │ │ no application CPU │
└──────────┘ └─────────────────────┘
🧠 核心洞察:DM 把”事务一致性”从”多个 active 节点协商”变成”多个 active CN 协商如何安全使用同一个 passive 存储池”。这是分布式事务问题的重新定义——很多 2PC/Paxos 的设计前提不再适用。
🍎 直觉比喻:传统分布式数据库像”多家分行各管一片,需要时打电话给对方”;DM 像”所有分行共享同一个保险库(MN),只能通过电子门禁(RDMA)操作里面的物品”。保险库不会主动做任何事。
这个架构带来 4 类全新挑战:
| 挑战 | 对应章节 |
|---|---|
| 不能在 MN 跑代码 → 锁状态机怎么维护 | §3, §4 |
| RDMA atomic IOPS 是物理上限 → 怎么不撞墙 | §3, §5 |
| MN 不主动 GC/recovery → 持久化和故障模型怎么设 | §7 |
| OCC 是默认范式 → 但 validate / lock 路径怎么优化 | §3, §4, §6 |
🌟 一句话主旨:DM 事务不是”网络更快的 Spanner”,而是”硬件假设根本不同的新物种”——读完本模块你会理解为什么这 12 年涌现这么多论文。
📖 章节导览
整个模块 9 章,从领域定义到开放方向:
| 章 | 主题 | 核心问题 | 主要系统/论文 |
|---|---|---|---|
| 1 | DM 事务定义与领域边界 | DM vs 单机 vs 共享存储 vs 经典分布式,4 个区分维度 | LegoOS / FaRM / Spanner |
| 2 | 12 年演进时间线:FaRM → AURA | 每个里程碑做了什么、留下什么 gap | 时间线 + 12 篇论文 |
| 3 | 8 个核心问题地图 | atomic IOPS / RTT / OCC / 锁布局 / 索引 / MVCC / 持久化 / 故障 | 问题驱动 |
| 4 | 协议设计派系全图 | 单版本 vs MVCC、OCC vs 2PL、集中 vs 分散锁、有 leader vs 无 | 谱系学 |
| 5 | RDMA 利用模式 | one-sided / two-sided / hybrid、batch、MR 布局 | FaRM / FaSST / DrTM+H |
| 6 | 索引、版本与 MVCC | hash / Btree / LSM 在 DM 上的差异、版本表设计 | RACE / SMART / Motor / Sherman |
| 7 | 持久化、故障与恢复 | PMEM / RDMA log / checkpoint / recovery 模型 | Clover / FORD-PMEM / Plor |
| 8 | 评测方法论与 benchmarks | TPC-C / SmallBank / TATP / YCSB 在 DM 上的适配 | benchmarks 综述 |
| 9 | 开放问题 + 自家工作 CREST/AURA | CXL / AI infra / 异构 NIC / cross-DC + AURA 这一支的 contribution | 未来方向 |
🍎 学习顺序建议:第 1-2 章必读(建立全局观)→ 按你最感兴趣的子方向选 §3-§7(每章独立)→ §8 实验方法论 → §9 看自家工作如何在地图里定位。
⏳ 40 篇里程碑论文清单
按时间排,分 5 个时代:
时代 1:奠基(2014–2017)
| 年份 | 论文 | 一句话贡献 |
|---|---|---|
| 2014 | FaRM (Dragojević et al., NSDI’14) | 首篇系统性 RDMA OCC 事务,奠定单边 + lock-bypass 路线 |
| 2015 | DrTM (Wei et al., SOSP’15) | RDMA + HTM 协同,“硬件 + 网络”加速 |
| 2016 | FaSST (Kalia et al., OSDI’16) | 反直觉论证:two-sided 在某些场景比 one-sided 快 |
| 2016 | Design Guidelines for High Performance RDMA Systems (Kalia, ATC’16) | RDMA 设计 best practices 总结 |
| 2017 | InfiniSwap (Gu et al., NSDI’17) | RDMA-based 远端 swap,DM 概念落地早期工作 |
时代 2:消化与重构(2018–2020)
| 年份 | 论文 | 贡献 |
|---|---|---|
| 2018 | DrTM+H (Wei et al., OSDI’18) | hybrid verbs 调度,按场景混用 one-sided / two-sided |
| 2018 | LegoOS (Shan et al., OSDI’18) | Disaggregated OS 概念奠基 |
| 2018 | Hyperloop (Kim et al., SIGCOMM’18) | 大规模 RDMA flow scheduling |
| 2019 | Storm (Kim et al., FAST’19) | RDMA 调度的 fairness |
| 2020 | RACE (Zuo et al., ATC’20) | DM 上的高效 hash 索引 |
时代 3:DM 事务专项(2020–2022)
| 年份 | 论文 | 贡献 |
|---|---|---|
| 2020 | NAM-DB (Zamanian et al., VLDB’20) | NIC-attached memory 数据库 |
| 2021 | XStore (Wei et al., OSDI’20) | RDMA-aware learned index |
| 2022 | FORD (Zhang et al., FAST’22) | 单版本 DM 事务,cache-line 对齐锁 + doorbell batch |
| 2022 | Sherman (Wang et al., SIGMOD’22) | 分布式 B+tree on DM |
| 2022 | Clover (Tsai et al., ATC’20) | DM 上的快速持久化 KV |
时代 4:MVCC 与持久化(2022–2024)
| 年份 | 论文 | 贡献 |
|---|---|---|
| 2023 | Plor (Lee et al., ATC’23) | DM 持久化日志加速 |
| 2023 | Outback (Choi et al., NSDI’23) | 异步 RDMA OCC validation |
| 2024 | Motor (Wu et al., OSDI’24) | MVCC + 一致版本表,支持 SI |
| 2024 | SMART (Luo et al., FAST’24) | DM 上的 LSM-tree |
| 2024 | Outpost (Wang et al., ASPLOS’24) | DM 上的 streaming OCC |
时代 5:锁分离 + 控制面(2025–2026)
| 年份 | 论文 | 贡献 |
|---|---|---|
| 2025 | LOTUS (Liu et al., arXiv’25) | 首次把锁提到 CN,应用提供 critical field |
| 2025 | CREST(开源 DM 事务系统) | 针对高冲突倾斜负载,cell-level OCC + MVCC,自带 FORD/MOTOR 对比实现 |
| 2026 | AURA (本路线主体) | 动态锁所有权 + 闭环控制 + 在线 cohort 学习 |
🍎 建议精读 8 篇(按时间):FaRM → FaSST → DrTM+H → FORD → Motor → Sherman → LOTUS → AURA。这 8 篇覆盖 90% 的领域核心思想。
🛠️ 系统对比速查表
协议派系
| 维度 | 选项 | 代表系统 |
|---|---|---|
| 并发控制 | OCC / 2PL / hybrid | FaRM, FORD, Motor: OCC / DrTM: HTM+OCC |
| 版本 | 单版本 / MVCC | FORD: 单版本 / Motor, Outpost: MVCC |
| 锁权威位置 | MN / CN-static / CN-dynamic | FaRM/FORD/Motor: MN / LOTUS: CN-static / AURA: CN-dynamic |
| Validate | 同步 / 异步 / pipelined | FaRM/FORD: 同步 / Outback/Outpost: 异步 |
| Index | hash / Btree / learned / LSM | RACE: hash / Sherman: Btree / XStore: learned / SMART: LSM |
| 持久化 | DRAM / PMEM / NVMe | FaRM: DRAM / Clover/FORD-PMEM: PMEM |
RDMA 利用
| 系统 | 主路径 | 备路径 |
|---|---|---|
| FaRM | one-sided READ + CAS | two-sided 控制 |
| FaSST | two-sided | — |
| DrTM+H | hybrid 调度 | — |
| FORD | one-sided + doorbell batch | — |
| Motor | one-sided + masked CAS | — |
| AURA | one-sided 数据 + 本地锁 | fallback to MN one-sided |
评测 benchmark
| Benchmark | 性质 | 在 DM 论文中常用 |
|---|---|---|
| TPC-C | OLTP 标准(写密集) | 几乎所有 DM 事务 paper |
| SmallBank | 简单 OLTP | FORD / Motor |
| TATP | 电信场景(读密集) | FaRM / FORD |
| YCSB | 通用 KV | RACE / Sherman |
| Custom microbench | 单点测 atomic IOPS / lock contention | LOTUS / AURA |
🧭 新人破局指南
学习路径(推荐 4–6 周)
第 1 周:领域 landscape
- §1 + §2 必读
- 目标:能默写 12 年时间线 + 5 个时代分期
第 2 周:核心问题地图
- §3 + §4
- 精读 FaRM + FORD + Motor 三篇 paper
- 目标:能用一句话区分 OCC / MVCC / 锁集中 / 锁分散
第 3 周:RDMA 工程细节
- §5
- 跑 perftest(ib_send_bw / ib_atomic_bw / ib_read_bw)
- 目标:能用实测数字解释 atomic 为什么是瓶颈
第 4 周:索引、MVCC、持久化
- §6 + §7
- 选 1–2 个具体论文(Sherman / Motor)深读
- 目标:能描述 DM 上 Btree 实现的 3 个工程难点
第 5 周:评测方法论
- §8
- 目标:能设计一组合理的 baseline + workload 矩阵
第 6 周:开放问题与自家工作
- §9
- 目标:能找到一个还没人做的 gap,作为新工作灵感
三个高频踩坑
- 以为 DM 事务 = 网络更快的 Spanner:DM 的核心约束是”MN 不参与”,这是物理层差异,不是性能差异。Spanner 的很多设计在 DM 下根本不适用。
- 以为 RDMA atomic 能水平扩:atomic IOPS 是 NIC 单卡硬上限,加 QP 不能扩。这个误解是大多数读者第一次看 LOTUS / AURA 困惑的根源。
- 以为 OCC 比 2PL 慢:在 DM 下恰恰相反——OCC 不需要 MN 参与,2PL 需要。所有 DM 事务系统几乎都用 OCC。
核心思维:DM 改变的设计公理
| 经典分布式假设 | DM 现实 |
|---|---|
| 远端节点能跑代码 | 不能(MN 是被动存储) |
| 锁的”等待”语义可用 | 不可用(要远端线程被唤醒) |
| 数据迁移是核心手段 | 代价高(违反 disaggregation) |
| 一致性 = 共识 | 一致性 = 单边原语 + 不变式 |
🌟 理解这张表就理解了”为什么 DM 事务是另一种生物”。
📚 参考资料
综述与背景
- The Datacenter as a Computer (Barroso et al., 3rd ed., 2018) —— Warehouse-scale computing 奠基
- A Survey on Disaggregated Memory (Wang et al., 2023) —— 早期综述
- A Tale of Two Trees (Levandoski et al., 2014) —— 索引派系经典对比
关键论文(按时代分)
- 奠基期:FaRM (NSDI’14),DrTM (SOSP’15),FaSST (OSDI’16),Design Guidelines (ATC’16)
- 消化重构期:DrTM+H (OSDI’18),LegoOS (OSDI’18),RACE (ATC’20)
- DM 事务专项:FORD (FAST’22),Sherman (SIGMOD’22),Clover (ATC’20),XStore (OSDI’20)
- MVCC 持久化:Motor (OSDI’24),SMART (FAST’24),Outpost (ASPLOS’24),Outback (NSDI’23)
- 锁分离 + 控制面:LOTUS (arXiv’25),CREST(开源 DM 事务系统),AURA (本路线 §9)
工业系统与开源
- CREST 仓库 —— 本路线第 8/9 章实战载体
- rdma-core 文档
- MLNX OFED 4.9 release notes
实战环境
- CloudLab Utah c6525-25g —— 主战场
- APT cluster (Utah) —— 跨硬件 portability 实验