模型概述

5个模块的简单简介

NYADB包括5个模块, 他们分别是:

  1. Data Manager(DM)
  2. Transaction Manager(TM)
  3. Version Manager(VM)
  4. Index Manager(IM)
  5. 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的.