Notes on Database ( Part 1 ) - How to study databases

A lot of database resources are available. This post covers my approach to studying databases and the resources I use

  ·   3 min read

desktop
My Desktop Setup

Introduction

Since I was a computer science student, the study of databases has always been the most interesting topic for me. When you study how databases work, you will touch every aspect of computer science, from algorithms, data structures, operating systems, networking, and distributed systems to concurrency.

Postgres is one of the most mature software systems in the world. It is my go-to storage system. It’s battle-tested, open source, and has a massive community backing and a lot of literature around it. And once you use extensions like PostGIS, PGVector, TimescaleDB, and others, you will see Postgres as a complete data platform.

While everything we are going to discuss in this series is focused explicitly on Postgres implementation, the same concepts are common in all other major databases.

Approach

When it comes to a topic as common as databases, there are many resources. This usually puts me in an analysis paralysis mode where I keep jumping from one resource to another.

Lately, I have decided to take a more organized approach. I focus on a handful of resources, pick one topic at a time, and write about it. This way, I can be more organized and accountable.

Since I’ve already read Database Internals and Designing Data-Intensive Applications (multiple times), I’m starting with the Fundamentals of Database Engineering course.

For every section, I will read (again) the relevant chapters from both books and write my notes about them. And to make this more Postgres specific. I’ll pick the relevant sections from Postgres Internals to make this more sided with Postgres.

While this approach will require more time and effort, it will help get the most out of all resources and give each topic the required attention. It will also give me the ability to iteratively publish posts about every topic.

Topics to cover

If I learned one thing from being a software engineer. It is that you can never know enough about any topic.

This series will cover topics that are foundational in understanding how databases work. I will update this list with more topics as I work through the series. Below is the current list (With no particular change):

  • Topic 1: How to study databases. (This post)
  • Topic 2: Transactions and ACID Properties.
  • Topic 4: Isolation Levels and Read Phenomena.
  • Topic 5: Locking Mechanisms.
  • Topic 6: MVCC in PostgreSQL.
  • Topic 7: Write-Ahead Logging (WAL) and Recovery.
  • Topic 8: Distributed Transactions and Two-Phase Commit
  • Topic 9: Indexing and Query Optimization.

Resources

The resources I will be using are usually considered the defacto studies for distributed systems and databases. I will also be using Hussien Nasser’s Database Engineering course on Udemy (which in my opinion is the best video course on databases).

Timeline

As we are starting August, my plan is to finish this series by the end of the year with a satisfying number of posts. I will be posting a new post every one or two weeks. Following article will discuss database transactions and ACID properties.