A Bitcask key-value storage engine implemented in MoonBit
let db = @bitcask.open("my-data") // 默认 max_file_size = 256 MiB,写入不强制 fsync
db.put(b"hello", b"world")
let value = db.get(b"hello") // Some(b"world")
db.delete(b"hello")
db.merge() // 回收空间
db.close()// 64 MiB 轮转,每次写入 fdatasync(写入即持久)
let db = @bitcask.open("my-data", max_file_size=67108864L, sync=@fs.SyncMode.Data)moon run cmd/main+-------+------+---------+-----------+-----------+-----+-------+
| crc32 | ts | key_len | value_len | tombstone | key | value |
| 4B | 8B | 4B | 4B | 1B | 变长 | 变长 |
+-------+------+---------+-----------+-----------+-----+-------+moon check --target native # 类型检查
moon test --target native # 运行测试Install
Download zipA Bitcask key-value storage engine implemented in MoonBit