
#35 overall
15-721 Advanced Database Systems
Carnegie Mellon University
12 recommenders · 15 threads · recommended in 7 years, 2017–2023 · score 15.0
An advanced graduate course on modern database system internals, covering topics such as concurrency control, query execution, storage, and in-memory and cloud-era database architectures. Lectures by Andy Pavlo are published on YouTube with readings and assignments.
Commenters call it a top-notch, very detailed guide to database internals and design tradeoffs, and praise Andy Pavlo's clear teaching style.
Databases & Data Engineeringadvancedfreevideo lectures#database internals#concurrency control#query execution#in-memory databases#pavlo
Recommendations by year
20062026
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
I think the author didn't cover a lot of fundamental research behind NoSQL. If you are reading this comment, and want to dive into SQL/NoSQL DB fundamentals, I highly recommend checking CMU DB (Andy Pavlo) lectures [1] [2].
[1]: https://db.cs.cmu.edu/seminar2020/
[2]: https://www.youtube.com/playlist?list=PLSE8ODhjZXjagqlf1NxuB...
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/
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.
Not a lot of content yet, but building databases (even toys) is an incredibly interesting exercise which I encourage many more people to try out, so +1!
For anyone else who is interested in learning how to build a database, can I thoroughly recommend following along with Andy Pavlo's Advanced Database Systems course from CMU[1]. Every lecture is accompanied by reading lists, notes, and assignments. Whats more, I find Andy's style to be very easy to parse even on complex topics.
Even if you think you know a fair bit about this domain, you will likely learn a lot!
[1]https://www.youtube.com/playlist?list=PLSE8ODhjZXjYplQRUlrgQ...
The „advanced” part of Andy Pavlo’s great great database course discusses classic database design compromises and the tradeoffs, among other things.
See http://www.cs.cmu.edu/~pavlo/
There's a ton of room for improvement in the architecture of relational databases. This isn't a dig against Postgres, or ignoring how difficult it will be to get a new system to the same level of maturity. But databases designed natively for cloud/clustering, SSDs, (pmem soon perhaps), etc are quite a bit different. There's enormous simplifications and performance gains possible.
There's been a lot of exciting work in this area over the last decade or so. Andy Pavlo's classes are great surveys of the latest work: https://15721.courses.cs.cmu.edu/spring2020/
CosmosDB is an example of a relational (multi paradigm properly) database with a quite different architecture vs the classic design, that's moved into production status quite rapidly.
FaunaDB and CockroachDB are moving with solid momentum too.
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.
This is somewhat confused/mistaken.
There are several successful databases that use in page MVCC storage. I'd suggest going through Andy Pavlo's slide decks for a summary: https://15721.courses.cs.cmu.edu/spring2020/, in particular slide 33 from lecture 3 has a summary. Also there are papers wheree his group directly benchmarks the various design alternatives within their test database, Peloton.
The TL;DR, is there's a lot of details to how this stuff works, many tradeoffs involved, and it's by no means whatsoever clear that Postgres has somehow made the wrong choice.
I recommend watching Andy Pavlo's courses:
https://15445.courses.cs.cmu.edu/fall2019/
https://15721.courses.cs.cmu.edu/spring2020/
The CMU Database Group and Andy Pavlo are great. They have some great courses on their YouTube channel [1], anything you might ever want to know about databases. Such as their series on hardware accelerated databases [2] (Kinetica, MapD, SQream DB, BlazingDB, Brytlyt, Swarm64)
[1] https://www.youtube.com/channel/UCHnBsf2rH-K7pn09rb3qvkA
[2] https://www.youtube.com/playlist?list=PLSE8ODhjZXjbjOyrcqgE6...
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.
Anyone who's interested in this (and related) DBMS topic would be well served to check out the videos of Andy Pavlo's "Advanced Database Systems" course at CMU: https://www.youtube.com/watch?v=poEfLYH9W2M&list=PLSE8ODhjZX...
This book is more about different types of tradeoffs you can make in terms of your system design. I'd recommend looking at grad databases courses instead, e.g:
- http://db.cs.cmu.edu/courses/ - http://daslab.seas.harvard.edu/classes/cs165/ - http://daslab.seas.harvard.edu/classes/cs265/
Carnagie Mellon has some open too http://www.cs.cmu.edu/~213/schedule.html (Lectures) https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.a...
That book you can get the global 3rd version from Abe Books for $20something since you aren't in Can/USA
There's other courses in there, like this awesome math/compsci course https://scs.hosted.panopto.com/Panopto/Pages/Sessions/List.a... (click on the RSS(Subscribe) logo in the upper right, can download them). They also have some fully open courses like this db course with lectures on youtube http://15721.courses.cs.cmu.edu/spring2016/
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.