Files
BH-TicketSystem/design.md
2024-04-15 11:22:09 +00:00

1.5 KiB
Raw Blame History

规划的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