
#22 overallClassic
15-445/645 Intro to Database Systems
Carnegie Mellon University
17 recommenders · 20 threads · recommended in 9 years, 2017–2025 · score 26.6
CMU's introductory database systems course covering how DBMSs are designed and built: data models, storage, indexing, concurrency control, recovery, and query processing. Lectures are published free on YouTube, and homework is available on the course site.
Commenters repeatedly call it top-notch and praise Andy Pavlo's clear, free video lectures on how databases work internally.
Databases & Data Engineeringintermediatefreevideo lectures#database internals#sql#indexing#concurrency control#pavlo
Recommendations by year
20062026
Yeah, if you're going to work with databases regularly I think it's worth learning how b-trees work. It'll make a lot of things much more intuitive.
If you wanna get a very complete grounding in how the big rdbmses work, Andy Pavlo's lectures and class notes are fantastic.
Can we also start a general "Andy Pavlo" appreciation comment chain?
Please comment below if Andy has in any way positively improved your life or helped you further your education/career.
I can start:
- Early in 2022, I decided I wanted to learn how databases like Postgres work and build one from scratch. If it wasn't for the CMU lectures available to the public on YouTube, I don't think I would have been able to give myself anywhere near a decent education.
- This year, Andy even made the homework-grading platform available to the public, so you could submit solutions to the database coursework and get graded as if you were a student attending CMU.
- Not only does Andy take the time to record, edit, and upload his lectures to the public, but he hosts a yearly seminar series where he interviews speakers from all over the database industry (https://db.cs.cmu.edu/seminar2022)
- Andy does all he does (Professorship) on top of running OtterTune, I have no idea how he functions. He truly is the realest of all gangsters, and a secret member of the Wu-Tang Clan. Andy makes databases fun.
The first two CMU courses are goated. I recommend reading at least some of the papers Pavlo says to, but if I'd have to recommend a particular one it'd be "Architecture of a Database System": https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf
For anyone interested in how a database works underneath the hood, I could not recommend a better MOOC than Andy Pavlo's database courses. His intro to database course is so freaking good.
while not specific to postgres, for general DB internals the CMU courses are top-notch. intro: https://15445.courses.cs.cmu.edu/fall2019/ advanced: https://15721.courses.cs.cmu.edu/spring2020/
I'd start with CMU's "Intro to Database Systems", their lectures are on youtube. Highly recommended both for the depth and how Andy Pavlo presents the topic. https://www.youtube.com/watch?v=oeYBdghaIjc&list=PLSE8ODhjZX...
Knowing SQL and how relational databases actually work is one of the best superpowers a backend developer can have. If you want to go deeper than your database manual, the best place is Andy Pavlo's db course, freely available at youtube. I don't write databases, but after watching it I understand trade-offs and performance considerations much better, and feel much more comfortable reading Postgresql manual.
You can take CMU's 15-445 which is available online with lectures uploaded to youtube: https://15445.courses.cs.cmu.edu/fall2022/.
Check out Andy Pavlo’s courses - videos are freely available. Then see what books you will need as the topic is very broad.
Obligatory recommendation for the CMU Databases Systems lecture series by Andy Pavlo. https://www.youtube.com/watch?v=oeYBdghaIjc&list=PLSE8ODhjZX...
Here's the lecture on tree indexes: https://www.youtube.com/watch?v=JHZFc4hMGhk
The author is a professor at CMU who specializes in databases: https://www.cs.cmu.edu/~pavlo/
Not completely related, but his lectures on databases on YouTube are really good. Much better than the DB class I had at college.
Plugging in Andy Pavlo's Database lectures @ CMU which are completely free on Youtube. Great guy and great lectures.
Not at all. I'd highly recommend CMU's 15-445/645 Intro to Database Systems course (sponsored by Snowflake lol) because they put all their lectures online on YouTube [1]! Here's what's involved in making fast databases from the syllabus [2]:
This course is on the design and implementation of database management systems. Topics include data models (relational, document, key/value), storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexing (order preserving trees, hash tables), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed). Case studies on open-source and commercial database systems are used to illustrate these techniques and trade-offs. The course is appropriate for students that are prepared to flex their strong systems programming skills.
[1] https://www.youtube.com/playlist?list=PLSE8ODhjZXjbohkNBWQs_...
[2] https://15445.courses.cs.cmu.edu/fall2020/syllabus.html
Please consider going through Andy Pavlo's superb video courses on building databases.
http://www.cs.cmu.edu/~pavlo/
He discusses many common pitfalls and architectural decisions that impact database quality and performance, including map and why it's bad.
I recommend watching Andy Pavlo's courses:
https://15445.courses.cs.cmu.edu/fall2019/
https://15721.courses.cs.cmu.edu/spring2020/
Andy Pavlo's video lectures are very good. Watched both introductory and advanced lectures a year or so ago. Recommended. Previous videos may be found from the channel.
CMU Andy Pavlo’s lectures on YouTube are great and also shows state of the art. Start there.
Andy Pavlo from the CMU Database Group has excellent courses on Database design on YouTube. Large time commitment, but he goes into great detail about internals and design tradeoffs, and is very knowledgeable about which database systems use which approaches. The intro course is about traditional databases, while the advanced course is about modern in-memory databases.
I truly recommend CMU's Andy Pavlov's video lectures on the topic (and also more advanced stuff)
https://www.youtube.com/playlist?list=PLSE8ODhjZXjYutVzTeAds...
I would suggest the database courses from CMU. Really good stuff and free online.
Maybe off-topic but,
If you're not familiar with the CMU DB Group you might want to check out their eccentric teaching style [1].
I absolutely love their gangsta intros like [2] and pre-lecture dj sets like [3].
I also remember a video where he was lecturing with someone sleeping on the floor in the background for some reason. I can't find that video right now.
Not too sure about the context or Andy's biography, I'll research that later, I'm even more curious now.
[1] youtube.com/results?search_query=cmu+database
[2] youtu.be/dSxV5Sob5V8
[3] youtu.be/7NPIENPr-zk?t=85
OMSCS student here. You are absolutely right that the DB course is one of the weaker offerings. There is a newer Database System Implementation course, which is based on Andy Pavlo's excellent undergrad course (which is also available online), but only the first half or so of that course is covered, which is disappointing for a graduate course. In terms of the larger program, however, the two database courses are outliers and most courses are of much higher quality and definitely not undergrad level.
Keep us posted about the lectures. I don't find a personal website of you. Then I would have bookmarked it.
There are so many awesome lectures from other CMU courses like Andy Pavlo's Database, Keenan Crane's Graphics courses.
I so hope CMU records their intro courses and put them out in public.
Not exactly the same, but check out the CMU database course lectures on YouTube.
The author defines systems research as:
This seems false. DBMS and OS research is pretty interesting today. Look into Andy Pavlo or Onur Mutlu's courses and students to get pointers.
So this comes out of Andy Pavlo's group. He teaches an undergrad and graduate level database class each year, and makes nearly all of his course materials available (there's some guest lectures that don't want to be public sadly): http://www.cs.cmu.edu/~pavlo/
I'd definitely go through the slide decks on concurrency control in both of these classes. They're an amazing resource for anyone interested in database internals. There's a ton of tradeoffs, and a lot of prior research into them. Andy's slide decks are something of a road map to the different choices.
What you describe is roughly snapshot isolation, which mostly works, but is vulnerable to write skew.
Check out the CMU database group for all the other content and the multiple courses: https://db.cs.cmu.edu/
Here's their Youtube channel: https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA/fea...
Just by doing advanced exercises. For example take a look at the SQL homework for one of the CMU courses on databases:
https://15445.courses.cs.cmu.edu/fall2018/homework1/
While doing the exercises you'll be doing some research and looking at question in stack overflow.
For High Throughput compute, and cache correctness. Here are the primers I can give. None of these are required. Strong langauge, cs, interpersonal skills, team inter-interoperability, and commitment to quality (via unit and integration testing, and skill working with liners) can get you a lot further.
The resources I'm linking are supplementary to the above, and you'll likely encounter them in the wild. But they'll help you build a base of knowledge, and give you terminology to search for, and work with.
- What Every Programmer should know about memory: https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
- Cache Obviousness: https://www.youtube.com/watch?v=bY8f4DSkQ6M (the suggestions, and terminology are important)
- Parallelism: (This is a good primer, there are a lot of complementary posts linked on the site) https://preshing.com/20120612/an-introduction-to-lock-free-p... https://preshing.com/20120913/acquire-and-release-semantics/
- If you plan on working with linux these is an excellent reference: http://man7.org/linux/man-pages/dir_section_2.html remember there is no magic in Linux, everything eventually has to go through a system call. So if you learn the systemcalls, you can can learn how things work :)
- Fog's optimization resources are awesome: https://www.agner.org/optimize/
- MIT courseware: https://www.youtube.com/watch?v=ytpJdnlu9ug&list=PLUl4u3cNGP... https://www.youtube.com/watch?v=HtSuA80QTyo&list=PLUl4u3cNGP...
- This cheat sheet is worth committing to memory: http://www.bigocheatsheet.com/ the reference links are also great for building up knowledge
- I highly recommend CMU DB open course ware: (intro) https://www.youtube.com/watch?v=vyVGm_2iFwU&list=PLSE8ODhjZX... (advanced) https://www.youtube.com/watch?v=poEfLYH9W2M&list=PLSE8ODhjZX...
This should give you a good primer on Concurrency, and DB's. For networking likely a basic TLA+ certification class will be 99% review, but for the things it isn't will offer great insight.