空位图构建数据库 #1:日志实际上就是数据库

主要观点:开始一个新系列,用 Rust 逐步构建基于 LSM 的存储引擎,该项目旨在介绍核心思想,而非追求生产级数据库的正确性和性能测试等,会逐步解决当前功能数据库存在的问题如读写性能慢、日志无界增长等。
关键信息

  • 引入serdeserde_jsontokio库。
  • 创建Db结构体表示数据库,初始时为字符串到字符串的映射,且分配较随意。
  • 通过日志Log记录put操作,以实现get功能,put时将Put结构体序列化为 JSON 并写入日志,get时遍历日志查找对应key的值。
  • 实现Dbnewputget方法,main函数测试数据库功能。
    重要细节
  • Log结构体的open方法用于创建并打开日志文件,put方法将Put结构体序列化为 JSON 写入日志并同步到磁盘。
  • Queryable trait 用于定义get方法,Log实现该 trait 以提供get功能。
  • 数据库操作存在读写性能问题及日志无界增长等问题,将在下一次解决。
阅读 13
0 条评论