From ca579fc532206dac1a52e81dc1df3514892df509 Mon Sep 17 00:00:00 2001 From: qian yangyang Date: Fri, 20 Jan 2023 20:55:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0SSTable=E7=9A=84=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes to be committed: modified: README.md new file: img/data_block_schema.png new file: img/footer_schema.png new file: img/index_block_schema.png new file: img/sstable.png --- README.md | 24 ++++++++++++++++++++---- img/data_block_schema.png | Bin 0 -> 44338 bytes img/footer_schema.png | Bin 0 -> 14498 bytes img/index_block_schema.png | Bin 0 -> 14342 bytes img/sstable.png | Bin 0 -> 27882 bytes 5 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 img/data_block_schema.png create mode 100644 img/footer_schema.png create mode 100644 img/index_block_schema.png create mode 100644 img/sstable.png diff --git a/README.md b/README.md index f598a4c..c88b2b6 100644 --- a/README.md +++ b/README.md @@ -54,15 +54,31 @@ docker run -it -v /{smallkv代码所在的目录}:/test smallkv-testenv /bin/bas ``` --- ## 设计 -1. **内存池设计** +### 1. **内存池设计** ![mem_pool](./img/mem_pool_design.png) -2. **缓存设计** +### 2. **缓存设计** ![cache](./img/cache_design.png) Cache中持有N(默认为5)个指向CachePolicy的指针,相当于5个分片,可以减少哈希冲突以及减少锁的范围;LRUCache和LFUCache都是CachePolicy的子类。 -3. **SStable设计** -todo +### 3. **SStable设计** +每个.sst文件存储一个SSTable结构,SSTable结构如下所示: +![sstable_schema](./img/sstable.png) +下面细说每个模块的内容: +- #### DataBlock +![data_block_schema](./img/data_block_schema.png) + 1)上图中,每个Record存储了具体的KV数据,并且记录了连续的Key的共享长度(为了差值压缩); + 2)Restart主要用来进行二分查找,根据Restart中记录的offset信息可以解析出对应的Record Group中最小的Key,通过比对连续的Restart中的Key可以快速定位K-V pair,每个Restart记录了一个Record Group中的Record数量,以及对应的size和offset,每个Restart长度为12字节; + 3)Restart_NUM记录了Restart的数量; + 4)Restart_Offset记录了Restart的size和offset信息; +- #### MetaBlock +MetaBlock中存储了Filter信息(位数组和哈希函数个数),也就是布隆过滤器的数据。为什么需要这个数据?因为sst是顺序append结构,所以写入很快(O(1)),但是查找非常慢(O(N)),于是需要一个布隆过滤器来对请求进行初步的过滤(可以过滤掉一定不存在的KV pair)。 +- #### IndexBlock +![index_block_schema](./img/index_block_schema.png) +IndexBlock存储对应的DataBlock中的最大key信息(注意:实际存储的是shortest_key,并且shortest_key = min{shortest_key > 对应的DataBlock的最大key},这样可以减小比较次数,缓解高并发下的压力);Offset_Info存储了对应DataBlock的size和offset。 +- #### Footer +![footer_schema](./img/footer_schema.png) +MetaBlock_OffsetInfo记录了MetaBlock的size和offset,IndexBlock_OffsetInfo记录了IndexBlock的offset(第一个IndexBlock的offset)和size(所有IndexBlock的总大小)。 --- ## 第三方依赖: diff --git a/img/data_block_schema.png b/img/data_block_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec3f323e0d4382567ba4009fb594f50f3910078 GIT binary patch literal 44338 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 literal 0 HcmV?d00001 diff --git a/img/index_block_schema.png b/img/index_block_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..dcdfc394c23591f97589a5e6dfe004a39438f47d GIT binary patch literal 14342 zcmeHuX;_oz)~>s)?XK8bt%@i@tAa+RLJae;tEH4#gAgMGsz4&M5C%gSc5Ss*5Gr#5 zB+4jLqC^N`NE`|g$RJ~Y1foI`8A60WVn|5N%l>xv_nm*|$N6!tbM*&2r=tmk>w zTJOE?d%eG%_4D{_$H5)jwr%^&^M~)C+qP|o0Do`%{bS(w)m_yA!0V1+xDAm{rt@ndhFe{ZFc3J-+g=jTBvjy(_s>M z$#O%JSZ(j_-uvLhy(2d5ci7JSmtRf){lr(dzN-Ga&CgZ;eDlTGTL))-e0(Y{-~6(k z`F5zRi7kT1qdzVkoT7jxM!*VD&u&*JKMdnz5#HEz_&o5GGY3T2p?Pp~{# z%vj^aXqaSUJ>Fy1mZjEcVp*7y(dUpM$`5B?AR;N#_@0KbOz`00~Jj(j;#=Ud*0NS&;m>PQTi zr0#|jV<#To*Y;rEJ^dstUjJ?uir*gRwrOYdV-N^(=@m43dF`LXmSy!lY|gD0A0^4u zo3ZO)H#u0TfvcY^xbC|4`z;^O<+hQ`MPd0a!F<-( e^TdcE2S7qvxkW1T&@ZVhZ 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 GUjJWEVeWDO literal 0 HcmV?d00001 diff --git a/img/sstable.png b/img/sstable.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc31fa210177f572ad00b7f36aa854ea7d8c0f7 GIT binary patch literal 27882 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 YZFM~M;j%OKZhW>b;uG4(pMU*70K}G1g8%>k literal 0 HcmV?d00001