Skip to main content

CMU15-445/645

Course Overview

這個系列是我對 CMU 的 15-445/645 Intro to Database Systems 的筆記,版本主要是 2024 Fall。

非常感謝 Andy Pavlo 教授願意開源課程影片、作業、以及 GradeScope,讓所有學生都能享受到幾乎跟本校學生一樣的學習體驗。

這門課主要會著墨於 DB 的底層實作,像是資料在 OS 中的儲存方式、各種 Index 的底層資料結構、SQL Query 是如何被執行的,以及經典的 Concurrency Control 與 Recovery 等等。 對於想從底層了解 DB 的實作的人來說,這門課是非常好的選擇。 相對的,如果你是想學習怎麼下 SQL 或是如何設計 DB Schema 的話,這門課的著墨就相對較少。

這門課有五個需要使用 C++ 完成的作業 (會依據年份調整),分別是 :

  1. HyperLogLog
  2. Buffer Pool Manager
  3. B+ Tree Index
  4. SQL Query Execution
  5. Concurrency Control

所有的 lab 都有提供完整的測試案例,除了可以在本地測試外,這門課也提供了外校學生可以使用的 GradeScope 平台來提交作業並進行自動測試。

After Course

2025/09/06 終於寫完啦~

我是在 2024 年暑假決定開始修讀這門課程的 (當時我看的版本還是 2023 Fall),沒想到一路完成全部作業竟然花了一整年,看來我的累累病還是沒什麼改善 XD。

這是我第一次跟著 OCW 的課程學習,最大的體會是自學時必須給自己設定一個明確的時間表。 從 GradeScope 的資料來看,作業 1 大約有 300 多人完成,但到了作業 4 只剩下 30 多人,可見在沒有期限壓力的情況下,中途放棄的人比例非常高。 因此,如果有人想要學這門課,我會建議一定要先規劃好自己的進度。

就成果來說,這門課讓我對 C++ 的語法更加熟悉,也幫助我理解了資料庫底層的實作細節,比較可惜的是,我沒有深入挑戰每個作業中的性能優化部分,感覺那應該會很有意思。

不過整體來說還是一次非常有趣的學習體驗,希望未來有人學習這門課時可以透過我的筆記更順利地完成作業~

References