1.5 KiB
1.5 KiB
规划的Bonus实现方式
- 缓存:LRU
- 空间回收
- 快照:不内置于数据库系统,而是直接针对整个数据文件夹打快照(类似于git,在火车票系统后端处于非活动状态时操作,比对工作文件夹和版本库中的最后一次commit,然后打一个新的commit进去),额外消耗空间为压缩后的 当前文件实际大小+变化量,使用zstd算法压缩。交互方式:
./core-cli snapshot [options]
- 并发:内置于数据库系统,基于
std::shared_mutex
的简单并发。(但火车票系统会直接在整个业务层面上读写锁,因此不会直接使用数据库系统的并发安全)。 - 容错:不内置于数据库系统,由火车票系统针对实际业务逻辑记录日志。在文件系统层级上修复完损伤后,运行
./core-cli fsck
检查是否有可能有损坏,借助快照工具修复可能的损伤。 - 前端:一个使用正经框架写的简洁美观的UI,无响应式设计。
因为详细的数据库相关知识没学,所以正经并发和更细粒度的容错就不打算自己瞎搓了。
内核设计
- STLite:提供STL中被ban掉的那些功能
- bpt:原始B+树以及相关简单封装,和其他一些涉及具体磁盘存储的东西
- 一个火车票系统执行引擎
- 一个直接的命令行交互系统,用于OJ测试/单会话模式/快照管理/数据错误检查
- C Extensions封装,用于对接服务端
UI设计
- 语言:Python
- 与内核的交互:C Extensions
- Web框架:FastAPI + socket.IO + (React?) + BootStrap