Update the DBA roadmap
This commit is contained in:
@ -133,46 +133,6 @@
|
|||||||
"url": "/devops",
|
"url": "/devops",
|
||||||
"sidebar": {}
|
"sidebar": {}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"seo": {
|
|
||||||
"title": "React Developer Roadmap: Learn to become a React developer",
|
|
||||||
"description": "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.",
|
|
||||||
"keywords": [
|
|
||||||
"guide to becoming a react developer",
|
|
||||||
"react developer roadmap",
|
|
||||||
"react roadmap",
|
|
||||||
"become react developer",
|
|
||||||
"react developer skills",
|
|
||||||
"react skills test",
|
|
||||||
"skills for react development",
|
|
||||||
"learn react development",
|
|
||||||
"what is react",
|
|
||||||
"react quiz",
|
|
||||||
"react interview questions"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"title": "React Developer",
|
|
||||||
"description": "Everything that is there to learn about React and the ecosystem in 2020.",
|
|
||||||
"featuredDescription": "Everything that is there to learn about React and the ecosystem in 2020.",
|
|
||||||
"isTextHeavy": false,
|
|
||||||
"communityResource": false,
|
|
||||||
"featured": true,
|
|
||||||
"path": "/roadmaps/4-react/landscape.md",
|
|
||||||
"resources": "/roadmaps/4-react/resources.md",
|
|
||||||
"versions": [
|
|
||||||
"latest",
|
|
||||||
"2018",
|
|
||||||
"2017"
|
|
||||||
],
|
|
||||||
"author": {
|
|
||||||
"name": "Kamran Ahmed",
|
|
||||||
"url": "https://twitter.com/kamranahmedse"
|
|
||||||
},
|
|
||||||
"contributorsCount": 1,
|
|
||||||
"contributorsUrl": "/react/contributors",
|
|
||||||
"url": "/react",
|
|
||||||
"sidebar": {}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"seo": {
|
"seo": {
|
||||||
"title": "Android Developer Roadmap: Learn to become an Android developer",
|
"title": "Android Developer Roadmap: Learn to become an Android developer",
|
||||||
@ -197,8 +157,8 @@
|
|||||||
"isTextHeavy": true,
|
"isTextHeavy": true,
|
||||||
"communityResource": true,
|
"communityResource": true,
|
||||||
"featured": true,
|
"featured": true,
|
||||||
"path": "/roadmaps/5-android/landscape.md",
|
"path": "/roadmaps/4-android/landscape.md",
|
||||||
"resources": "/roadmaps/5-android/resources.md",
|
"resources": "/roadmaps/4-android/resources.md",
|
||||||
"versions": [
|
"versions": [
|
||||||
"latest",
|
"latest",
|
||||||
"2018",
|
"2018",
|
||||||
@ -213,6 +173,90 @@
|
|||||||
"url": "/android",
|
"url": "/android",
|
||||||
"sidebar": {}
|
"sidebar": {}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"seo": {
|
||||||
|
"title": "DBA Roadmap: Learn to become a database administrator with PostgreSQL",
|
||||||
|
"description": "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.",
|
||||||
|
"keywords": [
|
||||||
|
"guide to becoming a database administrator",
|
||||||
|
"guide to becoming a DBA",
|
||||||
|
"dba roadmap",
|
||||||
|
"db administrator roadmap",
|
||||||
|
"database administrator roadmap",
|
||||||
|
"postgresql roadmap",
|
||||||
|
"dba skills",
|
||||||
|
"db administrator skills",
|
||||||
|
"become dba",
|
||||||
|
"postgresql skills",
|
||||||
|
"modern dba skills",
|
||||||
|
"dba skills test",
|
||||||
|
"skills for dba",
|
||||||
|
"skills for database administrator",
|
||||||
|
"learn dba",
|
||||||
|
"what is dba",
|
||||||
|
"database administrator quiz",
|
||||||
|
"dba interview questions"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"title": "DB Administrator",
|
||||||
|
"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/5-postgresql-dba/landscape.md",
|
||||||
|
"resources": "/roadmaps/5-postgresql-dba/resources.md",
|
||||||
|
"author": {
|
||||||
|
"name": "Alexey Lesovsky",
|
||||||
|
"url": "https://github.com/lesovsky"
|
||||||
|
},
|
||||||
|
"communityResource": true,
|
||||||
|
"isTextHeavy": true,
|
||||||
|
"featured": false,
|
||||||
|
"detailed": false,
|
||||||
|
"versions": [],
|
||||||
|
"contributorsCount": 0,
|
||||||
|
"contributorsUrl": "/postgresql-dba/contributors",
|
||||||
|
"url": "/postgresql-dba",
|
||||||
|
"sidebar": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seo": {
|
||||||
|
"title": "React Developer Roadmap: Learn to become a React developer",
|
||||||
|
"description": "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.",
|
||||||
|
"keywords": [
|
||||||
|
"guide to becoming a react developer",
|
||||||
|
"react developer roadmap",
|
||||||
|
"react roadmap",
|
||||||
|
"become react developer",
|
||||||
|
"react developer skills",
|
||||||
|
"react skills test",
|
||||||
|
"skills for react development",
|
||||||
|
"learn react development",
|
||||||
|
"what is react",
|
||||||
|
"react quiz",
|
||||||
|
"react interview questions"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"title": "React Developer",
|
||||||
|
"description": "Everything that is there to learn about React and the ecosystem in 2020.",
|
||||||
|
"featuredDescription": "Everything that is there to learn about React and the ecosystem in 2020.",
|
||||||
|
"isTextHeavy": false,
|
||||||
|
"communityResource": false,
|
||||||
|
"featured": true,
|
||||||
|
"path": "/roadmaps/6-react/landscape.md",
|
||||||
|
"resources": "/roadmaps/6-react/resources.md",
|
||||||
|
"versions": [
|
||||||
|
"latest",
|
||||||
|
"2018",
|
||||||
|
"2017"
|
||||||
|
],
|
||||||
|
"author": {
|
||||||
|
"name": "Kamran Ahmed",
|
||||||
|
"url": "https://twitter.com/kamranahmedse"
|
||||||
|
},
|
||||||
|
"contributorsCount": 0,
|
||||||
|
"contributorsUrl": "/react/contributors",
|
||||||
|
"url": "/react",
|
||||||
|
"sidebar": {}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"seo": {
|
"seo": {
|
||||||
"title": "QA Roadmap: Learn to become a modern QA engineer",
|
"title": "QA Roadmap: Learn to become a modern QA engineer",
|
||||||
@ -236,41 +280,15 @@
|
|||||||
"description": "Steps to follow in order to become a modern QA Engineer in 2020",
|
"description": "Steps to follow in order to become a modern QA Engineer in 2020",
|
||||||
"featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2020",
|
"featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2020",
|
||||||
"upcoming": true,
|
"upcoming": true,
|
||||||
"path": "/roadmaps/6-qa/landscape.md",
|
"path": "/roadmaps/7-qa/landscape.md",
|
||||||
"resources": "/roadmaps/6-qa/resources.md",
|
"resources": "/roadmaps/7-qa/resources.md",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Anas Fitiani",
|
"name": "Anas Fitiani",
|
||||||
"url": "https://github.com/anas-qa"
|
"url": "https://github.com/anas-qa"
|
||||||
},
|
},
|
||||||
"contributorsCount": 1,
|
"contributorsCount": 0,
|
||||||
"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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
180
content/roadmaps/5-postgresql-dba/landscape.md
Normal file
180
content/roadmaps/5-postgresql-dba/landscape.md
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
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](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.
|
||||||
|
- 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**:
|
||||||
|
- [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 auto-vacuum
|
||||||
|
- 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 techniques
|
||||||
|
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/)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
40
content/roadmaps/5-postgresql-dba/meta.json
Normal file
40
content/roadmaps/5-postgresql-dba/meta.json
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"seo": {
|
||||||
|
"title": "DBA Roadmap: Learn to become a database administrator with PostgreSQL",
|
||||||
|
"description": "Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.",
|
||||||
|
"keywords": [
|
||||||
|
"guide to becoming a database administrator",
|
||||||
|
"guide to becoming a DBA",
|
||||||
|
"dba roadmap",
|
||||||
|
"db administrator roadmap",
|
||||||
|
"database administrator roadmap",
|
||||||
|
"postgresql roadmap",
|
||||||
|
"dba skills",
|
||||||
|
"db administrator skills",
|
||||||
|
"become dba",
|
||||||
|
"postgresql skills",
|
||||||
|
"modern dba skills",
|
||||||
|
"dba skills test",
|
||||||
|
"skills for dba",
|
||||||
|
"skills for database administrator",
|
||||||
|
"learn dba",
|
||||||
|
"what is dba",
|
||||||
|
"database administrator quiz",
|
||||||
|
"dba interview questions"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"title": "DB Administrator",
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
"communityResource": true,
|
||||||
|
"isTextHeavy": true,
|
||||||
|
"featured": false,
|
||||||
|
"detailed": false,
|
||||||
|
"versions": []
|
||||||
|
}
|
@ -1,173 +0,0 @@
|
|||||||
#### 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/)
|
|
@ -1,2 +0,0 @@
|
|||||||
## PostgreSQL DBA Roadmap
|
|
||||||
Roadmap to becoming a PostgreSQL Database Administrator
|
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"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": []
|
|
||||||
}
|
|
@ -3,7 +3,7 @@
|
|||||||
<url>
|
<url>
|
||||||
<loc>https://roadmap.sh/frontend</loc>
|
<loc>https://roadmap.sh/frontend</loc>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<lastmod>2020-05-26T18:13:35.798Z</lastmod>
|
<lastmod>2020-07-20T21:01:02.296Z</lastmod>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
@ -18,18 +18,24 @@
|
|||||||
<lastmod>2020-01-29T07:49:29.706Z</lastmod>
|
<lastmod>2020-01-29T07:49:29.706Z</lastmod>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
|
||||||
<loc>https://roadmap.sh/react</loc>
|
|
||||||
<changefreq>monthly</changefreq>
|
|
||||||
<lastmod>2020-07-18T00:11:27.434Z</lastmod>
|
|
||||||
<priority>1.0</priority>
|
|
||||||
</url>
|
|
||||||
<url>
|
<url>
|
||||||
<loc>https://roadmap.sh/android</loc>
|
<loc>https://roadmap.sh/android</loc>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<lastmod>2020-06-11T15:47:02.224Z</lastmod>
|
<lastmod>2020-06-11T15:47:02.224Z</lastmod>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://roadmap.sh/postgresql-dba</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<lastmod>2020-09-19T14:09:45.689Z</lastmod>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://roadmap.sh/react</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<lastmod>2020-07-18T00:11:27.434Z</lastmod>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://roadmap.sh/qa</loc>
|
<loc>https://roadmap.sh/qa</loc>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
@ -186,6 +192,12 @@
|
|||||||
<lastmod>2017-10-28T17:00:00.860Z</lastmod>
|
<lastmod>2017-10-28T17:00:00.860Z</lastmod>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://roadmap.sh/guides/proxy-servers</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<lastmod>2020-07-24T12:40:18</lastmod>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://roadmap.sh/about</loc>
|
<loc>https://roadmap.sh/about</loc>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
@ -231,7 +243,7 @@
|
|||||||
<url>
|
<url>
|
||||||
<loc>https://roadmap.sh/watch</loc>
|
<loc>https://roadmap.sh/watch</loc>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<lastmod>2020-07-17T20:43:20.585Z</lastmod>
|
<lastmod>2020-09-19T08:07:30.722Z</lastmod>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
Reference in New Issue
Block a user