项目完全使用原生的 MoonBit 语言编写,深度契合 Bitcask 引擎的经典设计。支持高吞吐量的顺序写和内存索引机制。
// 紧凑的文件布局设计,包含校验和和 TTL 支持
checksum (4B) | timestamp (8B) | expires_at (8B) | key_sz (4B) | val_sz (4B) | key | value
支持多操作单批次原子提交,自动写入提交标记,防崩溃后遗失。
支持键级生存时间。内存中做 $O(1)$ 延迟清理,数据段压缩时物理清理。
合并落盘时同步生成只包含元数据的 Hint 索引文件,加速索引构建。
每次写入或启动加载都会对每条日志的 FNV-1a 哈希校验和进行完整验证。
// 开启数据库并执行写事务与 TTL 操作 let db = @moonkv.DB::open("data_dir", 1024 * 1024) // 写入带有 TTL(逻辑时钟)的键值对 db.put_ttl("key", @moonkv.string_to_bytes("val"), 5L) // 原子事务提交 let batch = db.new_write_batch() batch.put("a", @moonkv.string_to_bytes("1")) batch.delete("b") batch.commit()