todo:
- 完善单元测试 [doing]
- 完善错误处理 [done]
- block的crc校验和lru cache策略,是上条的基础 [done] [update 重构了cache接口,便于recover流程处理]
- 记录统计信息和日志 [doing]
- 提供迭代器 [delete]
- 重构page磁盘管理 (目前的这种位图形式还是不太行,消耗空间太大)[done]
- 处理字节序问题
- block的dirty机制,减少不必要的刷盘操作 [done]
- cache希望block的析构函数中进行资源释放(调用manager进行刷盘),但是需要在析构函数中调用虚函数,因此需要修改cache,提供destructor前注册机制 [done]
- cache目前的实现有bug,Block生命周期管理不明确,需要修改接口 [done]
- 基于WAL的崩溃恢复机制 [done]
- double write机制 [done]
- b+树并发控制 [无期限延迟]
- 日志缓冲区、checkpoint [done]
- lsn机制,减少不必要的redo-undo的执行数量 [todo]
- 恢复机制相关的代码重构和优化 [done]
- 增加解析wal日志的工具 [todo]
- 文件锁、提供只读访问模式和互斥写模式 [doing]
- 支持MassTree的变长key机制 [todo]
- 支持自定义key比较函数的机制 [done]
- 支持linux direct-IO机制 [done]
- 支持redo日志缓冲 [done]
- 支持n:1的double write buffer,使得多个block均摊fsync操作的开销 [todo]