For two years most of my production data work was MongoDB: aggregation pipelines, compound indexes, Decimal128 everywhere money shows up. Then the order-fulfilment service I work on landed on PostgreSQL, and I noticed I could write the SQL but could not explain what the planner would do with it.
So I set up an eight-week course for myself, with a tutor that writes the assignments and reviews the notes, and I ordered it internals first:
- Lab and system catalogs
- Architecture and the life of a query
- Storage: pages, tuples, TOAST
- MVCC and locks
- Indexes
- The planner (two weeks)
- WAL, memory and durability
- Features worth knowing
- Observability and operations
The bet is simple. If I understand how a tuple is laid out on a page and how MVCC decides what a transaction can see, then every feature on top of that becomes a consequence rather than a fact to memorise.
Progress is tracked publicly on the progress page. The honest number at the time of writing is low, and that is the point of writing it down.