模型概述
5个模块的简单简介
NYADB包括5个模块, 他们分别是:
- Data Manager(DM)
- Transaction Manager(TM)
- Version Manager(VM)
- Index Manager(IM)
- Table Manager(TBM)
下面先分别简单描述他们各自的作用.
DM为最底层的模块, 直接管理数据库文件(DB, database)和日志文件(LF, log file). DM的主要职责大致有下面这些: 1) 对DB进行Cache, 提高NYADB访问DB的速率; 2) 管理LF, 保证NYADB的可恢复性; 3) 分页管理DB, 并提供适当的抽象给上层模块, 使上层模块不用关心DB的读写细节.
TM是一个相对简单的模块, 其作用是管理事务状态, 并提供接口给其他模块供它们查询. 如查询某个事务是否已经结束, 某个事务是被commit还是被abort.
VM实现了MVCC(多版本并发控制), 以完全消除事务操作中的读写的阻塞. 同时, VM中还保证了事务的可串行性, 以及实现多种隔离度.
IM维护了NYADB的索引结构, 目前的索引只有B+树.
TBM用于维护表的结构, 会解析语句, 并根据语句内容, 对表做适当的操作.
模块间的相互依赖关系
这几个模块之间的相互依赖关系如下:
+-----+ +----+ | TBM | | IM | +-----+ +----+ | | | | | | v | +----+ | | VM |------+ +----+ | | | v v +----+ +----+ | TM |<---| DM | +----+ +----+
下面分别将从下而上的, 分别描述各个模块, 他们是怎么独立工作, 以及是怎样相互协作组合成NYADB的.