
MIT6.830
文章平均质量分 96
迷雾总会解
我来,我见,我征服!
展开
-
MIT6.830-lab6-Rollback and Recovery(数据库的日志回滚和恢复)
MIT6.830的lab6中,我们将实现日志的回滚和崩溃恢复。rollback:当一个事务显式执行失败后,就要进行回滚,我们要做的就是将数据库回滚到事务开始前的状态;Recovery:当数据库崩溃后,再一次重启就需要根据log日志进行数据恢复。在进行我们的任务之前,我们需要了解一些基本概念。原创 2022-10-20 17:01:38 · 1547 阅读 · 0 评论 -
MIT6.830-lab5-B+ Tree Index(数据库的索引B+树的搜索、插入、删除窃取、删除合并)
MIT6.830的lab5中,我们将实现 B+ 树索引以进行高效查找和范围扫描。项目已经提供实现树结构所需的所有低级代码。我们所要做的是实现搜索、拆分页面、在页面之间重新分配元组以及合并页面。实现B+树的搜索,根据给定的key查找适当的页节点;实现内部节点、页节点的拆分,当页面中key的数量大于n-1时,对页面进行拆分;实现节点的重新分配,当删除key后如果页面中key的数量小于m/2 时,从其兄弟节点“窃取”一个key;原创 2022-10-19 20:11:32 · 1201 阅读 · 0 评论 -
MIT6.830-lab4-SimpleDB Transactions(数据库的事务LockManager、事务操作、死锁处理)
MIT6.830的lab4中,我们主要需要实现事务处理和并发相关的功能,我们需要为SimpleDB设计一个二阶段锁的管理器。事务是一组以原子方式执行的数据库操作(例如,插入、删除和读取);也就是说,要么所有的动作都完成了,要么一个动作都没有完成。原子性:通过两段锁协议和BufferPool的管理实现simpleDB的原子性;一致性:通过原子性实现事务的一致性,simpleDB中没有解决其他一致性问题(例如,键约束);隔离性:严格的两段锁提供隔离;持久性:事务提交时将脏页强制写进磁盘。原创 2022-10-19 19:56:38 · 1110 阅读 · 0 评论 -
MIT6.830-lab3-Query Optimization(数据库的查询优化IntHistogram、TableStats、join代价估计、最佳join order获取)
MIT6.830的lab3中,我们主要需要实现一个基于cost的查询优化模块,这个模块的主要作用是在SimpleDB处理Join等SQL语句的时候可以对输入的SQL查询进行优化,并且我们这里实现的是最简单的基于cost的查询优化模块,这里的cost会根据SimpleDB中数据表的统计信息计算出来,而这种统计信息就来自于之前实现的存储模块。原创 2022-10-19 19:51:04 · 942 阅读 · 0 评论 -
MIT6.830-lab2-SimpleDB Operators(数据库的操作算子Filter、Join、Aggregates、Insertion and Deletion,以及页LRU淘汰策略)
在6.830的Project2中,我们要实现常见的SQL语句所需要的数据库操作,在Project1中,我们已经实现了一种顺序扫描的操作SeqScan,它的实现方式是利用SimpleDB的Heap File类提供的迭代器来遍历整个数据表文件中的所有元组信息。Filter:按条件筛选符合的元组;Join:将两个表中符合条件的元组进行join操作;Aggregate:按照一定的目标对表中的元组进行聚合运算;Insert和Delete:插入、删除元组。原创 2022-10-19 19:28:59 · 1322 阅读 · 0 评论 -
MIT6.830-lab1-SimpleDB(数据库的基本存储Tuple、TupleDesc、HeapPage、HeapFile、SeqScan、BufferPool)
Tuple,TupleDesc,HeapPage,HeapFile,SeqScan,BufferPool等。Tuple和TupleDesc是数据库表的最基本元素了。Tuple就是一个若干个Field的数组,TupleDesc则是一个表的meta-data,包括每列的field name和type。BufferPool是用来做缓存的,getPage会优先从这里拿,如果没有,才会调用File的readPage去从文件中读取对应page,disk中读入的page会缓存在其中。原创 2022-10-19 17:26:42 · 2416 阅读 · 0 评论