知识卡片

日志先于内存表

普通读书笔记卡 · 1719.b

内容

BigTable 写入 tablet 时先追加 commit log,再写入 memtable;恢复时从 redo point 之后重放日志,并结合 SSTable 重建状态。发散:LSM 类系统的可靠性来自“先可重放,再可压缩”,性能来自把随机写转成顺序追加。

参考来源

- 位置:《分布式系统与一致性》第4章《Google的BigTable系统》"4.2.4 tablet的读/写操作"及"4.2.3 加载tablet"一节(源文件:_epub-src/OEBPS/Text/chapter8.xhtml) - 结论依据:原文明确"执行tablet的写入操作,会先调用GFS的客户端向日志文件中追加一条redo记录,然后数据会被插入memtable中",恢复时"从重做点重新执行一遍redo log,在内存中重建memtable"。 - 原始内容:执行tablet的写入操作,会先调用GFS的客户端向日志文件中追加一条redo记录,然后数据会被插入memtable中……加载tablet的过程就是从GFS中读取日志文件,然后从重做点重新执行一遍redo log,在内存中重建memtable。