随笔分类 - Mini-lsm
Mini-lsm笔记
摘要:恭喜你!你成功了!在上一章中,您使您的LSM引擎具有多版本的能力,并且用户可以使用事务API与您的存储引擎进行交互。在本周末,我们将实现存储引擎的一些简单但重要的特性。欢迎来到Mini-LSM的第3周零食时间! 在本章中,我们将提取我们的合并垃圾回收逻辑,成为合并过滤器。 目前,我们的合并将简单地保
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 现在,我们将在事务提交时添加一个冲突检测算法,以便使引擎具有一定程度的可序列化性。 要运行测试用例,请执行以下操作: cargo x c
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 在本章中,您将实现Transaction的所有接口。您的实现将为事务内的修改维护一个私有工作区,并批量提交它们,以便事务内的所有修改在提
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 在本章中,您将实现必要的结构来跟踪用户正在使用的最小读取时间戳,并在执行合并时从SST中清理不会再使用的版本。 要运行测试用例,请执行以
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 在本章中,您将: 在上一章的基础上完成读路径,以支持快照读。 实现事务API,支持快照读。 引擎恢复过程中能正确恢复已提交时间戳。 最后
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 在本章中,您将: 重构你的memtable/WAL以存储一个键(key)的多个版本。 实现新的引擎写入路径,为每个键(key)分配一个时
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 在本章中,您将: 重构你的实现以使用key+ts(时间戳)表示。 使您的代码使用新的键(key)表示形式进行编译。 要运行测试用例,请执
阅读全文
摘要:Week 3 Overview Multi-Version Concurrency Control 在这一部分中,您将在前两周构建的LSM引擎上实现MVCC。我们将在key中添加时间戳编码以维护key的多个版本,并更改引擎的某些部分以确保根据是否有用户读取旧版本来保留旧数据或进行垃圾收集。 本教程中
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm 在上一章中,您已经构建了一个完整的基于LSM的存储引擎。在本周末,我们将实现存储引擎的一些简单但重要的优化。欢迎来到Mini-LSM的第
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 实现WAL日志文件的编解码 系统重启时使用WAL日志恢复memtable 要将测试用例复制到启动器代码
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 实现manifest文件的编解码。 系统重启时从manifest文件中恢复。 要将测试用例复制到启动器
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 实现一个分级合并策略,并在合并模拟器上进行仿真。 将分级合并策略纳入系统。 要将测试用例复制到启动器代
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 实现tiered合并策略并在压缩模拟器上对其进行模拟。 将tiered合并策略纳入系统。 我们在本章所
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 要将测试用例复制到启动器代码中并运行它们, 实现一个simple leveled合并策略,并在合并模拟
阅读全文
摘要:Week 2 Overview: Compaction and Persistence 在上周,您已经实现了LSM存储引擎的所有必要结构,并且您的存储引擎已经支持读写接口。在本周中,我们将深入探讨SST文件的磁盘组织,并研究在系统中实现性能和成本效益的最佳方法。我们将花4天时间学习不同的compac
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 要将测试用例复制到启动器代码中并运行它们, 实现合并某些SST文件并生成新SST文件的compacti
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在上一章中,您已经构建了一个具有get/scan/put支持的存储引擎。在本周末,我们将实现SST存储格式的一些简单但重
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 使用L0 flush实现LSM写路径。 实现逻辑以正确更新LSM状态。 要将测试用例复制到启动器代码中
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Task1-Two Merge Iterator 在此任务中,您需要修改: src/iterators/two_merge_iterat
阅读全文
摘要:项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Task 1-SST Builder 在此任务中,您需要修改: src/table/builder.rs src/table.rs SS
阅读全文