这次的 Project 要求我们实现几个简单的 Executor ,写完这个 Project 我们就可以在bustub-shell中检验自己的成果了。 官方文档15445.courses.cs.cmu.edu/spring2023/project3/ 这个项目要求阅读不少的代码,所以本文还会穿插介绍一些Clion的快捷键。 2023.08.25将与项目无关的知识单独整理到最后 2023.09.08完成所有优...
Filter Values 所有的算子实现在src/execution/目录下,而相应定义在src/include/executor/execution目录下(按着Ctrl再左击类名,会跳转到类的定义,一般编辑器都有这个功能),不妨读一读以上三个算子的实现吧。 以下是我对问题的解答,你应该一边对照着代码,一边往下阅读。不然会一头雾水的: ) 算子(executor)如何获取...
可以看到这个方法会先将执行计划转换为对应的执行器executor,使用Init()初始化后循环调用executor的Next()方法获取查询结果: 复制classExecutionEngine{public:ExecutionEngine(BufferPoolManager *bpm, TransactionManager *txn_mgr, Catalog *catalog):bpm_(bpm),txn_mgr_(txn_mgr),catalog_(catalog) {}DISALLOW_COPY_...
经过前面两个实验的铺垫,终于到了给数据库系统添加执行查询计划功能的时候了。给定一条 SQL 语句,我们可以将其中的操作符组织为一棵树,树中的每一个父节点都能从子节点获取 tuple 并处理成操作符想要的样子,下图的根节点ππ会输出最终的查询结果。 对于这样一棵树,我们获取查询结果的方式有许多种,包括:迭代模型...
查询引擎:Query Execution 并发控制:Concurrency Control 五个实验组成了一个用于教学的简单的关系型数据库 —— BusTub。实验方式基本都是实现一些规定的接口,跑通写好的测试用例。需要说明的是,代码中给的测试用例十分简单,基本只测试了一些主干路径,因此跑过了测试用例并不一定说明你代码写的没问题,这就要求在实现...
CMU 15445 学习之Storage Manager cpu 寄存器和高速缓存(L1、L2、L3),以及内存是常见的易失性存储,容量小速度快,但是掉电之后无法恢复,不能持久化保存数据。 存储介质 一个数据库系统大致由以下几个不同的部分组成: query plan(执行计划) operator execution(执行器)...
CMU 15445 学习笔记—3 Storage Manager 存储介质 一个数据库系统大致由以下几个不同的部分组成: query plan(执行计划) operator execution(执行器) access method(访问方法) buffer pool(缓冲池) disk manager(磁盘管理) 以及其他的的一些组成部分,例如并发控制、分布式等。 这个课程系列将会自底向上逐一介绍。
CMU 15445 学习之Storage Manager 存储介质 一个数据库系统大致由以下几个不同的部分组成: query plan(执行计划)operator execution(执行器)access method(访问方法)buffer pool(缓冲池)disk manager(磁盘管理) 以及其他的的一些组成部分,例如并发控制、分布式等。这个课程系列将会自底向上逐一介绍。
[CMU15445] 06 - Buffer Pools 传统数据库的数据组织通常由磁盘和内存两部分构成,所有的数据都存在磁盘上,当用户使用特定的SQL查询数据时,Execution Engine会将需要哪些页告诉Buffer Pool,然后Buffer Pool会将这些页读进来进行操作, 数据库使用一些机制来管理内存中的数据 ...
https://15445.courses.cs.cmu.edu/fall2024/ 本课程涉及数据库管理系统的设计和实现。主题包括数据模型(关系型、文档型、键值型)、存储模型(n元组、分解)、查询语言(SQL、存储过程)、存储架构(堆、日志结构)、索引(保序树、哈希表)、事务处理(ACID、并发控制)、恢复(日志记录、检查点)、查询处理(连接、排序、...