-
merge过程对数据文件的写入
变更首先写入memory table;
达到一定大小后flush 到存储设备中,此时叫低级别sstable;
之后,合并到高级别的sstable。
2. merge过程对索引的写入
索引的实现:每个SSTable有一个索引文件,索引支持二分,所以可以用红黑树或跳表
3. 更新、删除操作
SSTable是不能修改的,因而update和delete的做法也跟传统方法有不同。Update时,只需要在memtable中存一个新版,删除时则保存一个“墓碑标记”,老版本的数据暂时不用管。在后续的read操作中,读到新版本或者“墓碑标记”时,就立即返回,而老版本数据由于读取顺序,根本就不会被读到!
那这些残留的数据如何清理呢?当SSTable文件过多时(通常数百个),会运行一个后台任务对其进行合并,此时残留的老版本数据、已删除数据就被覆盖、删除等等。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25380026/viewspace-2644792/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25380026/viewspace-2644792/
博客介绍了SSTable相关操作。merge过程中,数据先写入memory table,达一定大小后flush到存储设备成低级别sstable,再合并到高级别;索引用红黑树或跳表实现。更新时在memtable存新版,删除保存“墓碑标记”,后续通过后台任务合并SSTable文件清理残留数据。
747

被折叠的 条评论
为什么被折叠?



