MIT6.830 数据库
文章平均质量分 87
fighting_yifeng
梦想并不遥远,只要出发,终将到达
展开
-
MIT6.830 Lab 6: Rollback and Recovery
6.830 Lab 6: Rollback and Recoverylab6要实现的是simpledb的日志系统,以支持回滚和崩溃恢复;steal/no-steal: 是否允许一个uncommitted的事务将修改更新到磁盘,如果是steal策略,那么此时磁盘上就可能包含uncommitted的数据,因此系统需要记录undo log,以防事务abort时进行回滚(roll-back)。如果是no steal策略,就表示磁盘上不会存在uncommitted数据,因此无需回滚操作,也就无需记录undo原创 2022-02-07 21:01:18 · 225 阅读 · 0 评论 -
MIT6.830 Lab 5: B+ Tree Index
6.830 Lab 5: B+ Tree Indexlab5主要是实现B+树索引,主要有查询、插入、删除等功能,查询主要根据B+树的特性去递归查找即可,插入要考虑节点的分裂(节点tuples满的时候),删除要考虑节点内元素的重新分配(当一个页面比较空,相邻页面比较满的时候),兄弟节点的合并(当相邻两个页面的元素都比较空的时候)B+树的页面节点类型主要有四种:1.根节点页面:一个B+树的根节点,在SimpleDB中实现为BTreeRootPtrPage.java;2.内部节点页面:除去根节点和叶子节原创 2022-02-07 21:00:25 · 520 阅读 · 0 评论 -
MIT6.830 lab4 SimpleDB Transactions
MIT6.830 lab4 SimpleDB Transactionslab4要做的是让SimpleDB支持事务,基于严格两阶段封锁协议去实现原子性和隔离性的,所以开始前也需要了解两阶段封锁协议是如何实现事务的。两阶段封锁协议首先是封锁协议:我们将要求在系统中的每一个事务遵从封锁协议,封锁协议的一组规则规定事务何时可以对数据项们进行加锁、解锁。对于两阶段封锁协议:两阶段封锁协议要求每个事务分两个节点提出加锁和解锁申请:增长阶段:事务可以获得锁,但不能释放锁;缩减阶段:事务可以释放锁,但不能获得原创 2022-02-07 20:58:33 · 254 阅读 · 0 评论 -
MIT6.830 Lab3 Query Optimization
MIT6.830 Lab3 Query Optimizationlab3实现的是基于代价的查询优化器优化图片链接simple-db-hw-2021/controlflow.png at master · MIT-DB-Class/simple-db-hw-2021 · GitHub简单总结一下查询优化器的构成:1.Parser.Java在初始化时会收集并构造所有表格的统计信息,并存到statsMap中。当有查询请求发送到Parser中时,会调用parseQuery方法去处理2.parseQue原创 2022-02-07 20:57:46 · 340 阅读 · 0 评论 -
MIT6.830 lab2 SimpleDB Operators
MIT6.830 lab2 SimpleDB OperatorsLab2的主要内容是为 SimpleDB 编写一组运算符来实现表修改 (e.g., insert and delete records), selections, joins, and aggregates.Exercise 1 Filter and JoinFilter: This operator only returns tuples that satisfy a Predicate that is specified a原创 2022-02-07 20:56:35 · 623 阅读 · 0 评论 -
MIT6.830 lab1 SimpleDb
MIT6.830 lab1 SimpleDb整个实验一共有6个lab,通过每一个lab的代码去实现一个简单的数据库,主要有:数据库的组织架构(字段、元组、模式、buffer pool等)、CRUD的实现、查询优化、事务与并发控制、崩溃与故障恢复。SimpleDB consists of:Classes that represent fields, tuples, and tuple schemas;Classes that apply predicates and conditions to t原创 2022-02-07 20:55:22 · 1194 阅读 · 0 评论