2023-02-14
WiscKey能解决Bitcash遇到的问题吗?
Bitcash遇到两个问题:需要将所有键保留在内存中,需要在启动时重新构建哈希表。
我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
Bitcash遇到两个问题:需要将所有键保留在内存中,需要在启动时重新构建哈希表。
WiscKey通过在LSM树中保存键排序并在称为vLog(值日志)的无序仅追加文件中保存数据记录,来将排序与垃圾收集解耦。它可以解决Bticask遇到的问题。

上图展示了WiscKey的关键组件,以及键和日志文件之间的映射。vLog文件保存无序数据记录。键存储在排序的LSM树中,指向日志文件中最新数据记录。
由于键通常比与其相关联的数据记录小得多,所以压实它们的效率要高得多。这种方法对于更新和删除较少的场景特别有用,在这种情况下,垃圾收集不会释放太多的磁盘空间。
WiscKey的主要挑战是,由于vLog数据是未排序的,所以范围扫描需要随机I/O。WiscKey在范围扫描时使用固态硬盘的内部并行性来并行预取数据块,以减少随机I/Or开销。在数据块传输方面,其成本仍然很高:在范围扫描期间,要获取一条的数据记录,必须读取该数据记录所在的整个页。
在压实过程中,vLog文件的内容被顺序读取,并在合并后写入新的位置。指针(键LSM树的值)被更新以指向这些新位置。为了避免扫描整个vLog的内容,WiscKey使用头部和尾部指针持有有关vLog段的信息,这些vLog段中仍保留着存活的键。
由于vLog中的数据未排序,并且不包含存活信息,所以必须扫描键树以查找哪些值仍然是存活的。在垃圾收集期间执行这些检查引入了额外的复杂度:传统的LSM树可以在压实期间直接解析文件内容,而无须处理键索引。
评论
有用 4
墨值悬赏