mini-lsm
文章平均质量分 93
mini-lsm
余为民同志
做一个优秀的普通人,在热爱中燃烧。
展开
-
mini-lsm通关笔记Week2Day3
项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsm。原创 2024-09-25 19:45:22 · 884 阅读 · 0 评论 -
mini-lsm通关笔记Week2Day2
项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsm。原创 2024-09-25 19:39:04 · 688 阅读 · 0 评论 -
mini-lsm通关笔记Week2Overview
合并策略通常的目的是控制排序的run层数,从而使读放大保持在一个合理的数量。通常有两类合并策略:分级(leveled)和分层(tiered在分级合并中,用户可以指定最大级别数,即系统中排序的run的层数(L0除外)。例如,RocksDB通常在分级合并模式下保持6级(排序的run在合并过程中,来自两个相邻层的SST将被合并,然后产生的SST将被放到两个层的较低层。因此,在分级合并中,您通常会看到一个小的排序的run与一个大的排序的run合并。排序的run。原创 2024-09-25 18:57:25 · 769 阅读 · 0 评论 -
mini-lsm通关笔记Week2Day1
项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsm。原创 2024-09-09 21:27:33 · 930 阅读 · 0 评论 -
mini-lsm通关笔记Week1Day7
根据需要,您可能需要向结构中添加新的字段,而不是在启动器代码中提供的字段。现在,在get读取路径上,我们还可以使用布隆过滤器来忽略不包含用户想要查找的key的SST,从而减少从磁盘读取文件的数量。您可以将键添加到布隆过滤器中,并且您可以知道在添加到布隆过滤器中的键集合中,哪些键可能存在/一定不存在。由于SST文件是按顺序存储键的,所以有可能用户存储的是相同前缀的键,我们可以在SST编码中对前缀进行压缩,以节省空间。根据需要,您可能需要向结构中添加新字段,而不是在启动器代码中提供的字段。原创 2024-09-03 22:15:24 · 719 阅读 · 0 评论 -
mini-lsm通关笔记Week1Day6
项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsm。原创 2024-09-02 21:21:48 · 799 阅读 · 0 评论 -
mini-lsm通关笔记Week1Day5
项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsm。原创 2024-08-26 21:47:07 · 1135 阅读 · 0 评论 -
mini-lsm通关笔记Week1Day4
项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsm。原创 2024-08-21 23:11:13 · 903 阅读 · 0 评论 -
mini-lsm通关笔记-字符相关操作
本文捋一下mini-lsm中的字符相关操作。原创 2024-07-07 12:55:07 · 559 阅读 · 0 评论 -
mini-lsm通关笔记Week1Day3
由于键值条目以原始格式存储,偏移量存储在单独的数组中,这减少了解码数据时不必要的内存分配和处理开销——您需要做的是简单地将原始块数据复制到数据数组中,并每隔2个字节解码条目偏移量,而不是创建类似Vec将所有的键值对存储在内存中的一个块中。块的大小通常为4 KB(大小可能因存储介质而异),这相当于操作系统中的页面大小和SSD上的页面大小。如果到达块的末尾,我们可以将key设置为空,并从is_valid返回false,这样调用者可以在可能的情况下切换到另一个块。,它将定位在块中的第一个键。原创 2024-06-22 01:48:24 · 692 阅读 · 0 评论 -
mini-lsm通关笔记Week1Day2
但是,当我们走出if条件并将错误返回给调用者时,PeekMut的drop将尝试在堆中移动元素,这导致访问无效的迭代器。在PeekMut的范围内。你可以简单地用memtable迭代器构造一个LSM迭代器(记得把最新的memtable放在merge迭代器的前面),然后你的存储引擎就可以处理扫描请求了。您需要首先在单个memtable上创建迭代器,然后在所有memtable上创建合并迭代器,最后实现迭代器的范围限制。然而,在我们的情况下,我们不希望在迭代器上有这样的生命周期,以避免使系统过于复杂(并且难以编译…原创 2024-06-22 01:47:00 · 716 阅读 · 0 评论 -
mini-lsm通关笔记Week1Day1
使用RustRover打开项目,按照如下命令执行,运行第一天的ut需要先安装nextest。原创 2024-06-13 23:18:19 · 880 阅读 · 0 评论