The intent of this guide is to give you an idea about the DBA landscape and to help guide your learning if you are confused. The roadmap is highly opinionated — neither, knowing everything listed in the roadmap, nor the order of items given in the roadmap is required to be followed in order to be a DBA.
Learn basic RDBMS terms and concepts
Get basic understanding of Postgres key terms and basic RDBMS concepts.
- Object model: data types, columns, rows, tables, schemas, databases, queries.
- Relational model: domains, attributes, tuples, relations, constraints, NULL.
- Databases high-level concepts: ACID, MVCC, transactions, write-ahead log, query processing.
- Links:
- Postgres Glossary
- SQL and Relational Theory - Christopher J. Date, 2009
- Database Design and Relational Theory - Christopher J. Date, 2012
Learn how to install and run PostgreSQL
Get practical skills of how to set up and run Postgres to get a working environment for further learning.
- Using package managers (APT, YUM, etc.)
- Using
docker. - Managing Postgres service using
systemd (start, stop, restart, reload). - Managing Postgres service using
pg_ctl, or OS-specific tools (like pg_ctlcluster). - Connect to Postgres using
psql. - Deploy database service in cloud environment (AWS, GCE, Azure, Heroku, DigitalOcean, etc...).
- Links:
Learn SQL concepts
Get practical skills of how to create and manipulate database objects and how to execute queries using psql client.
- Understand basic data types.
- DML queries: querying data, modifying data, filtering data, joining tables.
- Advanced topics: transactions, CTE, subqueries, lateral join, grouping, set operations.
- DDL queries: managing tables and schemas (create, alter, drop).
- Import and export data using
COPY. - Links:
Learn how to configure Postgres
Get understanding of the main aspects of how Postgres could be configured. Deep understanding of Postgres internals is not yet necessary here.
- postgresql.conf:
- Resources usage
- Write-ahead Log
- Checkpoints and Background Writer
- Cost-based vacuum and auto-vacuum
- Replication
- Query planner
- Reporting, logging and statistics
- Adding extra extensions
- ...keep exploring other configuration options
- Links:
Learn Postgres security concepts
Get understanding about basic security concepts and common ways of how to deploy secure configurations.
- Authentication models, roles, pg_hba.conf, SSL settings.
- Objects privileges: grant/revoke, default privileges.
- Advanced topics - row-level security, selinux.
- Links:
Develop infrastructure DBA skills
Get practical skills of how to deploy, extend, maintain and support Postgres installations and 3rd-party Postgres ecosystem software.
- Replication: streaming replication, logical replication
- Backup/recovery tools:
- Built-in:
pg_dump, pg_dumpall, pg_restore, pg_basebackup - 3rd-party:
barman, pgbackrest, pg_probackup, WAL-G - Backup validation procedures
- Upgrading procedures
- Minor and major upgrades using
pg_upgrade - Upgrades using logical replication
- Connection pooling:
Pgbouncer- Alternatives:
Pgpool-II, Odyssey, Pgagroal
- Infrastructure monitoring:
Prometheus, Zabbix, other favourite monitoring solution - High availability and cluster management tools:
Patroni- Alternatives:
Repmgr, Stolon, pg_auto_failover, PAF
- Applications Load Balancing and Service Discovery:
Haproxy, Keepalived, Consul, Etcd - Deploy Postgres on
Kubernetes: Simple StatefulSet setup, HELM, operators - Resource usage and provisioning, capacity planning
Learn how to automate routines
Get practical skills, learn automation tools and automate existing routine tasks.
- Automation using shell scripts or any other favourite language (
Bash, Python, Perl, etc) - Configuration management:
Ansible, Salt, Chef, Puppet
Develop application DBA skills
Learn theory and get practical skills of how applications should work with Postgres
- Migrations:
- practical patterns and antipatterns
- tools:
liquibase, sqitch, language-specific tools
- Data import/export, bulk loading and processing
- Queues:
- practical patterns and anti-patterns
Skytools PGQ
- Data partitioning and sharding patterns.
- Database normalization and normal forms.
- Books:
- The Art of PostgreSQL - Dimitri Fontaine, 2020
Learn Postgres advanced topics
Here is important to continuously extend and develop existing knowledge about Postgres.
- Low level internals:
- Fine-grained tuning:
- Per-user, per-database settings
- Storage parameters
- Workload-dependant tuning: OLTP, OLAP, HTAP
- Advanced SQL topics:
- PL/pgSQL, procedures and functions, triggers
- Aggregate and window functions
- Recursive CTE
- Links:
Learn Postgres troubleshooting techniques
Get basic understanding about troubleshooting tools and get practical skills of how to detect and resolve problems.
- Operating system tools
top (htop, atop)sysstatiotop
- Postgres system views
pg_stat_activitypg_stat_statements
- Postgres tools
pgcenter - personal recommendation
- Query analyzing:
- EXPLAIN
- Depesz online EXPLAIN visualization tool
- PEV online EXPLAIN visualization tool
- Tensor online EXPLAIN visualization tool, RU language only
- Log analyzing:
pgBadger- Ad-hoc analyzing using
grep, awk, sed, etc.
- External tracing/profiling tools:
gdb, strace, perf-tools, ebpf, core dumps - Troubleshooting methods: USE, RED, Golden signals
- Links:
Learn SQL optimization technics
Get understanding and practical skills of how to optimize SQL queries.
- Indexes, and their use cases: B-tree, Hash, GiST, SP-GiST, GIN, BRIN
- SQL queries patterns and anti-patterns
- SQL schema design patterns and anti-patterns
- Links:
- Books:
- SQL Antipatterns: Avoiding the Pitfalls of Database Programming - Bill Karwin, 2010
Develop architect skills
Get deeper understanding of Postgres use cases and where Postgres is suitable and where is not.
- Postgres forks and extensions:
Greenplum, Timescaledb, Citus, Postgres-XL, etc. - RDBMS in general, benefits and limitations
- Differences between Postgres and other RDBMS and NoSQL databases
Develop Postgres hacker skills
Get involved to Postgres community and contribute to Postgres; be a useful member of Postgres, and the open source community; use personal experience to help other people.
- Daily reading and answering in mailing lists
- pgsql-general
- pgsql-admin
- pgsql-performance
- pgsql-hackers
- pgsql-bugs
- Reviewing patches
- Writing patches, attending in Commitfests