日知录第三章常用数据结构

本文介绍了数据存储技术中的布隆过滤器、LSM树及其优化策略。内容涵盖LSM树的写入流程,包括如何通过skiplist实现有序写入,以及磁盘存储的levelDB结构。还讨论了compaction过程,包括minor和major compaction,并提及Cuckoo哈希作为优化手段。此外,文章提及了SmallIndexLargeTable作为Cuckoo哈希的变种。
摘要由CSDN通过智能技术生成

布隆过滤器

skiplist

fingertable?

LSM树

目的是将随机写转化为快速的顺序写
1.写入时仅顺序写入内存(使用skiplist,按key有序),并同时记录log,保证安全
2.内存写满时开始写入磁盘,磁盘采用levelDB(google)的形式,是按key排序的
3.每个level的sstable存储一定范围的数据,不会重复(0层会)。
4.manifest存储元数据(?)包括每个sstable的最大最小key。current记录当前manifest

compaction

minor
指将内存写入磁盘,此过程不删除任何数据,因为删数据需要查找value,开销太大
major
指某一level的sstable大于一定数量之后会与下一level的是sstable合并。
特别的对于level0,由于该level的key有重叠,与下一level合并时,要遍历level,找到所有在该sstable范围内的数据与下一level的sstable合并
对于每个level要合并的sstable的选取,通过环形顺序选择
对于level k+1的sstable选择,同样选取level k的sstable范围内所有含有范围内数据的sstable,使用多路归并排序进行合并

Cuckoo哈希

使用两个hash计算得到两个桶的位置(也可能得到同一个桶)
若有空桶直接插入
若没有空桶,则移出一个桶,将数据插入,移出数据重复上述过程
可能出现循环,则设置最大替换次数,达到次数就扩容(扩容O(n)?)
SmallIndexLargeTable是Cuckoo哈希的巧妙修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值