When I learned about databases it was all about ORMs and SQL. When I got to the real world those still mattered, but knowing databases intimately became more important. I wish these resources had been brought to my attention earlier in my career to help me build the foundation I needed instead of hopeless and constant stackoverflow googling.
Databases have been and will be an important topic in computer science and more importantly the real world. They aren't going anywhere, they're fundamental to the survival of most businesses, and they're crucial to understanding how most system works.
History & Content - Like almost everything in engineering databases where not built in a vacuum, and usually built to solve or improve upon a specific set of issues. Knowing the history and context around anything your learning really helps frame your understanding of it. This wiki link is supplementary.
Stanford database course - This is what I believe to be the quintessential undergrad database course. This course is all about how to use databases. There are details about how things work, but it is more breadth than depth. One thing that kinda sucks is that the resources for the course don't exist anymore. When I took the course it was available on Stanford lagunita, but it doesn't seem to be there any longer. The videos are still there which are the main source of information.
CMU database course - In this course you actually build a database. There is no better way to understand a system than to build it. The professor is great and cares deeply about databases. A quote from his Fall 2018 class - "I really only care about 2 things in my life. The first one is my wife. The second one is databases"
How does a relational database work - To quote the article "the aim of this article is NOT to understand how to use a database". As the name suggests it's about the internals and structure of how a database works.
Use the index luke - to quote the site "A site explaining SQL indexing to developers—no crap about administration." This obviously doesn't cover databases as a whole, but provides a good look at the power of indexes.
Designing Data Intensive applications - This book looks at a lot more than just databases, but it does spend a fair amount of time explaining and helping you understand them. Also, it does a great job for framing why databases are integral to data intensive applications. You’ll see this book mentioned around hacker news, programming subreddits, and everywhere programmers hangout. One negative is that it’s not a great beginner resource, but it’s great if you already have a foothold in databases.
There is a lot (and I mean a lot) of technical content in the resources I just listed. So I’ll provide some guidance on what you should do based on your goals.
If you’re serious about getting an overview, and understanding how to use a database then checkout the Stanford course.
If you already know how to use a database, and are trying to get to the next level of understanding then checkout one of the below resources.
- The CMU database course (again it’s a course so it’s a large resource)
- Designing Data Intensive applications
- How does a relational database work
- Use the index Luke
One thing I often hear self learners say is "I don't know this I didn't get a cs degree", or "It's harder for me to understand this because I didn't get a cs degree". I'd like to let you know I got a CS degree and I'm still confused as hell! This stuff isn't easy! How do you build the right foundation of knowledge? On any topic there's an infinity of resources, and it can be hard to find the right direction to go.
Every week I write about CS and programming concepts and give readers top resources to learn the things that were covered. I try and highlight a few things.
- Compare what college students learn, and what a self learner might have to do to achieve parity.
- Expose readers to new concepts and ideas that they might not otherwise stumble upon. The world of programming and CS is vast, and there's actually quite a bit of cool stuff in there.
if your interested in staying up to date with the writings feel free to subscribe: https://buttondown.email/LearningComputations
Full-Stack Developer Vs Software Engineer
Andrew Baisden -
Adrian Bece -
Don't duplicate your data - Learnings from code reviews
Johannes Kettmann -
Catalin Pit -