通过一个具体的场景来理解SSTable的工作原理。
想象一下,你是一家大型图书馆的图书管理员,这个图书馆藏书众多,每天都有大量的读者来借书和还书。为了方便管理,你决定使用一种特殊的图书登记系统,这个系统就类似于SSTable。
-
数据的写入:
- 每当有新书入库(数据写入),你首先会在一个临时登记表(MemTable)上记录下这本书的详细信息,比如书名、作者、ISBN号(作为键),以及它在书架上的具体位置(作为值)。
- 当这个临时登记表快写满了,你会把它的内容转移到图书馆的永久档案室(SSTable),也就是从MemTable写入到SSTable。这个过程中,所有的书籍信息都会被有序地存储,比如按照书名的字母顺序排列。
-
数据的读取:
- 当读者想要借阅一本书时,你首先会在临时登记表中查找这本书的信息。
- 如果临时登记表中没有,你就需要去永久档案室查找。由于档案室的资料是有序存储的,你可以非常快速地通过二分查找法找到这本书的详细信息。
- 为了提高查找效率,档案室的每个书架(数据块)都有一个索引卡(块索引),上面记录了这个书架上所有书的基本信息。当你打开一个档案室(SSTable)时,你会把索引卡读入到你的脑海中(内存),这样查找时就可以快速定位到具体的书架。
-
数据的更新和维护:
- 如果一本书的信息有更新,比如位置变更,你会先在临时登记表中更新,等到下一次转移到永久档案室时,这个更新后的信息就会被写入。
- 随着时间的推移,档案室里的档案会越来越多。为了节省空间和保持档案的更新,你会定期对档案室进行整理(压缩),把旧的档案和临时登记表中的最新信息合并,生成新的档案,同时淘汰掉过时的档案。