Fifteen units from the process and write-ahead-log architecture through to monitoring. The architecture unit is first and the multi-version concurrency unit sits at the centre, because between them they explain most of what a database administrator actually spends their time on.
A1
The architecture — processes, memory and the write path
Kplanned🔴 First, because every tuning decision, every recovery procedure and half the failure diagnoses in this path are downstream of this picture. A supervisor process, one backend per connection, a shared buffer pool, and a write-ahead log that is written before the data pages are. That last fact alone explains durability, crash recovery, replication, point-in-time recovery and checkpoint behaviour — four later units that otherwise have to be memorised separately.
A2
Installation, clusters and configuration
KSplannedThe operational vocabulary: a cluster is a data directory and a running server, not a database, and the ambiguity in that word confuses people for months. Covers initialising a cluster, the configuration files and their precedence, and the context levels that determine whether a setting takes effect immediately, on reload, or only on restart — which is the practical detail that turns a tuning change into a maintenance window.
A3
Logical structure — databases, schemas, roles and ownership
KplannedHow things are named and who may touch them. Databases as isolation boundaries you cannot query across, schemas as namespaces, the search path that silently resolves an unqualified name and is a genuine security consideration, and roles that are simultaneously users and groups. Ownership and default privileges belong here too — the source of the perennial 'I granted access and it still says permission denied'.
A4
Data types worth actually using
KplannedPostgreSQL's type system is one of the strongest reasons to choose it, and most applications use about six types. Covers the ones left on the table: binary JSON with its own indexing and operators, arrays, ranges, network and UUID types, generated columns, and exact numeric versus floating point — where using the wrong one for money is a bug that survives every test suite. Type choice is a schema decision that is expensive to reverse.
A5
Schema design and constraints
KSplannedTables, keys, foreign keys, check and exclusion constraints, and normalisation used as a tool rather than a doctrine. Constraints are framed as what they are — correctness guarantees enforced by the engine, which is strictly stronger than correctness enforced by application code — along with the honest cost of each at write time and the locking implications of adding one to a live table.
A6
Querying beyond the basics
KSplannedJoins and their semantics, common table expressions, window functions, lateral joins, grouping sets, and set operations. Window functions in particular replace whole categories of application-side looping, and the difference in performance is not marginal. A Skill element: it is closed by writing queries against real data, not by recognising syntax.
A7
MVCC — how concurrency actually works
Kplanned🔴 The single concept that explains the most production incidents. Postgres does not update rows in place; it writes a new version and leaves the old one until nothing can see it. That one mechanism explains why readers never block writers, why a long-running transaction is dangerous far away from itself, why tables grow when nothing was inserted, and why the next unit exists at all. Teach this wrong and everything about maintenance becomes ritual.
A8
Vacuum, bloat and transaction ID wraparound
KRplannedThe direct consequence of A7 and the most common source of a self-inflicted outage. Dead tuples accumulate, autovacuum reclaims them, and when autovacuum cannot keep up the table bloats and queries slow. The Risk element is transaction ID wraparound: it is a genuine, documented way to take a database offline, it is entirely preventable, and it announces itself in the logs for a long time before it happens. Hazard AND mitigation.
A9
Indexes
KplannedThe access methods and what each is actually for: the default balanced tree, inverted indexes for multi-valued and full-text data, the generalised search tree behind geometric and — importantly for Track B — nearest-neighbour searching, block range indexes for naturally ordered large tables, and partial and expression indexes. Also the cost side, which gets skipped: every index is write amplification and disk, and an unused index is pure overhead.
A10
The planner, and reading a real plan
KSplannedThe skill that separates someone who can use Postgres from someone who can fix it. Statistics, cost estimation, join order and method selection, and then reading actual execution output with timing and buffer counts. The diagnostic move being trained is specific: compare the estimated row count against the actual, because a large divergence is the root cause of most bad plans. A Skill — closed by diagnosing real slow queries.
A11
Transactions, isolation and locking
KplannedWhat a transaction guarantees at each isolation level, the anomalies each level permits, and the serialisation failures the strictest level makes your application responsible for retrying. Lock modes and what blocks what, deadlocks and how they are resolved, advisory locks, and — the practical item — which schema changes take a lock that stops all traffic and which do not.
A12
Extensions
KplannedHow Postgres is extended, which is the reason the second track is possible at all: new types, operators, index access methods and functions loaded into a running database. Covers what an extension can and cannot do, versioning and upgrades, the trust and availability question on managed platforms, and the handful of extensions worth knowing about. This is the bridge unit into Track B.
A13
Backup, recovery and replication
KSRplannedThe unit whose absence ends companies. Logical dumps versus physical base backups, continuous archiving and point-in-time recovery, streaming replication and replica lag, synchronous versus asynchronous commit and the data-loss window each implies, and failover. The Risk element is stated plainly: an untested backup is not a backup, and the assessable skill is a performed restore, not a configured backup job.
A14
Security
KRplannedClient authentication and the host-based rules file that most people edit once and never understand, role privileges and the default grants that surprise people, row-level security, encryption in transit and at rest, and auditing. Risk elements throughout, because the mitigations are specific configurations rather than principles.
A15
Monitoring and troubleshooting
KSplannedClosing Track A with the operational loop: the statistics views, finding the queries that consume the most total time rather than the slowest single execution, watching for long transactions and lock waits, log configuration, and connection pooling — which matters because the process-per-connection model in A1 makes a few thousand idle connections a real problem rather than a theoretical one.