资源介绍
5.3 Tablet服务
如图5所示,Tablet的持久化状态信息保存在GFS上。更新操作提交到REDO日志中(alex注:Updates
are committed to a commit log that stores redo records)。在这些更新操作中,最近提交的那些
存放在一个排序的缓存中,我们称这个缓存为memtable;较早的更新存放在一系列SSTable中。为了恢
复一个Tablet,Tablet服务器首先从METADATA表中读取它的元数据。Tablet的元数据包含了组成这个
Tablet的SSTable的列表,以及一系列的Redo Point(alex注:a set of redo points),这些Redo
Point指向可能含有该Tablet数据的已提交的日志记录。Tablet服务器把SSTable的索引读进内存,之后通
过重复Redo Point之后提交的更新来重建memtable。
当对Tablet服务器进行写操作时,Tablet服务器首先要检查这个操作格式是否正确、操作发起者是否有执
行这个操作的权限。权限验证的方法是通过从一个Chubby文件里读取出来的具有写权限的操作者列表来
进行验证(这个文件几乎一定会存放在Chubby客户缓存里)。成功的修改操作会记录在提交日志里。可
以采用批量提交方式(alex注:group commit)来提高包含大量小的修改操作的应用程序的吞吐量
【13,16】。当一个写操作提交后,写的内容插入到memtable里面。
当对Tablet服务器进行读操作时,Tablet服务器会作类似的完整性和权限检查。一个有效的读操作在一个
由一系列SSTable和memtable合并的视图里执行。由于SSTable和memtable是按字典排序的数据结
构,因此可以高效生成合并视图。
当进行Tablet的合并和分割时,正在进行的读写操作能够继续进行。
5.4 Compactions
(alex注:这个词挺简单,但是在这节里面挺难翻译的。应该是空间缩减的意思,但是似乎又不能完全概括
它在上下文中的意思,干脆,不翻译了)