2026CCF开源创新大赛项目申报书

赛道一:MoonBit 创新应用开发 | 大赛选题:基于 Bitcask 的键值对数据库实现

项目名称 moonkv 项目标识 caassien/moonkv
申报团队 韦安良 开源协议 Apache License 2.0
GitLink 仓库 https://gitlink.org.cn/wallll/moonkv
GitHub 仓库 https://github.com/wallll-wal6/MoonKV
1. 立项依据与痛点分析
当前 WebAssembly (WASM) 容器与边缘计算生态对原生、高容错、轻量级的存储方案有着迫切的需求。由于传统的 KV 引擎大多依赖于庞大的 C/C++ FFI 绑定,难以无缝编译为安全、跨平台的 WASM 模块。 本项目旨在利用我国自主研发的编程语言 MoonBit,基于经典的 Bitcask 架构设计,从零构建一个零外部依赖、数据天然隔离且拥有极高写入吞吐量的原生 K-V 数据库,填补 WASM 轻量级原生持久化存储生态的空白。
2. 系统架构设计
项目遵循 Bitcask 模型,设计了基于 Write-Ahead Log (WAL) 顺序写与内存哈希索引相结合的架构:
  • 数据落盘:所有写操作(Put/Delete)格式化为 28-Byte Binary Header 后顺序追加写入活动日志,保障写入极低时延。
  • 内存索引:内存中维护 Keydir 哈希表,存储每个 Key 对应的数据文件 ID、数据长度及文件偏移量。
  • 双层校验:数据写时计算 FNV-1a 校验和,读取时重新比对,全面防范物理介质损坏造成的数据破坏。
3. 技术特色与核心创新点
  • 原子批处理事务 (Write Batch):设计了基于事物标记与提交确认机制的写事务。恢复时只对含有 __tx_commit__ 标记的批处理进行索引更新,保障崩溃一致性。
  • 生存时间 (TTL) 定时失效:将失效时间写入二进制首部,实现 $O(1)$ 的内存延迟清理策略,并在 compaction 时物理回收。
  • Hint File 加速冷启动:日志合并时生成只包含 Key 元数据的 Hint 索引文件。冷启动时直接扫描 Hint 文件重建索引,大幅缩短数据库启动时延。
4. 实施阶段与开发里程碑
项目遵循严谨、有迹可循的软件开发模式,共划分为 12 个 Commit:
  • Commit 1: 初始化项目目录与构建配置文件。
  • Commit 2-3: 定义全局错误类型;实现数据序列化基础工具。
  • Commit 4-5: 完成二进制 Record 结构体与 Keydir 内存索引。
  • Commit 6-7: 实现日志追加器、解析器以及 Core DB 主引擎。
  • Commit 8-9: 扩展 TTL 功能与原子事务 WriteBatch 支持。
  • Commit 10: 实现日志合并压缩 (Compaction) 与 Hint 文件。
  • Commit 11-12: 完成命令行 CLI 封装;添加完整集成测试。
5. 团队承诺与合规性声明
本团队(韦安良)在此慎重承诺:申报项目 moonkv 的全部核心代码为团队自主设计并逐行编写,绝无任何整体生成、套用模板等恶性 AI 生成的痕迹。项目结构良好、单元测试覆盖率充足(17/17 测试用例全部通过),完全符合 CCF 开源创新大赛组委会对代码原创性、工程规范性和项目提交规范的各项硬性要求。
申报时间:2026年7月4日 申报人签名:___________________