跳转至

Chapter 0 Pre-requisites

课程资源

课程网站

课程视频

课本PDF

实验教程

Something you should know
  • Course Policies + Schedule: Course Web Page
  • Discussion + Announcements: Piazza
  • Homeworks + Projects: Gradescope
  • Final Grades: Canvas

EDUCATIONAL OBJECTIVES

This is an upper-level course on the internals of database management systems. This course has a heavy emphasis on programming projects. There are also readings assigned for each class, homeworks, and two exams. Upon successful completion of this course, the student should be able to:

  • Use relational algebra to express database queries.
  • Use SQL to interact with database management systems.
  • Design appropriate database tables, using functional dependencies and normal forms.
  • Implement a disk-oriented database storage manager with table heaps and indexes.
  • Understand, compare, and implement the fundamental concurrency control algorithms.
  • Implement database recovery algorithms and verify their correctness.
  • Identify trade-offs among database systems techniques and contrast distributed/parallel alternatives for both on-line transaction processing and on-line analytical workloads.
  • Interpret and comparatively criticize database system architectures.

实验亮点

在 15-445 中你需要在四个 Project 的推进中,实现一个面向磁盘的传统关系型数据库 Bustub 中的部分关键组件。

包括 Buffer Pool Manager (内存管理), B Plus Tree (存储引擎), Query Executors & Query Optimizer (算子们 & 优化器), Concurrency Control (并发控制),分别对应 Project #1 到 Project #4

在实现的过程中可以通过 shell.cpp 编译出 bustub-shell 来实时地观测自己实现部件的正确与否,正反馈非常足。

此外 bustub 作为一个 C++ 编写的中小型项目涵盖了程序构建、代码规范、单元测试等众多要求,可以作为一个优秀的开源项目学习。

MySQL 环境配置

在macOS上配置MySQL

Configuration

Bash
1
brew install mysql
Bash
1
2
brew services start mysql
mysql_secure_installation

Login

Bash
1
mysql -u root -p

And you can access your own MySQL account to test, for example:

Create

Bash
1
CREATE DATABASE your_database_name;
Bash
1
USE your_database_name;
Bash
1
2
3
4
5
CREATE TABLE your_table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 VARCHAR(255),
    column2 INT
);

Set

Bash
1
INSERT INTO your_table_name (column1, column2) VALUES ('bxhu', 112);

Check

Bash
1
SELECT * FROM your_table_name;