阅读原文链接地址在这,http://bit.ly/hlFaqL

Mark一段针对废数据合并的。

更新和删除操作会产生很多的无用数据,这些垃圾数据的回收是通过定时合并操作实现的,一般可选择每天服务的低峰期,比如凌晨两点启动每日合并任务。

定时合并(Merge):采用0/1目录的方式,假设当前的服务目录编号为0,合并过程如下:

1, 关闭目录0的数据文件和索引文件,后续的更新操作(包括合并过程中的更新操作)都写入目录1中新开的文件;

2, 顺序读取目录0的索引文件,对每一个索引项,对比是否与内存中的内容一致,如果一致,说明是最新的有效索引,将对应的数据追加到目录1中的数据文件,同时生成相应的索引信息追加到目录1的索引文件中并修改内存中的索引项;

3, 合并过程结束时可以回收目录0中的数据文件和索引文件;

由于合并过程中可能有更新操作,且都需要追加目录1中的索引文件,因此,需要将索引文件编号分成两段,比如合并过程中写入的索引文件从1开始编号,最大不超过1000;更新操作写入的索引文件从1001开始编号。

转载请注明来源:Leoncom-《Mark一个分布式KV的概述》
,
Trackback

no comment untill now

Add your comment now