Add PostgreSQL DBA roadmap.

pull/1331/head
lesovsky 4 years ago
parent 69ebd50a90
commit 96acb6c93e
  1. 5
      content/authors.json
  2. 30
      content/roadmaps.json
  3. 173
      content/roadmaps/7-postgresql-dba/0-About/0-Summary.md
  4. 2
      content/roadmaps/7-postgresql-dba/landscape.md
  5. 14
      content/roadmaps/7-postgresql-dba/meta.json
  6. 7
      content/roadmaps/7-postgresql-dba/resources.md

@ -33,5 +33,10 @@
"twitter": "BharmalEbrahim", "twitter": "BharmalEbrahim",
"picture": "/authors/ebrahimbharmal007.png", "picture": "/authors/ebrahimbharmal007.png",
"bio": "Love building projects using tools completely new to me. Python forever. Senior at University of Texas at Arlington (2021)" "bio": "Love building projects using tools completely new to me. Python forever. Senior at University of Texas at Arlington (2021)"
},
{
"username": "lesovsky",
"name": "Alexey Lesovsky",
"bio": "Linux system administrator and PostgreSQL DBA at DataEgret."
} }
] ]

@ -168,7 +168,7 @@
"name": "Kamran Ahmed", "name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse" "url": "https://twitter.com/kamranahmedse"
}, },
"contributorsCount": 0, "contributorsCount": 1,
"contributorsUrl": "/react/contributors", "contributorsUrl": "/react/contributors",
"url": "/react", "url": "/react",
"sidebar": {} "sidebar": {}
@ -208,7 +208,7 @@
"name": "Kamran Ahmed", "name": "Kamran Ahmed",
"url": "https://twitter.com/kamranahmedse" "url": "https://twitter.com/kamranahmedse"
}, },
"contributorsCount": 0, "contributorsCount": 1,
"contributorsUrl": "/android/contributors", "contributorsUrl": "/android/contributors",
"url": "/android", "url": "/android",
"sidebar": {} "sidebar": {}
@ -246,5 +246,31 @@
"contributorsUrl": "/qa/contributors", "contributorsUrl": "/qa/contributors",
"url": "/qa", "url": "/qa",
"sidebar": {} "sidebar": {}
},
{
"title": "PostgreSQL DBA Roadmap",
"description": "Step by step guide to becoming a modern PostgreSQL DBA",
"featuredDescription": "Step by step guide to becoming a modern PostgreSQL DBA in 2020",
"path": "/roadmaps/7-postgresql-dba/landscape.md",
"resources": "/roadmaps/7-postgresql-dba/resources.md",
"author": {
"name": "Alexey Lesovsky",
"url": "https://github.com/lesovsky"
},
"featured": false,
"detailed": false,
"versions": [],
"contributorsCount": 0,
"contributorsUrl": "/postgresql-dba/contributors",
"url": "/postgresql-dba",
"sidebar": {
"About": [
{
"url": "/postgresql-dba/summary",
"title": "Summary",
"path": "/roadmaps/7-postgresql-dba/0-About/0-Summary.md"
}
]
}
} }
] ]

@ -0,0 +1,173 @@
#### 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](https://www.postgresql.org/docs/13/glossary.html)
- 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:
- [Official download and install instructions](https://www.postgresql.org/download/)
- [Official Docker images](https://hub.docker.com/_/postgres)
##### 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](https://www.db-fiddle.com/)
- [PostgreSQL Tutorial](https://www.postgresqltutorial.com/)
- [PostgreSQL SQL Getting Started](https://www.postgresql.org/docs/current/tutorial-sql.html)
- [The SQL Language](https://www.postgresql.org/docs/current/sql.html)
##### 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](http://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](https://www.postgresql.org/docs/current/client-authentication.html)
- [Roles and users managements](https://www.postgresql.org/docs/current/user-manag.html)
##### 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:
- Processes and memory architecture
- Vacuum processing
- Buffer management
- Lock management
- [Physical storage and file layout](https://www.postgresql.org/docs/current/storage.html)
- [System catalog](https://www.postgresql.org/docs/current/catalogs.html)
- Fine-grained tuning:
- Per-user, per-database settings
- [Storage parameters](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-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](http://www.interdb.jp/pg/index.html) for database administrators and system developers
- [PL/pgSQL Guide](https://www.postgresql.org/docs/current/plpgsql.html)
##### 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](https://www.postgresql.org/docs/current/sql-explain.html)
- [Depesz](https://explain.depesz.com/) online EXPLAIN visualization tool
- [PEV](https://tatiyants.com/pev/#/plans) online EXPLAIN visualization tool
- [Tensor](https://explain.tensor.ru/) 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](http://www.brendangregg.com/linuxperf.html) by Brendan Gregg
- [USE Method](http://www.brendangregg.com/usemethod.html)
##### 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](https://use-the-index-luke.com/) - 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](https://www.postgresql.org/list/)
- pgsql-general
- pgsql-admin
- pgsql-performance
- pgsql-hackers
- pgsql-bugs
- reviewing patches
- writing patches, attending in [Commitfests](https://commitfest.postgresql.org/)

@ -0,0 +1,2 @@
## PostgreSQL DBA Roadmap
Roadmap to becoming a PostgreSQL Database Administrator

@ -0,0 +1,14 @@
{
"title": "PostgreSQL DBA Roadmap",
"description": "Step by step guide to becoming a modern PostgreSQL DBA",
"featuredDescription": "Step by step guide to becoming a modern PostgreSQL DBA in 2020",
"path": "./landscape.md",
"resources": "./resources.md",
"author": {
"name": "Alexey Lesovsky",
"url": "https://github.com/lesovsky"
},
"featured": false,
"detailed": false,
"versions": []
}

@ -0,0 +1,7 @@
> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup).
While we prepare the list, follow this simple advice to learn anything
> Just **pick a project and start working on it**, you will learn all that you need along the way.
**→**   [All Roadmaps](/roadmaps)  •  [Programming guides](/guides)  •  [Subscribe](/signup)
Loading…
Cancel
Save