8.0 KiB
PostgreSQL DBA Roadmap
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 (likepg_ctlcluster
). - connect to Postgres using
psql
. - deploy database service in cloud environment (AWS, GCE, Azure, Heroku, DigitalOcean, etc...).
- Links:
- Official download and install instructions
- Official Docker images
Learn SQL concepts
Get practical skills of how to create and manipulate database objects and how to execute queries using psql
client.
- Understanding 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:
- DB Fiddle
- PostgreSQL Tutorial
- PostgreSQL SQL Getting Started
- The SQL Language
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 autovacuum
- replication
- query planner
- reporting, logging and statistics
- adding extra extensions
- ... keep exploring other configuration options Links:
- Postgresqlco.nf
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:
- Client authentication
- Roles and users managements
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
: simpleStatefulSet
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:
- Processes and memory architecture
- Vacuum processing
- Buffer management
- Lock management
- Physical storage and file layout
- System catalog
- 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:
- The Internals of PostgreSQL for database administrators and system developers
- PL/pgSQL Guide
Learn Postgres troubleshooting technics
Get basic understanding about troubleshooting tools and get practical skills of how to detect and resolve problems.
- Operating system tools
top
(htop
,atop
)sysstat
iotop
- Postgres system views
pg_stat_activity
pg_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:
- Linux Performance by Brendan Gregg
- USE Method
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:
- Use the Index, Luke - a Guide to Database Performance for Developers
- 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