From e66bff74bffe2c0490f7e67362b208faa9c5242b Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Tue, 18 Apr 2023 02:25:57 +0100 Subject: [PATCH] Add postgresql-dba content --- public/jsons/roadmaps/postgresql-dba.json | 1 + src/data/roadmaps/postgresql-dba/content/100-roadmap-note.md | 1 + .../101-introduction/100-what-are-relational-databases.md | 1 + .../content/101-introduction/101-rdbms-benefits-limitations.md | 1 + .../content/101-introduction/102-postgresql-vs-others.md | 1 + .../content/101-introduction/103-postgresql-vs-nosql.md | 1 + .../roadmaps/postgresql-dba/content/101-introduction/index.md | 1 + .../102-rdbms-concepts/100-object-model/100-databases.md | 1 + .../content/102-rdbms-concepts/100-object-model/101-tables.md | 1 + .../content/102-rdbms-concepts/100-object-model/102-schemas.md | 1 + .../content/102-rdbms-concepts/100-object-model/103-rows.md | 1 + .../content/102-rdbms-concepts/100-object-model/104-columns.md | 1 + .../102-rdbms-concepts/100-object-model/105-data-types.md | 1 + .../content/102-rdbms-concepts/100-object-model/106-queries.md | 1 + .../content/102-rdbms-concepts/100-object-model/index.md | 1 + .../102-rdbms-concepts/101-relational-model/100-domains.md | 1 + .../102-rdbms-concepts/101-relational-model/101-attributes.md | 1 + .../102-rdbms-concepts/101-relational-model/102-tuples.md | 1 + .../102-rdbms-concepts/101-relational-model/103-relations.md | 1 + .../102-rdbms-concepts/101-relational-model/104-constraints.md | 1 + .../102-rdbms-concepts/101-relational-model/105-null.md | 1 + .../content/102-rdbms-concepts/101-relational-model/index.md | 1 + .../102-high-level-database-concepts/100-acid.md | 1 + .../102-high-level-database-concepts/101-mvcc.md | 1 + .../102-high-level-database-concepts/102-transactions.md | 1 + .../102-high-level-database-concepts/103-write-ahead-log.md | 1 + .../102-high-level-database-concepts/104-query-processing.md | 1 + .../102-high-level-database-concepts/index.md | 1 + .../postgresql-dba/content/102-rdbms-concepts/index.md | 1 + .../content/103-installation-and-setup/100-package-managers.md | 1 + .../content/103-installation-and-setup/101-using-docker.md | 1 + .../103-installation-and-setup/102-connect-using-psql.md | 1 + .../103-installation-and-setup/103-deployment-in-cloud.md | 1 + .../content/103-installation-and-setup/104-using-systemd.md | 1 + .../content/103-installation-and-setup/105-using-pgctl.md | 1 + .../103-installation-and-setup/106-using-pgctlcluster.md | 1 + .../postgresql-dba/content/103-installation-and-setup/index.md | 1 + .../104-learn-sql-concepts/100-ddl-queries/100-for-schemas.md | 1 + .../104-learn-sql-concepts/100-ddl-queries/101-for-tables.md | 1 + .../104-learn-sql-concepts/100-ddl-queries/102-data-types.md | 1 + .../content/104-learn-sql-concepts/100-ddl-queries/index.md | 1 + .../101-dml-queries/100-querying-data.md | 1 + .../101-dml-queries/101-filtering-data.md | 1 + .../101-dml-queries/102-modifying-data.md | 1 + .../101-dml-queries/103-joining-tables.md | 1 + .../content/104-learn-sql-concepts/101-dml-queries/index.md | 1 + .../104-learn-sql-concepts/102-import-export-using-copy.md | 1 + .../103-advanced-topics/100-transactions.md | 1 + .../104-learn-sql-concepts/103-advanced-topics/101-cte.md | 1 + .../103-advanced-topics/102-subqueries.md | 1 + .../103-advanced-topics/103-lateral-join.md | 1 + .../104-learn-sql-concepts/103-advanced-topics/104-grouping.md | 1 + .../103-advanced-topics/105-set-operations.md | 1 + .../104-learn-sql-concepts/103-advanced-topics/index.md | 1 + .../postgresql-dba/content/104-learn-sql-concepts/index.md | 1 + .../content/105-configuring-postgresql/100-resources-usage.md | 1 + .../content/105-configuring-postgresql/101-write-ahead-log.md | 1 + .../content/105-configuring-postgresql/102-vacuums.md | 1 + .../content/105-configuring-postgresql/103-replication.md | 1 + .../content/105-configuring-postgresql/104-query-planner.md | 1 + .../105-checkpoints-background-writer.md | 1 + .../105-configuring-postgresql/106-adding-extensions.md | 1 + .../107-reporting-logging-statistics.md | 1 + .../postgresql-dba/content/105-configuring-postgresql/index.md | 1 + .../100-object-priviliges/100-grant-revoke.md | 1 + .../100-object-priviliges/101-default-priviliges.md | 1 + .../100-object-priviliges/index.md | 1 + .../101-advanced-topics/100-row-level-security.md | 1 + .../101-advanced-topics/101-selinux.md | 1 + .../101-advanced-topics/index.md | 1 + .../102-authentication-models.md | 1 + .../content/106-postgresql-security-concepts/103-roles.md | 1 + .../106-postgresql-security-concepts/104-pg-hba-conf.md | 1 + .../106-postgresql-security-concepts/105-ssl-settings.md | 1 + .../content/106-postgresql-security-concepts/index.md | 1 + .../100-replication/100-logical-replication.md | 1 + .../100-replication/101-streaming-replication.md | 1 + .../100-replication/index.md | 1 + .../100-resource-usage-provisioing-capacity-planning.md | 1 + .../101-connection-pooling/100-pg-bouncer.md | 1 + .../101-connection-pooling/101-pg-bouncer-alternatives.md | 1 + .../101-connection-pooling/index.md | 1 + .../102-backup-recovery-tools/100-barman.md | 1 + .../102-backup-recovery-tools/101-wal-g.md | 1 + .../102-backup-recovery-tools/102-pgbackrest.md | 1 + .../102-backup-recovery-tools/103-pg-probackup.md | 1 + .../102-backup-recovery-tools/104-pg-dump.md | 1 + .../102-backup-recovery-tools/105-pg-dumpall.md | 1 + .../102-backup-recovery-tools/106-pg-restore.md | 1 + .../102-backup-recovery-tools/107-pg-basebackup.md | 1 + .../108-backup-validation-procedures.md | 1 + .../102-backup-recovery-tools/index.md | 1 + .../103-upgrade-procedures/100-using-pg-upgrade.md | 1 + .../103-upgrade-procedures/101-using-logical-replication.md | 1 + .../103-upgrade-procedures/index.md | 1 + .../104-cluster-management/100-patroni.md | 1 + .../104-cluster-management/101-patroni-alternatives.md | 1 + .../104-cluster-management/index.md | 1 + .../105-kubernetes-deployment/100-simple-stateful-setup.md | 1 + .../105-kubernetes-deployment/101-helm.md | 1 + .../105-kubernetes-deployment/102-operators.md | 1 + .../105-kubernetes-deployment/index.md | 1 + .../106-monitoring/100-prometheus.md | 1 + .../106-monitoring/101-zabbix.md | 1 + .../106-monitoring/index.md | 1 + .../107-load-balancing/100-ha-proxy.md | 1 + .../107-load-balancing/101-consul.md | 1 + .../107-load-balancing/102-keep-alived.md | 1 + .../107-load-balancing/103-etcd.md | 1 + .../107-load-balancing/index.md | 1 + .../content/107-postgresql-infrastructure-skills/index.md | 1 + .../content/108-learn-automation/100-shell-scripts.md | 1 + .../content/108-learn-automation/101-programming-language.md | 1 + .../102-configuration-management/100-ansible.md | 1 + .../102-configuration-management/101-salt.md | 1 + .../102-configuration-management/102-chef.md | 1 + .../102-configuration-management/103-puppet.md | 1 + .../108-learn-automation/102-configuration-management/index.md | 1 + .../postgresql-dba/content/108-learn-automation/index.md | 1 + .../100-migrations/100-practical-patterns.md | 1 + .../100-migrations/101-liquidbase-sqitch-bytebase.md | 1 + .../content/109-application-skills/100-migrations/index.md | 1 + .../101-queues/100-practical-patterns-antipatterns.md | 1 + .../109-application-skills/101-queues/101-skytools-pgq.md | 1 + .../content/109-application-skills/101-queues/index.md | 1 + .../109-application-skills/102-bulk-load-process-data.md | 1 + .../103-data-partitioning-sharding-patterns.md | 1 + .../104-data-normalization-normal-forms.md | 1 + .../postgresql-dba/content/109-application-skills/index.md | 1 + .../100-low-level-internals/100-process-memory-arch.md | 1 + .../100-low-level-internals/101-vacuum-processing.md | 1 + .../100-low-level-internals/102-buffer-management.md | 1 + .../100-low-level-internals/103-lock-management.md | 1 + .../104-physical-storage-and-file-layout.md | 1 + .../100-low-level-internals/105-system-catalog.md | 1 + .../110-advanced-topics/100-low-level-internals/index.md | 1 + .../100-per-user-per-database-settings.md | 1 + .../101-fine-grained-tuning/101-storage-parameters.md | 1 + .../101-fine-grained-tuning/102-workload-dependant-tuning.md | 1 + .../110-advanced-topics/101-fine-grained-tuning/index.md | 1 + .../110-advanced-topics/102-advanced-sql/100-pl-pgsql.md | 1 + .../102-advanced-sql/101-procedures-and-functions.md | 1 + .../110-advanced-topics/102-advanced-sql/102-triggers.md | 1 + .../110-advanced-topics/102-advanced-sql/103-recursive-cte.md | 1 + .../102-advanced-sql/104-aggregate-and-window-functions.md | 1 + .../content/110-advanced-topics/102-advanced-sql/index.md | 1 + .../postgresql-dba/content/110-advanced-topics/index.md | 1 + .../100-system-views/100-pg-stat-activity.md | 1 + .../100-system-views/101-pg-stat-statements.md | 1 + .../111-troubleshooting-techniques/100-system-views/index.md | 1 + .../111-troubleshooting-techniques/101-tools/100-pt-center.md | 1 + .../content/111-troubleshooting-techniques/101-tools/index.md | 1 + .../102-operating-system-tools/100-top.md | 1 + .../102-operating-system-tools/101-sysstat.md | 1 + .../102-operating-system-tools/102-iotop.md | 1 + .../102-operating-system-tools/index.md | 1 + .../103-query-analysis/100-explain.md | 1 + .../103-query-analysis/101-depesz.md | 1 + .../103-query-analysis/102-pev.md | 1 + .../103-query-analysis/103-tenser.md | 1 + .../111-troubleshooting-techniques/103-query-analysis/index.md | 1 + .../104-profiling-tools/100-gdb.md | 1 + .../104-profiling-tools/101-strace.md | 1 + .../104-profiling-tools/102-ebpf.md | 1 + .../104-profiling-tools/103-perf-tools.md | 1 + .../104-profiling-tools/104-core-dumps.md | 1 + .../104-profiling-tools/index.md | 1 + .../105-troubleshooting-methods/100-use.md | 1 + .../105-troubleshooting-methods/101-red.md | 1 + .../105-troubleshooting-methods/102-golden-signals.md | 1 + .../105-troubleshooting-methods/index.md | 1 + .../106-log-analysis/100-pg-badger.md | 1 + .../111-troubleshooting-techniques/106-log-analysis/101-awk.md | 1 + .../106-log-analysis/102-grep.md | 1 + .../111-troubleshooting-techniques/106-log-analysis/103-sed.md | 1 + .../111-troubleshooting-techniques/106-log-analysis/index.md | 1 + .../content/111-troubleshooting-techniques/index.md | 1 + .../100-indexes-usecases/100-b-tree.md | 1 + .../100-indexes-usecases/101-hash.md | 1 + .../100-indexes-usecases/102-gist.md | 1 + .../100-indexes-usecases/103-sp-gist.md | 1 + .../100-indexes-usecases/104-gin.md | 1 + .../100-indexes-usecases/105-brin.md | 1 + .../100-indexes-usecases/index.md | 1 + .../101-schema-design-patterns.md | 1 + .../102-schema-query-patterns.md | 1 + .../content/112-sql-optimization-techniques/index.md | 1 + .../113-get-involved-in-development/100-mailing-lists.md | 1 + .../113-get-involved-in-development/101-reviewing-patches.md | 1 + .../113-get-involved-in-development/102-writing-patches.md | 1 + .../content/113-get-involved-in-development/index.md | 1 + src/data/roadmaps/postgresql-dba/content/index.md | 1 + src/data/roadmaps/postgresql-dba/postgresql-dba.md | 3 ++- 193 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 public/jsons/roadmaps/postgresql-dba.json create mode 100644 src/data/roadmaps/postgresql-dba/content/100-roadmap-note.md create mode 100644 src/data/roadmaps/postgresql-dba/content/101-introduction/100-what-are-relational-databases.md create mode 100644 src/data/roadmaps/postgresql-dba/content/101-introduction/101-rdbms-benefits-limitations.md create mode 100644 src/data/roadmaps/postgresql-dba/content/101-introduction/102-postgresql-vs-others.md create mode 100644 src/data/roadmaps/postgresql-dba/content/101-introduction/103-postgresql-vs-nosql.md create mode 100644 src/data/roadmaps/postgresql-dba/content/101-introduction/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/100-databases.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/101-tables.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/102-schemas.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/103-rows.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/104-columns.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/105-data-types.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/106-queries.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/100-domains.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/101-attributes.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/102-tuples.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/103-relations.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/104-constraints.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/105-null.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/100-acid.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/101-mvcc.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/102-transactions.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/103-write-ahead-log.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/104-query-processing.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/100-package-managers.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/101-using-docker.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/102-connect-using-psql.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/103-deployment-in-cloud.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/104-using-systemd.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/105-using-pgctl.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/106-using-pgctlcluster.md create mode 100644 src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/100-for-schemas.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/101-for-tables.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/102-data-types.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/100-querying-data.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/101-filtering-data.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/102-modifying-data.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/103-joining-tables.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/102-import-export-using-copy.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/100-transactions.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/101-cte.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/102-subqueries.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/103-lateral-join.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/104-grouping.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/105-set-operations.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/100-resources-usage.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/101-write-ahead-log.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/102-vacuums.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/103-replication.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/104-query-planner.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/105-checkpoints-background-writer.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/106-adding-extensions.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/107-reporting-logging-statistics.md create mode 100644 src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/100-grant-revoke.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/101-default-priviliges.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/100-row-level-security.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/101-selinux.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/102-authentication-models.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/103-roles.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/104-pg-hba-conf.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/105-ssl-settings.md create mode 100644 src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/100-logical-replication.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/101-streaming-replication.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-resource-usage-provisioing-capacity-planning.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/100-pg-bouncer.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/101-pg-bouncer-alternatives.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/100-barman.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/101-wal-g.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/102-pgbackrest.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/103-pg-probackup.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/104-pg-dump.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/105-pg-dumpall.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/106-pg-restore.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/107-pg-basebackup.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/108-backup-validation-procedures.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/100-using-pg-upgrade.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/101-using-logical-replication.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/100-patroni.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/101-patroni-alternatives.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/100-simple-stateful-setup.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/101-helm.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/102-operators.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/100-prometheus.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/101-zabbix.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/100-ha-proxy.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/101-consul.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/102-keep-alived.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/103-etcd.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/100-shell-scripts.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/101-programming-language.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/100-ansible.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/101-salt.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/102-chef.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/103-puppet.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/100-practical-patterns.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/100-practical-patterns-antipatterns.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/101-skytools-pgq.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/102-bulk-load-process-data.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning-sharding-patterns.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/104-data-normalization-normal-forms.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/100-process-memory-arch.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/101-vacuum-processing.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/102-buffer-management.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/103-lock-management.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/104-physical-storage-and-file-layout.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/105-system-catalog.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/100-per-user-per-database-settings.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/101-storage-parameters.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/102-workload-dependant-tuning.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/100-pl-pgsql.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/101-procedures-and-functions.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/102-triggers.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/103-recursive-cte.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/104-aggregate-and-window-functions.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/110-advanced-topics/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/100-pg-stat-activity.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/101-pg-stat-statements.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/100-pt-center.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/100-top.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/101-sysstat.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/102-iotop.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/100-explain.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/101-depesz.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/102-pev.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/103-tenser.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/100-gdb.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/101-strace.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/102-ebpf.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/103-perf-tools.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/104-core-dumps.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/100-use.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/101-red.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/102-golden-signals.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/100-pg-badger.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/101-awk.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/102-grep.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/103-sed.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/100-b-tree.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/101-hash.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/102-gist.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/103-sp-gist.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/104-gin.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/105-brin.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/101-schema-design-patterns.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/102-schema-query-patterns.md create mode 100644 src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/100-mailing-lists.md create mode 100644 src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/101-reviewing-patches.md create mode 100644 src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/102-writing-patches.md create mode 100644 src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/index.md diff --git a/public/jsons/roadmaps/postgresql-dba.json b/public/jsons/roadmaps/postgresql-dba.json new file mode 100644 index 000000000..3ded7569a --- /dev/null +++ b/public/jsons/roadmaps/postgresql-dba.json @@ -0,0 +1 @@ +{"mockup":{"controls":{"control":[{"ID":"641","typeID":"Label","zOrder":"87","measuredW":"152","measuredH":"36","x":"666","y":"181","properties":{"size":"28","text":"PostgreSQL"}},{"ID":"646","typeID":"Arrow","zOrder":"88","w":"1","h":"84","measuredW":"150","measuredH":"100","x":"741","y":"86","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":-0.3333333333333428},"p1":{"x":0.5,"y":0},"p2":{"x":0,"y":84}}},{"ID":"700","typeID":"Arrow","zOrder":"86","w":"191","h":"1","measuredW":"150","measuredH":"100","x":"352","y":"686","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962663953,"y":0},"p1":{"x":0.5,"y":0},"p2":{"x":191,"y":0}}},{"ID":"701","typeID":"Arrow","zOrder":"85","w":"1","h":"94","measuredW":"150","measuredH":"100","x":"355","y":"691","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962663953,"y":0.3919582050954773},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0.4271178962663953,"y":94.47632623201923}}},{"ID":"702","typeID":"Arrow","zOrder":"84","w":"1","h":"78","measuredW":"150","measuredH":"100","x":"640","y":"707","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962663953,"y":0},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":0.4271178962663953,"y":78.47632623201923}}},{"ID":"703","typeID":"Arrow","zOrder":"83","w":"171","h":"258","measuredW":"150","measuredH":"100","x":"571","y":"414","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":171,"y":0},"p1":{"x":0.5854320642684712,"y":0.23339886429384038},"p2":{"x":0.008847042366596725,"y":257.51497904447774}}},{"ID":"704","typeID":"Arrow","zOrder":"82","w":"172","h":"1","measuredW":"150","measuredH":"100","x":"753","y":"686","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":-0.11774307773505654},"p1":{"x":0.5000000000000002,"y":2.0577493387487696e-32},"p2":{"x":171.58708306717926,"y":-0.11774307773504233}}},{"ID":"982","typeID":"Arrow","zOrder":"81","w":"1","h":"147","measuredW":"150","measuredH":"100","x":"1077","y":"613","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":-0.12826052131362076},"p1":{"x":0.5,"y":0},"p2":{"x":0,"y":147.29881929523685}}},{"ID":"985","typeID":"Arrow","zOrder":"80","w":"128","h":"1","measuredW":"150","measuredH":"100","x":"1107","y":"685","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":128.3182218608979,"y":0},"p1":{"x":0.5000000000000001,"y":0},"p2":{"x":0,"y":0}}},{"ID":"986","typeID":"Canvas","zOrder":"115","w":"189","h":"189","measuredW":"100","measuredH":"70","x":"1199","y":"592"},{"ID":"987","typeID":"Label","zOrder":"116","measuredW":"140","measuredH":"24","x":"1224","y":"603","properties":{"size":"16","text":"Managing Postgres"}},{"ID":"997","typeID":"Arrow","zOrder":"79","w":"1","h":"213","measuredW":"150","measuredH":"100","x":"946","y":"690","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":212.3884650838079},"p1":{"x":0.5000000000000002,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.11774307773504233}}},{"ID":"1027","typeID":"Arrow","zOrder":"74","w":"1","h":"106","measuredW":"150","measuredH":"100","x":"1158","y":"912","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":106.43592685891701},"p1":{"x":0.5000000000000001,"y":0},"p2":{"x":0,"y":0}}},{"ID":"1028","typeID":"Arrow","zOrder":"73","w":"1","h":"106","measuredW":"150","measuredH":"100","x":"1309","y":"912","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0,"y":106.43592685891701},"p1":{"x":0.5000000000000001,"y":0},"p2":{"x":0,"y":0}}},{"ID":"1029","typeID":"Arrow","zOrder":"72","w":"258","h":"1","measuredW":"150","measuredH":"100","x":"946","y":"903","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.49987434137158676,"y":0.00022818425917650698},"p2":{"x":258,"y":0}}},{"ID":"1030","typeID":"Arrow","zOrder":"71","w":"258","h":"1","measuredW":"150","measuredH":"100","x":"946","y":"920","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":0},"p1":{"x":0.49987434137158676,"y":0.00022818425917650698},"p2":{"x":258,"y":0}}},{"ID":"1031","typeID":"Arrow","zOrder":"127","w":"1","h":"571","measuredW":"150","measuredH":"100","x":"946","y":"920","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":570.8537254716314},"p1":{"x":0.5000000000000002,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.11774307773504233}}},{"ID":"1048","typeID":"Arrow","zOrder":"69","w":"128","h":"1","measuredW":"150","measuredH":"100","x":"734","y":"1141","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":128.3182218608979,"y":0},"p1":{"x":0.5000000000000001,"y":0},"p2":{"x":0,"y":0},"color":"10027263"}},{"ID":"1049","typeID":"Label","zOrder":"137","measuredW":"180","measuredH":"25","x":"530","y":"1116","properties":{"text":"Following {color:blue}postgres.conf{color}","size":"17"}},{"ID":"1050","typeID":"Label","zOrder":"138","measuredW":"186","measuredH":"25","x":"530","y":"1143","properties":{"text":"configurations and more","size":"17"}},{"ID":"1051","typeID":"Canvas","zOrder":"136","w":"245","h":"79","measuredW":"100","measuredH":"70","x":"508","y":"1102"},{"ID":"1069","typeID":"Arrow","zOrder":"68","w":"1","h":"191","measuredW":"150","measuredH":"100","x":"557","y":"1051","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":0.4271178962663953,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0.4271178962663953,"y":190.66666666666663},"color":"10027263"}},{"ID":"1070","typeID":"Arrow","zOrder":"67","w":"188","h":"7","measuredW":"150","measuredH":"100","x":"364","y":"1119","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":0.4271178962663953,"y":0},"p1":{"x":0.5,"y":0},"p2":{"x":188.66666666666669,"y":6.666666666666629},"color":"10027263"}},{"ID":"1071","typeID":"Arrow","zOrder":"66","w":"189","h":"6","measuredW":"150","measuredH":"100","x":"374","y":"1158","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":0.4271178962663953,"y":6},"p1":{"x":0.5,"y":0},"p2":{"x":189.67849256059174,"y":0.26114628054824607},"color":"10027263"}},{"ID":"1072","typeID":"Arrow","zOrder":"65","w":"136","h":"92","measuredW":"150","measuredH":"100","x":"425","y":"1021","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":-0.3333333333333144,"y":0},"p1":{"x":0.4922100240848163,"y":-0.11071038048662066},"p2":{"x":135.72190217879785,"y":91.72550749825871},"color":"10027263"}},{"ID":"1073","typeID":"Arrow","zOrder":"64","w":"128","h":"41","measuredW":"150","measuredH":"100","x":"425","y":"1071","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":-0.3333333333333144,"y":0},"p1":{"x":0.4922100240848163,"y":-0.11071038048662071},"p2":{"x":127.66666666666669,"y":39.33333333333337},"color":"10027263"}},{"ID":"1074","typeID":"Arrow","zOrder":"63","w":"147","h":"44","measuredW":"150","measuredH":"100","x":"407","y":"1171","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":0.3333333333333144,"y":44},"p1":{"x":0.5300999629766752,"y":0.0764901888189561},"p2":{"x":147,"y":0},"color":"10027263"}},{"ID":"1075","typeID":"Arrow","zOrder":"62","w":"134","h":"98","measuredW":"150","measuredH":"100","x":"421","y":"1172","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":-0.3333333333333144,"y":97.66666666666663},"p1":{"x":0.5069805639200657,"y":0.10073911853271315},"p2":{"x":134.13752000020185,"y":-0.3173254102676992},"color":"10027263"}},{"ID":"1076","typeID":"Arrow","zOrder":"147","w":"176","h":"1","measuredW":"150","measuredH":"100","x":"770","y":"1491","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0.4483238886820118,"y":-0.11774307773521286},"p1":{"x":0.5000000000000002,"y":0},"p2":{"x":176.47256858280025,"y":-0.11774307773521286}}},{"ID":"1100","typeID":"Arrow","zOrder":"61","w":"191","h":"1","measuredW":"150","measuredH":"100","x":"406","y":"1501","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962663953,"y":0},"p1":{"x":0.5,"y":0},"p2":{"x":191,"y":0}}},{"ID":"1101","typeID":"Arrow","zOrder":"60","w":"117","h":"40","measuredW":"150","measuredH":"100","x":"449","y":"1450","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.45411869987805176,"y":-0.38780237568789744},"p1":{"x":0.5058786326070862,"y":-0.07078943628709435},"p2":{"x":116.60131496868928,"y":40.02419258131749}}},{"ID":"1102","typeID":"Arrow","zOrder":"59","w":"127","h":"34","measuredW":"150","measuredH":"100","x":"454","y":"1512","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.11994957005373408,"y":33.764875280635124},"p1":{"x":0.48226186491714973,"y":0.07717329440735292},"p2":{"x":126.93000271100163,"y":0.32046566104463636}}},{"ID":"1103","typeID":"Arrow","zOrder":"58","w":"1","h":"191","measuredW":"150","measuredH":"100","x":"628","y":"1406","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962663953,"y":0},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0.4271178962663953,"y":190.66666666666663}}},{"ID":"1104","typeID":"Arrow","zOrder":"57","w":"165","h":"1","measuredW":"150","measuredH":"100","x":"780","y":"1509","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0.4483238886820118,"y":-0.11774307773521286},"p1":{"x":0.5000000000000002,"y":0},"p2":{"x":165.74959169655313,"y":-0.11774307773521286}}},{"ID":"1107","typeID":"Arrow","zOrder":"56","w":"1","h":"287","measuredW":"150","measuredH":"100","x":"946","y":"1509","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":286.97930395280105},"p1":{"x":0.5000000000000001,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.11774307773504233}}},{"ID":"1124","typeID":"Canvas","zOrder":"55","w":"235","h":"157","measuredW":"100","measuredH":"70","x":"1160","y":"2016"},{"ID":"1125","typeID":"Label","zOrder":"167","measuredW":"87","measuredH":"24","x":"1214","y":"1947","properties":{"size":"16","text":"Builtin Tools"}},{"ID":"1127","typeID":"Arrow","zOrder":"54","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"1257","y":"1965","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1128","typeID":"Label","zOrder":"168","measuredW":"66","measuredH":"24","x":"1046","y":"1947","properties":{"size":"16","text":"3rd Party"}},{"ID":"1129","typeID":"Arrow","zOrder":"49","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"1078","y":"1969","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1130","typeID":"Canvas","zOrder":"50","w":"188","h":"157","measuredW":"100","measuredH":"70","x":"977","y":"2016"},{"ID":"1140","typeID":"Arrow","zOrder":"52","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"1078","y":"1882","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1141","typeID":"Arrow","zOrder":"51","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"1257","y":"1885","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1150","typeID":"Arrow","zOrder":"48","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"849","y":"1894","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1163","typeID":"Arrow","zOrder":"180","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"849","y":"2079","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1170","typeID":"Arrow","zOrder":"184","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"595","y":"1894","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1177","typeID":"Arrow","zOrder":"188","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"542","y":"2078","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1189","typeID":"Arrow","zOrder":"47","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"641","y":"2082","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1190","typeID":"Arrow","zOrder":"194","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"354","y":"1894","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1201","typeID":"Arrow","zOrder":"46","w":"102","h":"42","measuredW":"150","measuredH":"100","x":"701","y":"1744","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.3637224596427586,"y":0.4123432898111332},"p1":{"x":0.5571092804064476,"y":-0.10882932503976735},"p2":{"x":101.56767757191813,"y":41.71540129516461}}},{"ID":"1202","typeID":"Arrow","zOrder":"45","w":"1","measuredW":"150","measuredH":"100","x":"1007","y":"1792","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.4999999999999998,"y":0},"p2":{"x":0.4271178962662816,"y":99.26706104101345}}},{"ID":"1203","typeID":"Arrow","zOrder":"44","w":"1","measuredW":"150","measuredH":"100","x":"857","y":"1792","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.4999999999999998,"y":0},"p2":{"x":0.4271178962662816,"y":99.26706104101345}}},{"ID":"1204","typeID":"Arrow","zOrder":"43","w":"1","h":"302","measuredW":"150","measuredH":"100","x":"1256","y":"1587","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":0.2815709355738818},"p1":{"x":0.4999999999999999,"y":0},"p2":{"x":0.4271178962662816,"y":302.26706104101345}}},{"ID":"1205","typeID":"Arrow","zOrder":"42","w":"404","h":"1","measuredW":"150","measuredH":"100","x":"415","y":"1889","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962663953,"y":0},"p1":{"x":0.5,"y":0},"p2":{"x":404.698868282416,"y":0}}},{"ID":"1206","typeID":"Arrow","zOrder":"41","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"850","y":"2011","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1207","typeID":"Arrow","zOrder":"40","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"594","y":"2011","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1209","typeID":"Arrow","zOrder":"39","w":"620","h":"1","measuredW":"150","measuredH":"100","x":"232","y":"1799","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0.13465453284504747,"y":-0.11774307773521286},"p1":{"x":0.5000000000000002,"y":0},"p2":{"x":619.7495916965531,"y":-0.11774307773521286}}},{"ID":"1210","typeID":"Arrow","zOrder":"200","w":"1","h":"492","measuredW":"150","measuredH":"100","x":"232","y":"1800","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":491.5072332031234},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.4750232346368648}}},{"ID":"1211","typeID":"Arrow","zOrder":"201","w":"1151","h":"1","measuredW":"150","measuredH":"100","x":"232","y":"2292","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0.13465453284504747,"y":-0.11774307773521286},"p1":{"x":0.5000000000000001,"y":0},"p2":{"x":1150.9611057996974,"y":-0.11774307773521286}}},{"ID":"1220","typeID":"Arrow","zOrder":"38","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"437","y":"2305","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1221","typeID":"Arrow","zOrder":"37","w":"1","h":"54","measuredW":"150","measuredH":"100","x":"434","y":"2426","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":2.753189908645436e-31},"p2":{"x":0.4271178962663953,"y":53.66666666666663}}},{"ID":"1239","typeID":"Label","zOrder":"214","measuredW":"110","measuredH":"24","x":"627","y":"2488","properties":{"size":"16","text":"Migration Tools"}},{"ID":"1241","typeID":"Canvas","zOrder":"36","w":"146","h":"164","measuredW":"100","measuredH":"70","x":"611","y":"2359"},{"ID":"1252","typeID":"Canvas","zOrder":"218","w":"146","h":"126","measuredW":"100","measuredH":"70","x":"608","y":"2684"},{"ID":"1260","typeID":"Arrow","zOrder":"35","w":"1","h":"97","measuredW":"150","measuredH":"100","x":"681","y":"2293","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":0},"p2":{"x":0.4271178962662816,"y":96.57440424601737}}},{"ID":"1279","typeID":"Arrow","zOrder":"34","w":"1","h":"97","measuredW":"150","measuredH":"100","x":"999","y":"2292","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.49999999999999983,"y":0},"p2":{"x":0.4271178962662816,"y":96.57440424601737}}},{"ID":"1300","typeID":"Arrow","zOrder":"240","w":"1","h":"873","measuredW":"150","measuredH":"100","x":"1382","y":"2293","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":872.4114173726703},"p1":{"x":0.4999999999999997,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.11774307773504233}}},{"ID":"1301","typeID":"Arrow","zOrder":"241","w":"446","h":"1","measuredW":"150","measuredH":"100","x":"936","y":"3166","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":0,"y":-0.11774307773521286},"p1":{"x":0.49999999999999994,"y":0},"p2":{"x":446,"y":-0.11774307773521286}}},{"ID":"1386","typeID":"Arrow","zOrder":"16","w":"202","h":"1","measuredW":"150","measuredH":"100","x":"678","y":"3164","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.32381396365008186,"y":0},"p1":{"x":0.5,"y":0},"p2":{"x":201.71787682058277,"y":0}}},{"ID":"1387","typeID":"Arrow","zOrder":"15","w":"1","h":"295","measuredW":"150","measuredH":"100","x":"874","y":"3166","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":295.29969269717276},"p1":{"x":0.4999999999999998,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.11774307773504233}}},{"ID":"1390","typeID":"Arrow","zOrder":"14","w":"202","h":"1","measuredW":"150","measuredH":"100","x":"548","y":"3377","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.32381396365008186,"y":0},"p1":{"x":0.5,"y":0},"p2":{"x":201.71787682058277,"y":0}}},{"ID":"1405","typeID":"Arrow","zOrder":"13","w":"1","h":"142","measuredW":"150","measuredH":"100","x":"417","y":"3306","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.4999999999999997,"y":0},"p2":{"x":0.4271178962662816,"y":141.20936950191117}}},{"ID":"1406","typeID":"Arrow","zOrder":"12","w":"1","h":"142","measuredW":"150","measuredH":"100","x":"510","y":"3305","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.4999999999999997,"y":0},"p2":{"x":0.4271178962662816,"y":141.20936950191117}}},{"ID":"1407","typeID":"Arrow","zOrder":"11","w":"1","h":"142","measuredW":"150","measuredH":"100","x":"602","y":"3305","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.4271178962662816,"y":-0.5},"p1":{"x":0.4999999999999997,"y":0},"p2":{"x":0.4271178962662816,"y":141.20936950191117}}},{"ID":"1412","typeID":"Arrow","zOrder":"10","w":"202","h":"1","measuredW":"150","measuredH":"100","x":"884","y":"3378","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.32381396365008186,"y":0},"p1":{"x":0.5,"y":0},"p2":{"x":201.71787682058277,"y":0}}},{"ID":"1413","typeID":"Arrow","zOrder":"9","w":"88","h":"36","measuredW":"150","measuredH":"100","x":"971","y":"3331","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":-0.03706521841161248,"y":35.08533148408014},"p1":{"x":0.47748925835979983,"y":-0.13076779376050712},"p2":{"x":87.61231135982212,"y":0.2833731368405097}}},{"ID":"1417","typeID":"Arrow","zOrder":"8","w":"1","h":"162","measuredW":"150","measuredH":"100","x":"740","y":"232","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":161.3884650838079},"p1":{"x":0.5000000000000004,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.2593697375390036}}},{"ID":"1426","typeID":"Arrow","zOrder":"7","w":"140","h":"60","measuredW":"150","measuredH":"100","x":"841","y":"341","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":140.74379514298448,"y":-0.18824991656077827},"p1":{"x":0.523254983210688,"y":0.10945202543402179},"p2":{"x":0.2470003337568869,"y":59.10397541577379}}},{"ID":"1427","typeID":"Arrow","zOrder":"6","w":"134","h":"21","measuredW":"150","measuredH":"100","x":"849","y":"389","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":134.03275656325263,"y":-0.49667736663946016},"p1":{"x":0.49455143506411814,"y":0.05494286199591283},"p2":{"x":-0.01923114463420461,"y":20.126705357650792}}},{"ID":"1428","typeID":"Arrow","zOrder":"5","w":"129","h":"12","measuredW":"150","measuredH":"100","x":"858","y":"424","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":128.8996408240571,"y":12.194895183281858},"p1":{"x":0.525055137952002,"y":-0.03353659581377254},"p2":{"x":0.0034987972427416025,"y":0.5942424008685521}}},{"ID":"1429","typeID":"Arrow","zOrder":"4","w":"129","h":"54","measuredW":"150","measuredH":"100","x":"853","y":"430","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":128.74379514298448,"y":53.88646773320312},"p1":{"x":0.3624836784055758,"y":-0.08803194020926222},"p2":{"x":-0.15234688382986405,"y":-0.24991191805889912}}},{"ID":"1438","typeID":"Arrow","zOrder":"3","w":"171","h":"2","measuredW":"150","measuredH":"100","x":"943","y":"3457","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.2502642458233595,"y":-0.2116722737659984},"p1":{"x":0.5,"y":0},"p2":{"x":171.71787682058277,"y":2}}},{"ID":"1439","typeID":"Arrow","zOrder":"1","w":"125","h":"50","measuredW":"150","measuredH":"100","x":"966","y":"3466","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.45156981064997126,"y":-0.1889423318889385},"p1":{"x":0.6037511436413536,"y":0.08810612991765832},"p2":{"x":125.48082757665975,"y":50.08055305856897}}},{"ID":"1440","typeID":"Arrow","zOrder":"2","w":"134","h":"85","measuredW":"150","measuredH":"100","x":"957","y":"3475","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","color":"10027263","p0":{"x":0.42883986877291136,"y":-0.1662123900118786},"p1":{"x":0.5387556024255216,"y":0.1207487476931185},"p2":{"x":134.48082757665975,"y":84.90524134768566}}},{"ID":"1442","typeID":"Arrow","zOrder":"0","w":"1","h":"104","measuredW":"150","measuredH":"100","x":"874","y":"3459","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":104.19580709381944},"p1":{"x":0.4999999999999998,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.11774307773504233}}},{"ID":"1443","typeID":"Label","zOrder":"274","measuredW":"161","measuredH":"32","x":"794","y":"3575","properties":{"size":"24","text":"Keep Learning"}},{"ID":"1444","typeID":"Arrow","zOrder":"275","w":"1","h":"67","measuredW":"150","measuredH":"100","x":"874","y":"3634","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","color":"10027263","p0":{"x":-0.4129169328207354,"y":67},"p1":{"x":0.4999999999999997,"y":0},"p2":{"x":-0.4129169328207354,"y":-0.11774307773504233},"stroke":"dotted"}},{"ID":"1445","typeID":"Arrow","zOrder":"276","w":"171","h":"2","measuredW":"150","measuredH":"100","x":"777","y":"3771","properties":{"curvature":"0","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":0.2502642458233595,"y":-0.2116722737659984},"p1":{"x":0.5,"y":0},"p2":{"x":171.71787682058277,"y":2},"color":"16777215"}},{"ID":"1446","typeID":"Canvas","zOrder":"277","w":"350","h":"141","measuredW":"100","measuredH":"70","x":"975","y":"134"},{"ID":"1447","typeID":"Label","zOrder":"278","measuredW":"314","measuredH":"25","x":"989","y":"151","properties":{"size":"17","text":"Find the detailed version of this roadmap"}},{"ID":"1448","typeID":"Label","zOrder":"279","measuredW":"319","measuredH":"25","x":"989","y":"179","properties":{"size":"17","text":"along with resources and other roadmaps"}},{"ID":"1449","typeID":"__group__","zOrder":"280","measuredW":"320","measuredH":"45","w":"320","h":"45","x":"990","y":"215","properties":{"controlName":"ext_link:roadmap.sh"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"320","h":"45","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"borderColor":"4273622","color":"4273622"}},{"ID":"2","typeID":"Label","zOrder":"1","measuredW":"172","measuredH":"28","x":"74","y":"8","properties":{"color":"16777215","size":"20","text":"https://roadmap.sh"}}]}}},{"ID":"1450","typeID":"Canvas","zOrder":"281","w":"300","h":"141","measuredW":"100","measuredH":"70","x":"261","y":"130"},{"ID":"1451","typeID":"__group__","zOrder":"282","measuredW":"181","measuredH":"25","w":"181","h":"25","x":"284","y":"192","properties":{"controlName":"ext_link:roadmap.sh/mongodb"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"148","measuredH":"24","x":"33","y":"0","properties":{"size":"16","text":"MongoDB Roadmap"}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"2","typeID":"Icon","zOrder":"2","measuredW":"24","measuredH":"24","x":"0","y":"1","properties":{"icon":{"ID":"check-circle","size":"small"},"color":"10066329"}}]}}},{"ID":"1452","typeID":"Label","zOrder":"283","measuredW":"175","measuredH":"28","x":"286","y":"151","properties":{"size":"20","text":"Related Roadmaps"}},{"ID":"1453","typeID":"__group__","zOrder":"284","measuredW":"172","measuredH":"25","w":"172","h":"25","x":"284","y":"225","properties":{"controlName":"ext_link:roadmap.sh/backend"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"139","measuredH":"24","x":"33","y":"0","properties":{"size":"16","text":"Backend Roadmap"}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"2","typeID":"Icon","zOrder":"2","measuredW":"24","measuredH":"24","x":"0","y":"1","properties":{"icon":{"ID":"check-circle","size":"small"},"color":"10066329"}}]}}},{"ID":"1744","typeID":"__group__","zOrder":"285","measuredW":"300","measuredH":"54","w":"300","h":"54","x":"261","y":"288","properties":{"controlName":"100-roadmap-note"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"300","h":"54","measuredW":"200","measuredH":"140","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"199","measuredH":"24","x":"50","y":"15","properties":{"text":"Important Note / Click here","size":"16"}},{"ID":"2","typeID":"__group__","zOrder":"2","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"18","y":"18","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"icon":{"ID":"check-circle","size":"small"},"color":"13576743"}}]}}}]}}},{"ID":"1746","typeID":"__group__","zOrder":"265","measuredW":"269","measuredH":"49","w":"269","h":"49","x":"604","y":"391","properties":{"controlName":"101-introduction"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"269","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"25","x":"88","y":"12","properties":{"size":"17","text":"Introduction"}}]}}},{"ID":"1747","typeID":"__group__","zOrder":"89","measuredW":"269","measuredH":"49","w":"269","h":"49","x":"506","y":"662","properties":{"controlName":"102-rdbms-concepts"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"269","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"187","measuredH":"25","x":"41","y":"12","properties":{"text":"Basic RDBMS Concepts","size":"17"}}]}}},{"ID":"1748","typeID":"__group__","zOrder":"111","measuredW":"247","measuredH":"49","w":"247","h":"49","x":"876","y":"662","properties":{"controlName":"103-installation-and-setup"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"247","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"166","measuredH":"25","x":"41","y":"12","properties":{"size":"17","text":"Installation and Setup"}}]}}},{"ID":"1749","typeID":"__group__","zOrder":"121","measuredW":"303","measuredH":"49","w":"303","h":"49","x":"1085","y":"887","properties":{"controlName":"104-learn-sql-concepts"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"303","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"161","measuredH":"25","x":"71","y":"12","properties":{"size":"17","text":"Learn SQL Concepts"}}]}}},{"ID":"1751","typeID":"__group__","zOrder":"135","measuredW":"240","measuredH":"49","w":"240","h":"49","x":"791","y":"1117","properties":{"controlName":"105-configuring-postgresql"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"240","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"186","measuredH":"25","x":"27","y":"12","properties":{"size":"17","text":"Configuring PostgreSQL"}}]}}},{"ID":"1752","typeID":"__group__","zOrder":"148","measuredW":"245","measuredH":"49","w":"245","h":"49","x":"547","y":"1477","properties":{"controlName":"106-postgresql-security-concepts"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"245","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"211","measuredH":"25","x":"17","y":"12","properties":{"size":"17","text":"Postgres Security Concepts"}}]}}},{"ID":"1753","typeID":"__group__","zOrder":"159","measuredW":"278","measuredH":"49","w":"278","h":"49","x":"788","y":"1771","properties":{"controlName":"107-postgresql-infrastructure-skills"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"278","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"216","measuredH":"25","x":"31","y":"12","properties":{"size":"17","text":"Develop Infrastructure Skills"}}]}}},{"ID":"1754","typeID":"__group__","zOrder":"202","measuredW":"274","measuredH":"49","w":"274","h":"49","x":"294","y":"2268","properties":{"controlName":"108-learn-automation"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"274","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"215","measuredH":"25","x":"29","y":"12","properties":{"size":"17","text":"Learn to Automate Routines"}}]}}},{"ID":"1755","typeID":"__group__","zOrder":"210","measuredW":"274","measuredH":"49","w":"274","h":"49","x":"627","y":"2268","properties":{"controlName":"109-application-skills"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"274","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"128","measuredH":"25","x":"73","y":"12","properties":{"size":"17","text":"Application Skills"}}]}}},{"ID":"1756","typeID":"__group__","zOrder":"222","measuredW":"299","measuredH":"49","w":"299","h":"49","x":"949","y":"2268","properties":{"controlName":"110-advanced-topics"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"299","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"25","x":"85","y":"12","properties":{"size":"17","text":"Advanced Topics"}}]}}},{"ID":"1757","typeID":"__group__","zOrder":"242","measuredW":"252","measuredH":"49","w":"252","h":"49","x":"792","y":"3141","properties":{"controlName":"111-troubleshooting-techniques"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"252","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"216","measuredH":"25","x":"18","y":"12","properties":{"size":"17","text":"Troubleshooting Techniques"}}]}}},{"ID":"1758","typeID":"__group__","zOrder":"255","measuredW":"265","measuredH":"49","w":"265","h":"49","x":"726","y":"3353","properties":{"controlName":"112-sql-optimization-techniques"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"265","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"227","measuredH":"25","x":"19","y":"12","properties":{"size":"17","text":"SQL Optimization Techniques"}}]}}},{"ID":"1759","typeID":"__group__","zOrder":"270","measuredW":"265","measuredH":"49","w":"265","h":"49","x":"725","y":"3435","properties":{"controlName":"113-get-involved-in-development"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"265","h":"49","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"222","measuredH":"25","x":"22","y":"12","properties":{"size":"17","text":"Get Involved in Development"}}]}}},{"ID":"1760","typeID":"__group__","zOrder":"266","measuredW":"290","measuredH":"42","w":"290","h":"42","x":"974","y":"321","properties":{"controlName":"100-introduction:what-are-relational-databases"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"290","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"233","measuredH":"24","x":"28","y":"9","properties":{"size":"16","text":"What are Relational Databases?"}}]}}},{"ID":"1761","typeID":"__group__","zOrder":"267","measuredW":"290","measuredH":"42","w":"290","h":"42","x":"974","y":"367","properties":{"controlName":"101-introduction:rdbms-benefits-limitations"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"290","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"236","measuredH":"24","x":"27","y":"9","properties":{"size":"16","text":"RDBMS Benefits and Limitations"}}]}}},{"ID":"1762","typeID":"__group__","zOrder":"268","measuredW":"290","measuredH":"42","w":"290","h":"42","x":"974","y":"412","properties":{"controlName":"102-introduction:postgresql-vs-others"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"290","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"214","measuredH":"24","x":"38","y":"9","properties":{"size":"16","text":"PostgreSQL vs Other RDBMS"}}]}}},{"ID":"1763","typeID":"__group__","zOrder":"269","measuredW":"290","measuredH":"42","w":"290","h":"42","x":"974","y":"458","properties":{"controlName":"103-introduction:postgresql-vs-nosql"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"290","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"246","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"PostgreSQL vs NoSQL Databases"}}]}}},{"ID":"1764","typeID":"__group__","zOrder":"90","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"259","y":"666","properties":{"controlName":"100-rdbms-concepts:object-model"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"98","measuredH":"24","x":"43","y":"9","properties":{"text":"Object Model","size":"16"}}]}}},{"ID":"1765","typeID":"__group__","zOrder":"99","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"259","y":"756","properties":{"controlName":"101-rdbms-concepts:relational-model"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"123","measuredH":"24","x":"30","y":"9","properties":{"size":"16","text":"Relational Model"}}]}}},{"ID":"1766","typeID":"__group__","zOrder":"106","measuredW":"269","measuredH":"42","w":"269","h":"42","x":"506","y":"758","properties":{"controlName":"102-rdbms-concepts:high-level-database-concepts"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"269","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"225","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"High Level Database Concepts"}}]}}},{"ID":"1767","typeID":"__group__","zOrder":"97","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"259","y":"620","properties":{"controlName":"100-rdbms-concepts:object-model:databases"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"78","measuredH":"24","x":"53","y":"9","properties":{"size":"16","text":"Databases"}}]}}},{"ID":"1768","typeID":"__group__","zOrder":"95","measuredW":"82","measuredH":"42","w":"82","h":"42","x":"259","y":"574","properties":{"controlName":"101-rdbms-concepts:object-model:tables"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"82","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"47","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"Tables"}}]}}},{"ID":"1770","typeID":"__group__","zOrder":"96","measuredW":"99","measuredH":"42","w":"99","h":"42","x":"344","y":"574","properties":{"controlName":"102-rdbms-concepts:object-model:schemas"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"99","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"67","measuredH":"24","x":"16","y":"9","properties":{"size":"16","text":"Schemas"}}]}}},{"ID":"1771","typeID":"__group__","zOrder":"93","measuredW":"82","measuredH":"42","w":"82","h":"42","x":"259","y":"529","properties":{"controlName":"103-rdbms-concepts:object-model:rows"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"82","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"40","measuredH":"24","x":"21","y":"9","properties":{"size":"16","text":"Rows"}}]}}},{"ID":"1772","typeID":"__group__","zOrder":"94","measuredW":"99","measuredH":"42","w":"99","h":"42","x":"344","y":"529","properties":{"controlName":"104-rdbms-concepts:object-model:columns"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"99","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"64","measuredH":"24","x":"18","y":"9","properties":{"size":"16","text":"Columns"}}]}}},{"ID":"1773","typeID":"__group__","zOrder":"92","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"259","y":"484","properties":{"controlName":"105-rdbms-concepts:object-model:data-types"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"81","measuredH":"24","x":"51","y":"9","properties":{"size":"16","text":"Data Types"}}]}}},{"ID":"1774","typeID":"__group__","zOrder":"98","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"259","y":"439","properties":{"controlName":"106-rdbms-concepts:object-model:queries"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"58","measuredH":"24","x":"63","y":"9","properties":{"size":"16","text":"Queries"}}]}}},{"ID":"1775","typeID":"__group__","zOrder":"100","measuredW":"92","measuredH":"42","w":"92","h":"42","x":"258","y":"803","properties":{"controlName":"100-rdbms-concepts:relational-model:domains"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"92","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"64","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"Domains"}}]}}},{"ID":"1776","typeID":"__group__","zOrder":"101","measuredW":"89","measuredH":"42","w":"89","h":"42","x":"354","y":"803","properties":{"controlName":"101-rdbms-concepts:relational-model:attributes"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"89","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"70","measuredH":"24","x":"10","y":"9","properties":{"size":"16","text":"Attributes"}}]}}},{"ID":"1777","typeID":"__group__","zOrder":"102","measuredW":"92","measuredH":"42","w":"92","h":"42","x":"258","y":"849","properties":{"controlName":"102-rdbms-concepts:relational-model:tuples"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"92","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"48","measuredH":"24","x":"24","y":"9","properties":{"size":"16","text":"Tuples"}}]}}},{"ID":"1779","typeID":"__group__","zOrder":"103","measuredW":"89","measuredH":"42","w":"89","h":"42","x":"354","y":"849","properties":{"controlName":"103-rdbms-concepts:relational-model:relations"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"89","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"69","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Relations"}}]}}},{"ID":"1780","typeID":"__group__","zOrder":"104","measuredW":"106","measuredH":"42","w":"106","h":"42","x":"258","y":"895","properties":{"controlName":"104-rdbms-concepts:relational-model:constraints"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"106","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"83","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Constraints"}}]}}},{"ID":"1781","typeID":"__group__","zOrder":"105","measuredW":"73","measuredH":"42","w":"73","h":"42","x":"370","y":"895","properties":{"controlName":"105-rdbms-concepts:relational-model:null"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"73","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"43","measuredH":"24","x":"15","y":"9","properties":{"size":"16","text":"NULL"}}]}}},{"ID":"1782","typeID":"__group__","zOrder":"107","measuredW":"64","measuredH":"42","w":"64","h":"42","x":"506","y":"805","properties":{"controlName":"100-rdbms-concepts:high-level-database-concepts:acid"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"64","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"38","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"ACID"}}]}}},{"ID":"1783","typeID":"__group__","zOrder":"108","measuredW":"74","measuredH":"42","w":"74","h":"42","x":"575","y":"805","properties":{"controlName":"101-rdbms-concepts:high-level-database-concepts:mvcc"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"74","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"46","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"MVCC"}}]}}},{"ID":"1784","typeID":"__group__","zOrder":"109","measuredW":"122","measuredH":"42","w":"122","h":"42","x":"653","y":"805","properties":{"controlName":"102-rdbms-concepts:high-level-database-concepts:transactions"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"122","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"Transactions"}}]}}},{"ID":"1785","typeID":"__group__","zOrder":"110","measuredW":"269","measuredH":"42","w":"269","h":"42","x":"506","y":"851","properties":{"controlName":"103-rdbms-concepts:high-level-database-concepts:write-ahead-log"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"269","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"122","measuredH":"24","x":"74","y":"9","properties":{"size":"16","text":"Write-ahead Log"}}]}}},{"ID":"1786","typeID":"__group__","zOrder":"91","measuredW":"269","measuredH":"42","w":"269","h":"42","x":"506","y":"897","properties":{"controlName":"104-rdbms-concepts:high-level-database-concepts:query-processing"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"269","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"128","measuredH":"24","x":"71","y":"9","properties":{"size":"16","text":"Query Processing"}}]}}},{"ID":"1788","typeID":"__group__","zOrder":"112","measuredW":"180","measuredH":"42","w":"180","h":"42","x":"975","y":"583","properties":{"controlName":"100-installation-and-setup:package-managers"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"180","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"141","measuredH":"24","x":"19","y":"9","properties":{"size":"16","text":"Package Managers"}}]}}},{"ID":"1789","typeID":"__group__","zOrder":"113","measuredW":"180","measuredH":"42","w":"180","h":"42","x":"975","y":"537","properties":{"controlName":"101-installation-and-setup:using-docker"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"180","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"98","measuredH":"24","x":"41","y":"9","properties":{"size":"16","text":"Using Docker"}}]}}},{"ID":"1790","typeID":"__group__","zOrder":"114","measuredW":"189","measuredH":"42","w":"189","h":"42","x":"973","y":"745","properties":{"controlName":"102-installation-and-setup:connect-using-psql"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"189","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"146","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"Connect using `psql`"}}]}}},{"ID":"1791","typeID":"__group__","zOrder":"120","measuredW":"189","measuredH":"42","w":"189","h":"42","x":"973","y":"791","properties":{"controlName":"103-installation-and-setup:deployment-in-cloud"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"189","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"150","measuredH":"24","x":"20","y":"9","properties":{"size":"16","text":"Deployment in Cloud"}}]}}},{"ID":"1792","typeID":"__group__","zOrder":"117","measuredW":"170","measuredH":"42","w":"170","h":"42","x":"1209","y":"635","properties":{"controlName":"104-installation-and-setup:using-systemd"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"170","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"112","measuredH":"24","x":"29","y":"9","properties":{"size":"16","text":"Using `systemd`"}}]}}},{"ID":"1793","typeID":"__group__","zOrder":"118","measuredW":"170","measuredH":"42","w":"170","h":"42","x":"1209","y":"682","properties":{"controlName":"105-installation-and-setup:using-pgctl"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"170","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"98","measuredH":"24","x":"36","y":"9","properties":{"size":"16","text":"Using `pg_ctl`"}}]}}},{"ID":"1794","typeID":"__group__","zOrder":"119","measuredW":"170","measuredH":"42","w":"170","h":"42","x":"1209","y":"728","properties":{"controlName":"106-installation-and-setup:using-pgctlcluster"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"170","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Using `pg_ctlcluster`"}}]}}},{"ID":"1795","typeID":"__group__","zOrder":"75","measuredW":"154","measuredH":"241","w":"154","h":"241","x":"1085","y":"969","properties":{"controlName":"100-learn-sql-concepts:ddl-queries"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"154","h":"241","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"95","measuredH":"24","x":"29","y":"13","properties":{"size":"16","text":"DDL Queries"}}]}}},{"ID":"1796","typeID":"__group__","zOrder":"77","measuredW":"130","measuredH":"42","w":"130","h":"42","x":"1096","y":"1013","properties":{"controlName":"100-learn-sql-concepts:ddl-queries:for-schemas"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"130","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"95","measuredH":"24","x":"19","y":"9","properties":{"size":"16","text":"For Schemas"}}]}}},{"ID":"1797","typeID":"__group__","zOrder":"78","measuredW":"130","measuredH":"42","w":"130","h":"42","x":"1096","y":"1059","properties":{"controlName":"101-learn-sql-concepts:ddl-queries:for-tables"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"130","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"75","measuredH":"24","x":"29","y":"9","properties":{"size":"16","text":"For Tables"}}]}}},{"ID":"1798","typeID":"__group__","zOrder":"76","measuredW":"130","measuredH":"42","w":"130","h":"42","x":"1097","y":"1106","properties":{"controlName":"102-learn-sql-concepts:ddl-queries:data-types"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"130","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"81","measuredH":"24","x":"24","y":"9","properties":{"size":"16","text":"Data Types"}}]}}},{"ID":"1799","typeID":"__group__","zOrder":"122","measuredW":"154","measuredH":"234","w":"154","h":"234","x":"1234","y":"969","properties":{"controlName":"101-learn-sql-concepts:dml-queries"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"154","h":"234","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"97","measuredH":"24","x":"28","y":"14","properties":{"size":"16","text":"DML Queries"}}]}}},{"ID":"1800","typeID":"__group__","zOrder":"123","measuredW":"132","measuredH":"42","w":"132","h":"42","x":"1245","y":"1013","properties":{"controlName":"100-learn-sql-concepts:dml-queries:querying-data"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"132","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"Querying Data"}}]}}},{"ID":"1801","typeID":"__group__","zOrder":"125","measuredW":"132","measuredH":"42","w":"132","h":"42","x":"1245","y":"1059","properties":{"controlName":"101-learn-sql-concepts:dml-queries:filtering-data"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"132","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"98","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"Filtering Data"}}]}}},{"ID":"1802","typeID":"__group__","zOrder":"124","measuredW":"132","measuredH":"42","w":"132","h":"42","x":"1245","y":"1105","properties":{"controlName":"102-learn-sql-concepts:dml-queries:modifying-data"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"132","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"109","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Modifying Data"}}]}}},{"ID":"1803","typeID":"__group__","zOrder":"126","measuredW":"130","measuredH":"42","w":"130","h":"42","x":"1246","y":"1151","properties":{"controlName":"103-learn-sql-concepts:dml-queries:joining-tables"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"130","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"103","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"Joining Tables"}}]}}},{"ID":"1804","typeID":"__group__","zOrder":"128","measuredW":"303","measuredH":"42","w":"303","h":"42","x":"1085","y":"1200","properties":{"controlName":"102-learn-sql-concepts:import-export-using-copy"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"303","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"208","measuredH":"24","x":"48","y":"9","properties":{"size":"16","text":"Import / Export using `COPY`"}}]}}},{"ID":"1805","typeID":"__group__","zOrder":"70","measuredW":"304","measuredH":"202","w":"304","h":"202","x":"1084","y":"1238","properties":{"controlName":"103-learn-sql-concepts:advanced-topics"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"304","h":"202","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"122","measuredH":"24","x":"91","y":"18","properties":{"size":"16","text":"Advanced Topics"}}]}}},{"ID":"1806","typeID":"__group__","zOrder":"129","measuredW":"130","measuredH":"42","w":"130","h":"42","x":"1098","y":"1289","properties":{"controlName":"100-learn-sql-concepts:advanced-topics:transactions"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"130","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"24","x":"18","y":"9","properties":{"size":"16","text":"Transactions"}}]}}},{"ID":"1807","typeID":"__group__","zOrder":"130","measuredW":"141","measuredH":"42","w":"141","h":"42","x":"1234","y":"1289","properties":{"controlName":"101-learn-sql-concepts:advanced-topics:cte"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"141","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"32","measuredH":"24","x":"55","y":"9","properties":{"size":"16","text":"CTE"}}]}}},{"ID":"1808","typeID":"__group__","zOrder":"131","measuredW":"130","measuredH":"42","w":"130","h":"42","x":"1098","y":"1337","properties":{"controlName":"102-learn-sql-concepts:advanced-topics:subqueries"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"130","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"83","measuredH":"24","x":"23","y":"9","properties":{"size":"16","text":"Subqueries"}}]}}},{"ID":"1809","typeID":"__group__","zOrder":"132","measuredW":"141","measuredH":"42","w":"141","h":"42","x":"1234","y":"1337","properties":{"controlName":"103-learn-sql-concepts:advanced-topics:lateral-join"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"141","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"84","measuredH":"24","x":"29","y":"9","properties":{"size":"16","text":"Lateral Join"}}]}}},{"ID":"1810","typeID":"__group__","zOrder":"133","measuredW":"130","measuredH":"42","w":"130","h":"42","x":"1098","y":"1384","properties":{"controlName":"104-learn-sql-concepts:advanced-topics:grouping"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"130","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"67","measuredH":"24","x":"31","y":"9","properties":{"size":"16","text":"Grouping"}}]}}},{"ID":"1811","typeID":"__group__","zOrder":"134","measuredW":"141","measuredH":"42","w":"141","h":"42","x":"1234","y":"1384","properties":{"controlName":"105-learn-sql-concepts:advanced-topics:set-operations"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"141","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"109","measuredH":"24","x":"16","y":"9","properties":{"size":"16","text":"Set Operations"}}]}}},{"ID":"1812","typeID":"__group__","zOrder":"153","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"548","y":"1402","properties":{"controlName":"100-postgresql-security-concepts:object-priviliges"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"117","measuredH":"24","x":"33","y":"9","properties":{"size":"16","text":"Object Priviliges"}}]}}},{"ID":"1813","typeID":"__group__","zOrder":"156","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"548","y":"1562","properties":{"controlName":"101-postgresql-security-concepts:advanced-topics"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"122","measuredH":"24","x":"31","y":"9","properties":{"size":"16","text":"Advanced Topics"}}]}}},{"ID":"1814","typeID":"__group__","zOrder":"154","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"548","y":"1357","properties":{"controlName":"100-postgresql-security-concepts:object-priviliges:grant-revoke"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"111","measuredH":"24","x":"36","y":"9","properties":{"size":"16","text":"Grant / Revoke"}}]}}},{"ID":"1815","typeID":"__group__","zOrder":"155","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"548","y":"1312","properties":{"controlName":"101-postgresql-security-concepts:object-priviliges:default-priviliges"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"127","measuredH":"24","x":"28","y":"9","properties":{"size":"16","text":"Default Privileges"}}]}}},{"ID":"1816","typeID":"__group__","zOrder":"157","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"548","y":"1608","properties":{"controlName":"100-postgresql-security-concepts:advanced-topics:row-level-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"138","measuredH":"24","x":"23","y":"9","properties":{"size":"16","text":"Row-Level Security"}}]}}},{"ID":"1817","typeID":"__group__","zOrder":"158","measuredW":"184","measuredH":"42","w":"184","h":"42","x":"548","y":"1653","properties":{"controlName":"101-postgresql-security-concepts:advanced-topics:selinux"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"184","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"59","measuredH":"24","x":"62","y":"9","properties":{"size":"16","text":"SELinux"}}]}}},{"ID":"1818","typeID":"__group__","zOrder":"149","measuredW":"202","measuredH":"42","w":"202","h":"42","x":"259","y":"1436","properties":{"controlName":"102-postgresql-security-concepts:authentication-models"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"202","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"162","measuredH":"24","x":"20","y":"9","properties":{"size":"16","text":"Authentication Models"}}]}}},{"ID":"1819","typeID":"__group__","zOrder":"150","measuredW":"76","measuredH":"42","w":"76","h":"42","x":"259","y":"1481","properties":{"controlName":"103-postgresql-security-concepts:roles"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"76","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"42","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"Roles"}}]}}},{"ID":"1820","typeID":"__group__","zOrder":"151","measuredW":"122","measuredH":"42","w":"122","h":"42","x":"339","y":"1481","properties":{"controlName":"104-postgresql-security-concepts:pg-hba-conf"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"122","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"91","measuredH":"24","x":"15","y":"9","properties":{"size":"16","text":"pg_hba.conf"}}]}}},{"ID":"1821","typeID":"__group__","zOrder":"152","measuredW":"202","measuredH":"42","w":"202","h":"42","x":"259","y":"1526","properties":{"controlName":"105-postgresql-security-concepts:ssl-settings"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"202","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"92","measuredH":"24","x":"55","y":"9","properties":{"size":"16","text":"SSL Settings"}}]}}},{"ID":"1822","typeID":"__group__","zOrder":"160","measuredW":"221","measuredH":"143","w":"221","h":"143","x":"1148","y":"1502","properties":{"controlName":"100-postgresql-infrastructure-skills:replication"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"221","h":"143","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"82","measuredH":"24","x":"70","y":"108","properties":{"size":"16","text":"Replication"}}]}}},{"ID":"1823","typeID":"__group__","zOrder":"177","measuredW":"221","measuredH":"143","w":"221","h":"143","x":"1146","y":"1679","properties":{"controlName":"101-postgresql-infrastructure-skills:connection-pooling"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"221","h":"143","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"141","measuredH":"24","x":"40","y":"108","properties":{"size":"16","text":"Connection Pooling"}}]}}},{"ID":"1824","typeID":"__group__","zOrder":"53","measuredW":"418","measuredH":"47","w":"418","h":"47","x":"977","y":"1866","properties":{"controlName":"102-postgresql-infrastructure-skills:backup-recovery-tools"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"418","h":"47","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"180","measuredH":"24","x":"120","y":"12","properties":{"size":"16","text":"Backup / Recovery Tools"}}]}}},{"ID":"1825","typeID":"__group__","zOrder":"174","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"745","y":"1868","properties":{"controlName":"103-postgresql-infrastructure-skills:upgrade-procedures"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"152","measuredH":"24","x":"30","y":"9","properties":{"size":"16","text":"Upgrade Procedures"}}]}}},{"ID":"1826","typeID":"__group__","zOrder":"185","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"491","y":"1868","properties":{"controlName":"104-postgresql-infrastructure-skills:cluster-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"153","measuredH":"24","x":"29","y":"9","properties":{"size":"16","text":"Cluster Management"}}]}}},{"ID":"1827","typeID":"__group__","zOrder":"195","measuredW":"197","measuredH":"42","w":"197","h":"42","x":"264","y":"1868","properties":{"controlName":"105-postgresql-infrastructure-skills:kubernetes-deployment"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"197","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"175","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Kubernetes Deployment"}}]}}},{"ID":"1828","typeID":"__group__","zOrder":"181","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"745","y":"2053","properties":{"controlName":"106-postgresql-infrastructure-skills:monitoring"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"78","measuredH":"24","x":"67","y":"9","properties":{"size":"16","text":"Monitoring"}}]}}},{"ID":"1829","typeID":"__group__","zOrder":"189","measuredW":"301","measuredH":"42","w":"301","h":"42","x":"426","y":"2052","properties":{"controlName":"107-postgresql-infrastructure-skills:load-balancing"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"301","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"262","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"Load Balancing & Service Discovery"}}]}}},{"ID":"1830","typeID":"__group__","zOrder":"162","measuredW":"194","measuredH":"42","w":"194","h":"42","x":"1162","y":"1514","properties":{"controlName":"100-postgresql-infrastructure-skills:replication:logical-replication"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"194","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"139","measuredH":"24","x":"27","y":"9","properties":{"size":"16","text":"Logical Replication"}}]}}},{"ID":"1831","typeID":"__group__","zOrder":"161","measuredW":"194","measuredH":"42","w":"194","h":"42","x":"1162","y":"1560","properties":{"controlName":"101-postgresql-infrastructure-skills:replication:streaming-replication"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"194","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"160","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"Streaming Replication"}}]}}},{"ID":"1832","typeID":"__group__","zOrder":"179","measuredW":"194","measuredH":"42","w":"194","h":"42","x":"1160","y":"1691","properties":{"controlName":"100-postgresql-infrastructure-skills:connection-pooling:pg-bouncer"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"194","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"81","measuredH":"24","x":"56","y":"9","properties":{"size":"16","text":"PgBouncer"}}]}}},{"ID":"1833","typeID":"__group__","zOrder":"178","measuredW":"194","measuredH":"42","w":"194","h":"42","x":"1160","y":"1737","properties":{"controlName":"101-postgresql-infrastructure-skills:connection-pooling:pg-bouncer-alternatives"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"194","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"170","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"PgBouncer Alternatives"}}]}}},{"ID":"1834","typeID":"__group__","zOrder":"169","measuredW":"81","measuredH":"42","w":"81","h":"42","x":"986","y":"2027","properties":{"controlName":"100-postgresql-infrastructure-skills:backup-recovery-tools:barman"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"81","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"56","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"barman"}}]}}},{"ID":"1835","typeID":"__group__","zOrder":"172","measuredW":"80","measuredH":"42","w":"80","h":"42","x":"1072","y":"2027","properties":{"controlName":"101-postgresql-infrastructure-skills:backup-recovery-tools:wal-g"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"80","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"51","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"WAL-G"}}]}}},{"ID":"1836","typeID":"__group__","zOrder":"170","measuredW":"166","measuredH":"42","w":"166","h":"42","x":"986","y":"2073","properties":{"controlName":"102-postgresql-infrastructure-skills:backup-recovery-tools:pgbackrest"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"166","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"81","measuredH":"24","x":"42","y":"9","properties":{"size":"16","text":"pgbackrest"}}]}}},{"ID":"1837","typeID":"__group__","zOrder":"171","measuredW":"166","measuredH":"42","w":"166","h":"42","x":"986","y":"2118","properties":{"controlName":"103-postgresql-infrastructure-skills:backup-recovery-tools:pg-probackup"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"166","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"24","x":"30","y":"9","properties":{"size":"16","text":"pg_probackup"}}]}}},{"ID":"1838","typeID":"__group__","zOrder":"163","measuredW":"103","measuredH":"42","w":"103","h":"42","x":"1169","y":"2027","properties":{"controlName":"104-postgresql-infrastructure-skills:backup-recovery-tools:pg-dump"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"103","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"69","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"pg_dump"}}]}}},{"ID":"1839","typeID":"__group__","zOrder":"164","measuredW":"108","measuredH":"42","w":"108","h":"42","x":"1277","y":"2027","properties":{"controlName":"105-postgresql-infrastructure-skills:backup-recovery-tools:pg-dumpall"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"108","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"86","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"pg_dumpall"}}]}}},{"ID":"1840","typeID":"__group__","zOrder":"165","measuredW":"216","measuredH":"42","w":"216","h":"42","x":"1169","y":"2074","properties":{"controlName":"106-postgresql-infrastructure-skills:backup-recovery-tools:pg-restore"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"216","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"81","measuredH":"24","x":"67","y":"9","properties":{"size":"16","text":"pg_restore"}}]}}},{"ID":"1841","typeID":"__group__","zOrder":"166","measuredW":"216","measuredH":"42","w":"216","h":"42","x":"1169","y":"2120","properties":{"controlName":"107-postgresql-infrastructure-skills:backup-recovery-tools:pg-basebackup"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"216","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"117","measuredH":"24","x":"49","y":"9","properties":{"size":"16","text":"pg_basebackup"}}]}}},{"ID":"1842","typeID":"__group__","zOrder":"173","measuredW":"418","measuredH":"42","w":"418","h":"42","x":"977","y":"2169","properties":{"controlName":"108-postgresql-infrastructure-skills:backup-recovery-tools:backup-validation-procedures"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"418","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"217","measuredH":"24","x":"98","y":"9","properties":{"size":"16","text":"Backup Validation Procedures"}}]}}},{"ID":"1843","typeID":"__group__","zOrder":"175","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"745","y":"1938","properties":{"controlName":"100-postgresql-infrastructure-skills:upgrade-procedures:using-pg-upgrade"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"142","measuredH":"24","x":"35","y":"9","properties":{"size":"16","text":"Using `pg_upgrade`"}}]}}},{"ID":"1844","typeID":"__group__","zOrder":"176","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"745","y":"1984","properties":{"controlName":"101-postgresql-infrastructure-skills:upgrade-procedures:using-logical-replication"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"184","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"Using Logical Replication"}}]}}},{"ID":"1845","typeID":"__group__","zOrder":"186","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"491","y":"1938","properties":{"controlName":"100-postgresql-infrastructure-skills:cluster-management:patroni"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"51","measuredH":"24","x":"80","y":"9","properties":{"size":"16","text":"Patroni"}}]}}},{"ID":"1846","typeID":"__group__","zOrder":"187","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"491","y":"1984","properties":{"controlName":"101-postgresql-infrastructure-skills:cluster-management:patroni-alternatives"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"140","measuredH":"24","x":"36","y":"9","properties":{"size":"16","text":"Patroni Alternatives"}}]}}},{"ID":"1847","typeID":"__group__","zOrder":"196","measuredW":"197","measuredH":"42","w":"197","h":"42","x":"264","y":"1938","properties":{"controlName":"100-postgresql-infrastructure-skills:kubernetes-deployment:simple-stateful-setup"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"197","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"154","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"Simple Stateful Setup"}}]}}},{"ID":"1848","typeID":"__group__","zOrder":"197","measuredW":"86","measuredH":"42","w":"86","h":"42","x":"264","y":"1985","properties":{"controlName":"101-postgresql-infrastructure-skills:kubernetes-deployment:helm"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"86","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"38","measuredH":"24","x":"24","y":"9","properties":{"size":"16","text":"Helm"}}]}}},{"ID":"1849","typeID":"__group__","zOrder":"198","measuredW":"104","measuredH":"42","w":"104","h":"42","x":"358","y":"1985","properties":{"controlName":"102-postgresql-infrastructure-skills:kubernetes-deployment:operators"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"104","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"74","measuredH":"24","x":"20","y":"9","properties":{"size":"16","text":"Operators"}}]}}},{"ID":"1850","typeID":"__group__","zOrder":"190","measuredW":"106","measuredH":"42","w":"106","h":"42","x":"484","y":"2122","properties":{"controlName":"100-postgresql-infrastructure-skills:load-balancing:ha-proxy"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"106","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"61","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"HAProxy"}}]}}},{"ID":"1851","typeID":"__group__","zOrder":"192","measuredW":"91","measuredH":"42","w":"91","h":"42","x":"595","y":"2122","properties":{"controlName":"101-postgresql-infrastructure-skills:load-balancing:consul"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"91","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"50","measuredH":"24","x":"21","y":"9","properties":{"size":"16","text":"Consul"}}]}}},{"ID":"1852","typeID":"__group__","zOrder":"191","measuredW":"106","measuredH":"42","w":"106","h":"42","x":"484","y":"2168","properties":{"controlName":"102-postgresql-infrastructure-skills:load-balancing:keep-alived"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"106","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"81","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"KeepAlived"}}]}}},{"ID":"1853","typeID":"__group__","zOrder":"193","measuredW":"91","measuredH":"42","w":"91","h":"42","x":"595","y":"2169","properties":{"controlName":"103-postgresql-infrastructure-skills:load-balancing:etcd"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"91","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"33","measuredH":"24","x":"29","y":"9","properties":{"size":"16","text":"Etcd"}}]}}},{"ID":"1854","typeID":"__group__","zOrder":"182","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"745","y":"2123","properties":{"controlName":"100-postgresql-infrastructure-skills:monitoring:prometheus"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"88","measuredH":"24","x":"62","y":"9","properties":{"size":"16","text":"Prometheus"}}]}}},{"ID":"1855","typeID":"__group__","zOrder":"183","measuredW":"211","measuredH":"42","w":"211","h":"42","x":"745","y":"2169","properties":{"controlName":"101-postgresql-infrastructure-skills:monitoring:zabbix"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"211","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"49","measuredH":"24","x":"81","y":"9","properties":{"size":"16","text":"Zabbix"}}]}}},{"ID":"1856","typeID":"__group__","zOrder":"203","measuredW":"274","measuredH":"42","w":"274","h":"42","x":"294","y":"2347","properties":{"controlName":"100-learn-automation:shell-scripts"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"274","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"89","measuredH":"24","x":"92","y":"9","properties":{"size":"16","text":"Shell Scripts"}}]}}},{"ID":"1857","typeID":"__group__","zOrder":"204","measuredW":"274","measuredH":"42","w":"274","h":"42","x":"294","y":"2393","properties":{"controlName":"101-learn-automation:programming-language"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"274","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"204","measuredH":"24","x":"35","y":"9","properties":{"size":"16","text":"Any Programming Language"}}]}}},{"ID":"1858","typeID":"__group__","zOrder":"205","measuredW":"274","measuredH":"42","w":"274","h":"42","x":"294","y":"2464","properties":{"controlName":"102-learn-automation:configuration-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"274","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"198","measuredH":"24","x":"38","y":"9","properties":{"size":"16","text":"Configuration Management"}}]}}},{"ID":"1859","typeID":"__group__","zOrder":"206","measuredW":"75","measuredH":"42","w":"75","h":"42","x":"294","y":"2512","properties":{"controlName":"100-learn-automation:configuration-management:ansible"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"75","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"53","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Ansible"}}]}}},{"ID":"1860","typeID":"__group__","zOrder":"207","measuredW":"53","measuredH":"42","w":"53","h":"42","x":"374","y":"2512","properties":{"controlName":"101-learn-automation:configuration-management:salt"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"53","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"28","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"Salt"}}]}}},{"ID":"1861","typeID":"__group__","zOrder":"208","measuredW":"57","measuredH":"42","w":"57","h":"42","x":"431","y":"2512","properties":{"controlName":"102-learn-automation:configuration-management:chef"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"57","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"35","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Chef"}}]}}},{"ID":"1862","typeID":"__group__","zOrder":"209","measuredW":"75","measuredH":"42","w":"75","h":"42","x":"493","y":"2512","properties":{"controlName":"103-learn-automation:configuration-management:puppet"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"75","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"52","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"Puppet"}}]}}},{"ID":"1863","typeID":"__group__","zOrder":"211","measuredW":"109","measuredH":"42","w":"109","h":"42","x":"627","y":"2347","properties":{"controlName":"100-application-skills:migrations"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"109","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"76","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"Migrations"}}]}}},{"ID":"1864","typeID":"__group__","zOrder":"219","measuredW":"109","measuredH":"42","w":"109","h":"42","x":"619","y":"2665","properties":{"controlName":"101-application-skills:queues"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"109","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"58","measuredH":"24","x":"26","y":"9","properties":{"size":"16","text":"Queues"}}]}}},{"ID":"1865","typeID":"__group__","zOrder":"215","measuredW":"297","measuredH":"42","w":"297","h":"42","x":"609","y":"2528","properties":{"controlName":"102-application-skills:bulk-load-process-data"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"297","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"249","measuredH":"24","x":"24","y":"9","properties":{"size":"16","text":"Bulk Loading and Processing Data"}}]}}},{"ID":"1866","typeID":"__group__","zOrder":"216","measuredW":"297","measuredH":"42","w":"297","h":"42","x":"609","y":"2573","properties":{"controlName":"103-application-skills:data-partitioning-sharding-patterns"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"297","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"265","measuredH":"24","x":"16","y":"9","properties":{"size":"16","text":"Data Partitioning / Sharding Patterns"}}]}}},{"ID":"1867","typeID":"__group__","zOrder":"217","measuredW":"297","measuredH":"42","w":"297","h":"42","x":"609","y":"2619","properties":{"controlName":"104-application-skills:data-normalization-normal-forms"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"297","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"257","measuredH":"24","x":"20","y":"9","properties":{"size":"16","text":"Data Normalization / Normal Forms"}}]}}},{"ID":"1868","typeID":"__group__","zOrder":"212","measuredW":"279","measuredH":"42","w":"279","h":"42","x":"627","y":"2396","properties":{"controlName":"100-application-skills:migrations:practical-patterns"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"279","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"252","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"Practical Patterns and Antipatterns"}}]}}},{"ID":"1869","typeID":"__group__","zOrder":"213","measuredW":"279","measuredH":"42","w":"279","h":"42","x":"627","y":"2442","properties":{"controlName":"101-application-skills:migrations:liquidbase-sqitch-bytebase"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"279","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"218","measuredH":"24","x":"31","y":"9","properties":{"size":"16","text":"liquibase, sqitch, Bytebase etc"}}]}}},{"ID":"1870","typeID":"__group__","zOrder":"220","measuredW":"279","measuredH":"42","w":"279","h":"42","x":"618","y":"2713","properties":{"controlName":"100-application-skills:queues:practical-patterns-antipatterns"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"279","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"252","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"Practical Patterns and Antipatterns"}}]}}},{"ID":"1871","typeID":"__group__","zOrder":"221","measuredW":"279","measuredH":"42","w":"279","h":"42","x":"618","y":"2758","properties":{"controlName":"101-application-skills:queues:skytools-pgq"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"279","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"99","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"Skytools PGQ"}}]}}},{"ID":"1872","typeID":"__group__","zOrder":"224","measuredW":"286","measuredH":"42","w":"286","h":"42","x":"962","y":"2409","properties":{"controlName":"100-advanced-topics:low-level-internals:process-memory-arch"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"286","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"261","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"Processes and memory architecture"}}]}}},{"ID":"1873","typeID":"__group__","zOrder":"225","measuredW":"286","measuredH":"42","w":"286","h":"42","x":"962","y":"2454","properties":{"controlName":"101-advanced-topics:low-level-internals:vacuum-processing"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"286","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"143","measuredH":"24","x":"71","y":"9","properties":{"size":"16","text":"Vacuum Processing"}}]}}},{"ID":"1874","typeID":"__group__","zOrder":"226","measuredW":"286","measuredH":"42","w":"286","h":"42","x":"962","y":"2499","properties":{"controlName":"102-advanced-topics:low-level-internals:buffer-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"286","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"144","measuredH":"24","x":"71","y":"9","properties":{"size":"16","text":"Buffer Management"}}]}}},{"ID":"1875","typeID":"__group__","zOrder":"227","measuredW":"286","measuredH":"42","w":"286","h":"42","x":"962","y":"2544","properties":{"controlName":"103-advanced-topics:low-level-internals:lock-management"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"286","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"135","measuredH":"24","x":"75","y":"9","properties":{"size":"16","text":"Lock Management"}}]}}},{"ID":"1876","typeID":"__group__","zOrder":"228","measuredW":"286","measuredH":"42","w":"286","h":"42","x":"962","y":"2589","properties":{"controlName":"104-advanced-topics:low-level-internals:physical-storage-and-file-layout"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"286","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"234","measuredH":"24","x":"26","y":"9","properties":{"size":"16","text":"Physical Storage and File Layout"}}]}}},{"ID":"1877","typeID":"__group__","zOrder":"229","measuredW":"286","measuredH":"42","w":"286","h":"42","x":"962","y":"2634","properties":{"controlName":"105-advanced-topics:low-level-internals:system-catalog"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"286","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"113","measuredH":"24","x":"86","y":"9","properties":{"size":"16","text":"System Catalog"}}]}}},{"ID":"1881","typeID":"__group__","zOrder":"223","measuredW":"169","measuredH":"330","w":"169","h":"330","x":"949","y":"2359","properties":{"controlName":"100-advanced-topics:low-level-internals"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"169","h":"330","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"140","measuredH":"24","x":"15","y":"15","properties":{"size":"16","text":"Low Level Internals"}}]}}},{"ID":"1882","typeID":"__group__","zOrder":"230","measuredW":"169","measuredH":"195","w":"169","h":"195","x":"950","y":"2696","properties":{"controlName":"101-advanced-topics:fine-grained-tuning"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"169","h":"195","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"24","x":"11","y":"14","properties":{"size":"16","text":"Fine Grained Tuning"}}]}}},{"ID":"1883","typeID":"__group__","zOrder":"234","measuredW":"169","measuredH":"195","w":"169","h":"195","x":"950","y":"2897","properties":{"controlName":"102-advanced-topics:advanced-sql"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"169","h":"195","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"107","measuredH":"24","x":"31","y":"14","properties":{"size":"16","text":"Advanced SQL"}}]}}},{"ID":"1884","typeID":"__group__","zOrder":"231","measuredW":"369","measuredH":"42","w":"369","h":"42","x":"962","y":"2743","properties":{"controlName":"100-advanced-topics:fine-grained-tuning:per-user-per-database-settings"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"369","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"232","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"Per-user, Per-Database Settings"}}]}}},{"ID":"1885","typeID":"__group__","zOrder":"232","measuredW":"369","measuredH":"42","w":"369","h":"42","x":"962","y":"2788","properties":{"controlName":"101-advanced-topics:fine-grained-tuning:storage-parameters"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"369","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"145","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"Storage Parameters"}}]}}},{"ID":"1886","typeID":"__group__","zOrder":"233","measuredW":"369","measuredH":"42","w":"369","h":"42","x":"962","y":"2834","properties":{"controlName":"102-advanced-topics:fine-grained-tuning:workload-dependant-tuning"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"369","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"341","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"Workload-dependant tuning: OLTP, OLAP, HTAP"}}]}}},{"ID":"1887","typeID":"__group__","zOrder":"235","measuredW":"103","measuredH":"42","w":"103","h":"42","x":"962","y":"2944","properties":{"controlName":"100-advanced-topics:advanced-sql:pl-pgsql"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"103","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"77","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"PL/pgSQL"}}]}}},{"ID":"1888","typeID":"__group__","zOrder":"238","measuredW":"219","measuredH":"42","w":"219","h":"42","x":"1069","y":"2944","properties":{"controlName":"101-advanced-topics:advanced-sql:procedures-and-functions"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"219","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"190","measuredH":"24","x":"14","y":"9","properties":{"size":"16","text":"Procedures and Functions"}}]}}},{"ID":"1889","typeID":"__group__","zOrder":"236","measuredW":"103","measuredH":"42","w":"103","h":"42","x":"962","y":"2989","properties":{"controlName":"102-advanced-topics:advanced-sql:triggers"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"103","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"61","measuredH":"24","x":"21","y":"9","properties":{"size":"16","text":"Triggers"}}]}}},{"ID":"1890","typeID":"__group__","zOrder":"239","measuredW":"219","measuredH":"42","w":"219","h":"42","x":"1069","y":"2989","properties":{"controlName":"103-advanced-topics:advanced-sql:recursive-cte"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"219","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"109","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"Recursive CTE"}}]}}},{"ID":"1891","typeID":"__group__","zOrder":"237","measuredW":"328","measuredH":"42","w":"328","h":"42","x":"962","y":"3035","properties":{"controlName":"104-advanced-topics:advanced-sql:aggregate-and-window-functions"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"328","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"234","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"Aggregate and window functions"}}]}}},{"ID":"1892","typeID":"__group__","zOrder":"243","measuredW":"209","measuredH":"135","w":"209","h":"135","x":"296","y":"2744","properties":{"controlName":"100-troubleshooting-techniques:system-views"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"209","h":"135","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"166","measuredH":"24","x":"21","y":"10","properties":{"size":"16","text":"Postgres System Views"}}]}}},{"ID":"1893","typeID":"__group__","zOrder":"32","measuredW":"209","measuredH":"96","w":"209","h":"96","x":"296","y":"2874","properties":{"controlName":"101-troubleshooting-techniques:tools"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"209","h":"96","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"24","x":"52","y":"12","properties":{"size":"16","text":"Postgres Tools"}}]}}},{"ID":"1894","typeID":"__group__","zOrder":"17","measuredW":"215","measuredH":"94","w":"215","h":"94","x":"501","y":"2876","properties":{"controlName":"102-troubleshooting-techniques:operating-system-tools"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"215","h":"94","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"171","measuredH":"24","x":"19","y":"11","properties":{"size":"16","text":"Operating System Tools"}}]}}},{"ID":"1895","typeID":"__group__","zOrder":"246","measuredW":"209","measuredH":"133","w":"209","h":"133","x":"296","y":"2967","properties":{"controlName":"103-troubleshooting-techniques:query-analysis"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"209","h":"133","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"106","measuredH":"24","x":"51","y":"9","properties":{"size":"16","text":"Query Analysis"}}]}}},{"ID":"1896","typeID":"__group__","zOrder":"21","measuredW":"215","measuredH":"133","w":"215","h":"133","x":"501","y":"2966","properties":{"controlName":"104-troubleshooting-techniques:profiling-tools"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"215","h":"133","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"100","measuredH":"24","x":"54","y":"8","properties":{"size":"16","text":"Profiling Tools"}}]}}},{"ID":"1897","typeID":"__group__","zOrder":"251","measuredW":"209","measuredH":"133","w":"209","h":"133","x":"296","y":"3096","properties":{"controlName":"105-troubleshooting-techniques:troubleshooting-methods"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"209","h":"133","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"184","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"Troubleshooting Methods"}}]}}},{"ID":"1898","typeID":"__group__","zOrder":"27","measuredW":"215","measuredH":"133","w":"215","h":"133","x":"501","y":"3096","properties":{"controlName":"106-troubleshooting-techniques:log-analysis"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"215","h":"133","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"90","measuredH":"24","x":"63","y":"8","properties":{"size":"16","text":"Log Analysis"}}]}}},{"ID":"1899","typeID":"__group__","zOrder":"244","measuredW":"190","measuredH":"42","w":"190","h":"42","x":"305","y":"2783","properties":{"controlName":"100-troubleshooting-techniques:system-views:pg-stat-activity"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"190","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"115","measuredH":"24","x":"37","y":"9","properties":{"size":"16","text":"pg_stat_activity"}}]}}},{"ID":"1900","typeID":"__group__","zOrder":"245","measuredW":"190","measuredH":"42","w":"190","h":"42","x":"305","y":"2827","properties":{"controlName":"101-troubleshooting-techniques:system-views:pg-stat-statements"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"190","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"146","measuredH":"24","x":"26","y":"9","properties":{"size":"16","text":"pg_stat_statements"}}]}}},{"ID":"1901","typeID":"__group__","zOrder":"33","measuredW":"189","measuredH":"42","w":"189","h":"42","x":"306","y":"2918","properties":{"controlName":"100-troubleshooting-techniques:tools:pt-center"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"189","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"61","measuredH":"24","x":"64","y":"9","properties":{"size":"16","text":"ptcenter"}}]}}},{"ID":"1902","typeID":"__group__","zOrder":"18","measuredW":"48","measuredH":"42","w":"48","h":"42","x":"511","y":"2918","properties":{"controlName":"100-troubleshooting-techniques:operating-system-tools:top"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"48","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"24","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"top"}}]}}},{"ID":"1903","typeID":"__group__","zOrder":"19","measuredW":"75","measuredH":"42","w":"75","h":"42","x":"563","y":"2918","properties":{"controlName":"101-troubleshooting-techniques:operating-system-tools:sysstat"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"75","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"50","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"sysstat"}}]}}},{"ID":"1904","typeID":"__group__","zOrder":"20","measuredW":"60","measuredH":"42","w":"60","h":"42","x":"641","y":"2918","properties":{"controlName":"102-troubleshooting-techniques:operating-system-tools:iotop"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"60","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"36","measuredH":"24","x":"12","y":"9","properties":{"size":"16","text":"iotop"}}]}}},{"ID":"1905","typeID":"__group__","zOrder":"247","measuredW":"97","measuredH":"42","w":"97","h":"42","x":"305","y":"3004","properties":{"controlName":"100-troubleshooting-techniques:query-analysis:explain"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"97","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"66","measuredH":"24","x":"16","y":"9","properties":{"size":"16","text":"EXPLAIN"}}]}}},{"ID":"1906","typeID":"__group__","zOrder":"248","measuredW":"87","measuredH":"42","w":"87","h":"42","x":"406","y":"3004","properties":{"controlName":"101-troubleshooting-techniques:query-analysis:depesz"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"87","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"56","measuredH":"24","x":"16","y":"9","properties":{"size":"16","text":"Depesz"}}]}}},{"ID":"1907","typeID":"__group__","zOrder":"249","measuredW":"97","measuredH":"42","w":"97","h":"42","x":"305","y":"3049","properties":{"controlName":"102-troubleshooting-techniques:query-analysis:pev"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"97","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"31","measuredH":"24","x":"33","y":"9","properties":{"size":"16","text":"PEV"}}]}}},{"ID":"1908","typeID":"__group__","zOrder":"250","measuredW":"87","measuredH":"42","w":"87","h":"42","x":"406","y":"3049","properties":{"controlName":"103-troubleshooting-techniques:query-analysis:tenser"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"87","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"50","measuredH":"24","x":"16","y":"9","properties":{"size":"16","text":"Tenser"}}]}}},{"ID":"1909","typeID":"__group__","zOrder":"22","measuredW":"57","measuredH":"42","w":"57","h":"42","x":"509","y":"3003","properties":{"controlName":"100-troubleshooting-techniques:profiling-tools:gdb"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"57","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"28","measuredH":"24","x":"15","y":"9","properties":{"size":"16","text":"gdb"}}]}}},{"ID":"1910","typeID":"__group__","zOrder":"25","measuredW":"68","measuredH":"42","w":"68","h":"42","x":"569","y":"3003","properties":{"controlName":"101-troubleshooting-techniques:profiling-tools:strace"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"68","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"46","measuredH":"24","x":"11","y":"9","properties":{"size":"16","text":"strace"}}]}}},{"ID":"1911","typeID":"__group__","zOrder":"26","measuredW":"67","measuredH":"42","w":"67","h":"42","x":"640","y":"3003","properties":{"controlName":"102-troubleshooting-techniques:profiling-tools:ebpf"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"67","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"33","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"ebpf"}}]}}},{"ID":"1912","typeID":"__group__","zOrder":"23","measuredW":"86","measuredH":"42","w":"86","h":"42","x":"509","y":"3048","properties":{"controlName":"103-troubleshooting-techniques:profiling-tools:perf-tools"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"86","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"70","measuredH":"24","x":"9","y":"9","properties":{"size":"16","text":"perf-tools"}}]}}},{"ID":"1913","typeID":"__group__","zOrder":"24","measuredW":"109","measuredH":"42","w":"109","h":"42","x":"598","y":"3048","properties":{"controlName":"104-troubleshooting-techniques:profiling-tools:core-dumps"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"109","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"91","measuredH":"24","x":"9","y":"9","properties":{"size":"16","text":"Core Dumps"}}]}}},{"ID":"1914","typeID":"__group__","zOrder":"252","measuredW":"97","measuredH":"42","w":"97","h":"42","x":"305","y":"3133","properties":{"controlName":"100-troubleshooting-techniques:troubleshooting-methods:use"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"97","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"32","measuredH":"24","x":"33","y":"9","properties":{"size":"16","text":"USE"}}]}}},{"ID":"1915","typeID":"__group__","zOrder":"253","measuredW":"87","measuredH":"42","w":"87","h":"42","x":"406","y":"3133","properties":{"controlName":"101-troubleshooting-techniques:troubleshooting-methods:red"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"87","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"34","measuredH":"24","x":"27","y":"9","properties":{"size":"16","text":"RED"}}]}}},{"ID":"1916","typeID":"__group__","zOrder":"254","measuredW":"188","measuredH":"42","w":"188","h":"42","x":"305","y":"3178","properties":{"controlName":"102-troubleshooting-techniques:troubleshooting-methods:golden-signals"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"188","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"109","measuredH":"24","x":"39","y":"9","properties":{"size":"16","text":"Golden Signals"}}]}}},{"ID":"1917","typeID":"__group__","zOrder":"28","measuredW":"196","measuredH":"42","w":"196","h":"42","x":"510","y":"3133","properties":{"controlName":"100-troubleshooting-techniques:log-analysis:pg-badger"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"196","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"73","measuredH":"24","x":"57","y":"9","properties":{"size":"16","text":"pgBadger"}}]}}},{"ID":"1918","typeID":"__group__","zOrder":"30","measuredW":"61","measuredH":"42","w":"61","h":"42","x":"510","y":"3178","properties":{"controlName":"101-troubleshooting-techniques:log-analysis:awk"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"61","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"28","measuredH":"24","x":"17","y":"9","properties":{"size":"16","text":"awk"}}]}}},{"ID":"1919","typeID":"__group__","zOrder":"29","measuredW":"69","measuredH":"42","w":"69","h":"42","x":"575","y":"3179","properties":{"controlName":"102-troubleshooting-techniques:log-analysis:grep"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"69","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"34","measuredH":"24","x":"18","y":"8","properties":{"size":"16","text":"grep"}}]}}},{"ID":"1920","typeID":"__group__","zOrder":"31","measuredW":"57","measuredH":"42","w":"57","h":"42","x":"649","y":"3178","properties":{"controlName":"103-troubleshooting-techniques:log-analysis:sed"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"57","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"27","measuredH":"24","x":"15","y":"9","properties":{"size":"16","text":"sed"}}]}}},{"ID":"1921","typeID":"__group__","zOrder":"256","measuredW":"270","measuredH":"42","w":"270","h":"42","x":"375","y":"3353","properties":{"controlName":"100-sql-optimization-techniques:indexes-usecases"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"270","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"202","measuredH":"24","x":"34","y":"9","properties":{"size":"16","text":"Indexes and their Usecases"}}]}}},{"ID":"1922","typeID":"__group__","zOrder":"264","measuredW":"320","measuredH":"42","w":"320","h":"42","x":"1049","y":"3313","properties":{"controlName":"101-sql-optimization-techniques:schema-design-patterns"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"320","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"289","measuredH":"24","x":"15","y":"9","properties":{"size":"16","text":"Schema Design Patterns / Anti-patterns"}}]}}},{"ID":"1923","typeID":"__group__","zOrder":"263","measuredW":"320","measuredH":"42","w":"320","h":"42","x":"1049","y":"3360","properties":{"controlName":"102-sql-optimization-techniques:schema-query-patterns"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"320","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"253","measuredH":"24","x":"33","y":"9","properties":{"size":"16","text":"SQL Query Patterns / Anti-patterns"}}]}}},{"ID":"1924","typeID":"__group__","zOrder":"257","measuredW":"87","measuredH":"42","w":"87","h":"42","x":"374","y":"3280","properties":{"controlName":"100-sql-optimization-techniques:indexes-usecases:b-tree"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"87","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"49","measuredH":"24","x":"19","y":"9","properties":{"size":"16","text":"B-Tree"}}]}}},{"ID":"1925","typeID":"__group__","zOrder":"258","measuredW":"87","measuredH":"42","w":"87","h":"42","x":"467","y":"3280","properties":{"controlName":"101-sql-optimization-techniques:indexes-usecases:hash"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"87","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"38","measuredH":"24","x":"25","y":"9","properties":{"size":"16","text":"Hash"}}]}}},{"ID":"1926","typeID":"__group__","zOrder":"259","measuredW":"87","measuredH":"42","w":"87","h":"42","x":"559","y":"3280","properties":{"controlName":"102-sql-optimization-techniques:indexes-usecases:gist"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"87","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"35","measuredH":"24","x":"26","y":"9","properties":{"size":"16","text":"GiST"}}]}}},{"ID":"1927","typeID":"__group__","zOrder":"260","measuredW":"87","measuredH":"42","w":"87","h":"42","x":"374","y":"3426","properties":{"controlName":"103-sql-optimization-techniques:indexes-usecases:sp-gist"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"87","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"61","measuredH":"24","x":"13","y":"9","properties":{"size":"16","text":"SP-GiST"}}]}}},{"ID":"1928","typeID":"__group__","zOrder":"261","measuredW":"84","measuredH":"42","w":"84","h":"42","x":"469","y":"3426","properties":{"controlName":"104-sql-optimization-techniques:indexes-usecases:gin"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"84","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"29","measuredH":"24","x":"27","y":"9","properties":{"size":"16","text":"GIN"}}]}}},{"ID":"1929","typeID":"__group__","zOrder":"262","measuredW":"84","measuredH":"42","w":"84","h":"42","x":"561","y":"3426","properties":{"controlName":"105-sql-optimization-techniques:indexes-usecases:brin"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"84","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"40","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"BRIN"}}]}}},{"ID":"1930","typeID":"__group__","zOrder":"271","measuredW":"178","measuredH":"42","w":"178","h":"42","x":"1082","y":"3432","properties":{"controlName":"100-get-involved-in-development:mailing-lists"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"178","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"91","measuredH":"24","x":"43","y":"9","properties":{"size":"16","text":"Mailing Lists"}}]}}},{"ID":"1931","typeID":"__group__","zOrder":"272","measuredW":"178","measuredH":"42","w":"178","h":"42","x":"1082","y":"3479","properties":{"controlName":"101-get-involved-in-development:reviewing-patches"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"178","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"137","measuredH":"24","x":"20","y":"9","properties":{"size":"16","text":"Reviewing Patches"}}]}}},{"ID":"1932","typeID":"__group__","zOrder":"273","measuredW":"178","measuredH":"42","w":"178","h":"42","x":"1082","y":"3526","properties":{"controlName":"102-get-involved-in-development:writing-patches"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"178","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"114","measuredH":"24","x":"32","y":"9","properties":{"size":"16","text":"Writing Patches"}}]}}},{"ID":"1933","typeID":"__group__","zOrder":"139","measuredW":"174","measuredH":"42","w":"174","h":"42","x":"259","y":"1004","properties":{"controlName":"100-configuring-postgresql:resources-usage"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"174","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"130","measuredH":"24","x":"22","y":"9","properties":{"size":"16","text":"Resources Usage"}}]}}},{"ID":"1934","typeID":"__group__","zOrder":"140","measuredW":"174","measuredH":"42","w":"174","h":"42","x":"259","y":"1050","properties":{"controlName":"101-configuring-postgresql:write-ahead-log"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"174","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"122","measuredH":"24","x":"26","y":"9","properties":{"size":"16","text":"Write-ahead Log"}}]}}},{"ID":"1935","typeID":"__group__","zOrder":"142","measuredW":"174","measuredH":"42","w":"174","h":"42","x":"259","y":"1097","properties":{"controlName":"102-configuring-postgresql:vacuums"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"174","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"66","measuredH":"24","x":"54","y":"9","properties":{"size":"16","text":"Vacuums"}}]}}},{"ID":"1936","typeID":"__group__","zOrder":"143","measuredW":"174","measuredH":"42","w":"174","h":"42","x":"259","y":"1143","properties":{"controlName":"103-configuring-postgresql:replication"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"174","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"82","measuredH":"24","x":"46","y":"9","properties":{"size":"16","text":"Replication"}}]}}},{"ID":"1938","typeID":"__group__","zOrder":"144","measuredW":"174","measuredH":"42","w":"174","h":"42","x":"259","y":"1189","properties":{"controlName":"104-configuring-postgresql:query-planner"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"174","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"104","measuredH":"24","x":"35","y":"9","properties":{"size":"16","text":"Query Planner"}}]}}},{"ID":"1939","typeID":"__group__","zOrder":"141","measuredW":"174","measuredH":"67","w":"174","h":"67","x":"259","y":"1235","properties":{"controlName":"105-configuring-postgresql:checkpoints-background-writer"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"174","h":"67","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"91","measuredH":"24","x":"41","y":"11","properties":{"size":"16","text":"Checkpoints"}},{"ID":"2","typeID":"Label","zOrder":"2","measuredW":"135","measuredH":"24","x":"21","y":"34","properties":{"size":"16","text":"Background Writer"}}]}}},{"ID":"1940","typeID":"__group__","zOrder":"146","measuredW":"283","measuredH":"42","w":"283","h":"42","x":"509","y":"1220","properties":{"controlName":"106-configuring-postgresql:adding-extensions"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"283","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"175","measuredH":"24","x":"54","y":"9","properties":{"size":"16","text":"Adding Extra Extensions"}}]}}},{"ID":"1941","typeID":"__group__","zOrder":"145","measuredW":"283","measuredH":"42","w":"283","h":"42","x":"509","y":"1023","properties":{"controlName":"107-configuring-postgresql:reporting-logging-statistics"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"283","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"236","measuredH":"24","x":"24","y":"9","properties":{"size":"16","text":"Reporting Logging and Statistics"}}]}}},{"ID":"1942","typeID":"__group__","zOrder":"199","measuredW":"427","measuredH":"42","w":"427","h":"42","x":"288","y":"1730","properties":{"controlName":"100-postgresql-infrastructure-skills:resource-usage-provisioing-capacity-planning"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"427","h":"42","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"382","measuredH":"24","x":"23","y":"9","properties":{"size":"16","text":"Resource Usage and Provisioning, Capacity Planning"}}]}}}]},"attributes":{"name":"New Wireframe 9 copy","order":1000116.0868550346,"parentID":null,"notes":null},"branchID":"Master","resourceID":"73A38172-E66F-4B8C-9525-DB6AC79E153D","mockupH":"3687","mockupW":"1163","measuredW":"1395","measuredH":"3773","version":"1.0"},"groupOffset":{"x":0,"y":0},"dependencies":[],"projectID":"file:///Users/kamranahmed/Desktop/AWS%20Roadmap.bmpr"} \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/100-roadmap-note.md b/src/data/roadmaps/postgresql-dba/content/100-roadmap-note.md new file mode 100644 index 000000000..86ae9ec47 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/100-roadmap-note.md @@ -0,0 +1 @@ +# Roadmap note \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/101-introduction/100-what-are-relational-databases.md b/src/data/roadmaps/postgresql-dba/content/101-introduction/100-what-are-relational-databases.md new file mode 100644 index 000000000..1949e0236 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/101-introduction/100-what-are-relational-databases.md @@ -0,0 +1 @@ +# What are relational databases \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/101-introduction/101-rdbms-benefits-limitations.md b/src/data/roadmaps/postgresql-dba/content/101-introduction/101-rdbms-benefits-limitations.md new file mode 100644 index 000000000..74c08a039 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/101-introduction/101-rdbms-benefits-limitations.md @@ -0,0 +1 @@ +# Rdbms benefits limitations \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/101-introduction/102-postgresql-vs-others.md b/src/data/roadmaps/postgresql-dba/content/101-introduction/102-postgresql-vs-others.md new file mode 100644 index 000000000..f99fbcc59 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/101-introduction/102-postgresql-vs-others.md @@ -0,0 +1 @@ +# Postgresql vs others \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/101-introduction/103-postgresql-vs-nosql.md b/src/data/roadmaps/postgresql-dba/content/101-introduction/103-postgresql-vs-nosql.md new file mode 100644 index 000000000..80985ad21 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/101-introduction/103-postgresql-vs-nosql.md @@ -0,0 +1 @@ +# Postgresql vs nosql \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/101-introduction/index.md b/src/data/roadmaps/postgresql-dba/content/101-introduction/index.md new file mode 100644 index 000000000..f6ecaa676 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/101-introduction/index.md @@ -0,0 +1 @@ +# Introduction \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/100-databases.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/100-databases.md new file mode 100644 index 000000000..602f6d863 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/100-databases.md @@ -0,0 +1 @@ +# Databases \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/101-tables.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/101-tables.md new file mode 100644 index 000000000..eedf1fdea --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/101-tables.md @@ -0,0 +1 @@ +# Tables \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/102-schemas.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/102-schemas.md new file mode 100644 index 000000000..274b019e0 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/102-schemas.md @@ -0,0 +1 @@ +# Schemas \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/103-rows.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/103-rows.md new file mode 100644 index 000000000..617b32d1d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/103-rows.md @@ -0,0 +1 @@ +# Rows \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/104-columns.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/104-columns.md new file mode 100644 index 000000000..40e3b1297 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/104-columns.md @@ -0,0 +1 @@ +# Columns \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/105-data-types.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/105-data-types.md new file mode 100644 index 000000000..c0d6b9473 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/105-data-types.md @@ -0,0 +1 @@ +# Data types \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/106-queries.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/106-queries.md new file mode 100644 index 000000000..1a34a389e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/106-queries.md @@ -0,0 +1 @@ +# Queries \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/index.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/index.md new file mode 100644 index 000000000..925aa96dc --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/100-object-model/index.md @@ -0,0 +1 @@ +# Object model \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/100-domains.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/100-domains.md new file mode 100644 index 000000000..01c80935a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/100-domains.md @@ -0,0 +1 @@ +# Domains \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/101-attributes.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/101-attributes.md new file mode 100644 index 000000000..0e216b907 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/101-attributes.md @@ -0,0 +1 @@ +# Attributes \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/102-tuples.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/102-tuples.md new file mode 100644 index 000000000..b6ab1501f --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/102-tuples.md @@ -0,0 +1 @@ +# Tuples \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/103-relations.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/103-relations.md new file mode 100644 index 000000000..0da88fa00 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/103-relations.md @@ -0,0 +1 @@ +# Relations \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/104-constraints.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/104-constraints.md new file mode 100644 index 000000000..857142d89 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/104-constraints.md @@ -0,0 +1 @@ +# Constraints \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/105-null.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/105-null.md new file mode 100644 index 000000000..30e17bd1a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/105-null.md @@ -0,0 +1 @@ +# Null \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/index.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/index.md new file mode 100644 index 000000000..0e7d777bb --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/101-relational-model/index.md @@ -0,0 +1 @@ +# Relational model \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/100-acid.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/100-acid.md new file mode 100644 index 000000000..727e552b0 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/100-acid.md @@ -0,0 +1 @@ +# Acid \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/101-mvcc.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/101-mvcc.md new file mode 100644 index 000000000..75c29643c --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/101-mvcc.md @@ -0,0 +1 @@ +# Mvcc \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/102-transactions.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/102-transactions.md new file mode 100644 index 000000000..0125c964d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/102-transactions.md @@ -0,0 +1 @@ +# Transactions \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/103-write-ahead-log.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/103-write-ahead-log.md new file mode 100644 index 000000000..f3d7455fc --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/103-write-ahead-log.md @@ -0,0 +1 @@ +# Write ahead log \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/104-query-processing.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/104-query-processing.md new file mode 100644 index 000000000..cbd91a12c --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/104-query-processing.md @@ -0,0 +1 @@ +# Query processing \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/index.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/index.md new file mode 100644 index 000000000..e0572639d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/102-high-level-database-concepts/index.md @@ -0,0 +1 @@ +# High level database concepts \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/index.md b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/index.md new file mode 100644 index 000000000..e69aa4359 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/102-rdbms-concepts/index.md @@ -0,0 +1 @@ +# Rdbms concepts \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/100-package-managers.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/100-package-managers.md new file mode 100644 index 000000000..72768f6f4 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/100-package-managers.md @@ -0,0 +1 @@ +# Package managers \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/101-using-docker.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/101-using-docker.md new file mode 100644 index 000000000..b11977916 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/101-using-docker.md @@ -0,0 +1 @@ +# Using docker \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/102-connect-using-psql.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/102-connect-using-psql.md new file mode 100644 index 000000000..846c06606 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/102-connect-using-psql.md @@ -0,0 +1 @@ +# Connect using psql \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/103-deployment-in-cloud.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/103-deployment-in-cloud.md new file mode 100644 index 000000000..092b2a4a1 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/103-deployment-in-cloud.md @@ -0,0 +1 @@ +# Deployment in cloud \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/104-using-systemd.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/104-using-systemd.md new file mode 100644 index 000000000..0c9ae6914 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/104-using-systemd.md @@ -0,0 +1 @@ +# Using systemd \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/105-using-pgctl.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/105-using-pgctl.md new file mode 100644 index 000000000..5fe7e2f82 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/105-using-pgctl.md @@ -0,0 +1 @@ +# Using pgctl \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/106-using-pgctlcluster.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/106-using-pgctlcluster.md new file mode 100644 index 000000000..31d9bf055 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/106-using-pgctlcluster.md @@ -0,0 +1 @@ +# Using pgctlcluster \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/index.md b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/index.md new file mode 100644 index 000000000..4e42f414f --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/103-installation-and-setup/index.md @@ -0,0 +1 @@ +# Installation and setup \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/100-for-schemas.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/100-for-schemas.md new file mode 100644 index 000000000..bf1fbf34a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/100-for-schemas.md @@ -0,0 +1 @@ +# For schemas \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/101-for-tables.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/101-for-tables.md new file mode 100644 index 000000000..82751d1f3 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/101-for-tables.md @@ -0,0 +1 @@ +# For tables \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/102-data-types.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/102-data-types.md new file mode 100644 index 000000000..c0d6b9473 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/102-data-types.md @@ -0,0 +1 @@ +# Data types \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/index.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/index.md new file mode 100644 index 000000000..503a80d44 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/100-ddl-queries/index.md @@ -0,0 +1 @@ +# Ddl queries \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/100-querying-data.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/100-querying-data.md new file mode 100644 index 000000000..2466ae7f8 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/100-querying-data.md @@ -0,0 +1 @@ +# Querying data \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/101-filtering-data.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/101-filtering-data.md new file mode 100644 index 000000000..321c568e8 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/101-filtering-data.md @@ -0,0 +1 @@ +# Filtering data \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/102-modifying-data.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/102-modifying-data.md new file mode 100644 index 000000000..918a1c2d0 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/102-modifying-data.md @@ -0,0 +1 @@ +# Modifying data \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/103-joining-tables.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/103-joining-tables.md new file mode 100644 index 000000000..23e3e627e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/103-joining-tables.md @@ -0,0 +1 @@ +# Joining tables \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/index.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/index.md new file mode 100644 index 000000000..f2bfcc894 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/101-dml-queries/index.md @@ -0,0 +1 @@ +# Dml queries \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/102-import-export-using-copy.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/102-import-export-using-copy.md new file mode 100644 index 000000000..4519fba55 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/102-import-export-using-copy.md @@ -0,0 +1 @@ +# Import export using copy \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/100-transactions.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/100-transactions.md new file mode 100644 index 000000000..0125c964d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/100-transactions.md @@ -0,0 +1 @@ +# Transactions \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/101-cte.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/101-cte.md new file mode 100644 index 000000000..5b55e8599 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/101-cte.md @@ -0,0 +1 @@ +# Cte \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/102-subqueries.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/102-subqueries.md new file mode 100644 index 000000000..7810bf3bd --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/102-subqueries.md @@ -0,0 +1 @@ +# Subqueries \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/103-lateral-join.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/103-lateral-join.md new file mode 100644 index 000000000..f2e393eae --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/103-lateral-join.md @@ -0,0 +1 @@ +# Lateral join \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/104-grouping.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/104-grouping.md new file mode 100644 index 000000000..ae82385fa --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/104-grouping.md @@ -0,0 +1 @@ +# Grouping \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/105-set-operations.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/105-set-operations.md new file mode 100644 index 000000000..0a986d74b --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/105-set-operations.md @@ -0,0 +1 @@ +# Set operations \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/index.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/index.md new file mode 100644 index 000000000..d1a09c94a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/103-advanced-topics/index.md @@ -0,0 +1 @@ +# Advanced topics \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/index.md b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/index.md new file mode 100644 index 000000000..3ea0c59de --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/104-learn-sql-concepts/index.md @@ -0,0 +1 @@ +# Learn sql concepts \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/100-resources-usage.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/100-resources-usage.md new file mode 100644 index 000000000..ea7dd9654 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/100-resources-usage.md @@ -0,0 +1 @@ +# Resources usage \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/101-write-ahead-log.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/101-write-ahead-log.md new file mode 100644 index 000000000..f3d7455fc --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/101-write-ahead-log.md @@ -0,0 +1 @@ +# Write ahead log \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/102-vacuums.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/102-vacuums.md new file mode 100644 index 000000000..b9a458738 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/102-vacuums.md @@ -0,0 +1 @@ +# Vacuums \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/103-replication.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/103-replication.md new file mode 100644 index 000000000..0516dcfd9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/103-replication.md @@ -0,0 +1 @@ +# Replication \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/104-query-planner.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/104-query-planner.md new file mode 100644 index 000000000..eb2ddefab --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/104-query-planner.md @@ -0,0 +1 @@ +# Query planner \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/105-checkpoints-background-writer.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/105-checkpoints-background-writer.md new file mode 100644 index 000000000..83ff1e2df --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/105-checkpoints-background-writer.md @@ -0,0 +1 @@ +# Checkpoints background writer \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/106-adding-extensions.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/106-adding-extensions.md new file mode 100644 index 000000000..41a54a0f1 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/106-adding-extensions.md @@ -0,0 +1 @@ +# Adding extensions \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/107-reporting-logging-statistics.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/107-reporting-logging-statistics.md new file mode 100644 index 000000000..add42b84d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/107-reporting-logging-statistics.md @@ -0,0 +1 @@ +# Reporting logging statistics \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/index.md b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/index.md new file mode 100644 index 000000000..baeee346a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/105-configuring-postgresql/index.md @@ -0,0 +1 @@ +# Configuring postgresql \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/100-grant-revoke.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/100-grant-revoke.md new file mode 100644 index 000000000..939044ff9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/100-grant-revoke.md @@ -0,0 +1 @@ +# Grant revoke \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/101-default-priviliges.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/101-default-priviliges.md new file mode 100644 index 000000000..1c033bff2 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/101-default-priviliges.md @@ -0,0 +1 @@ +# Default priviliges \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/index.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/index.md new file mode 100644 index 000000000..689ff8228 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/100-object-priviliges/index.md @@ -0,0 +1 @@ +# Object priviliges \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/100-row-level-security.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/100-row-level-security.md new file mode 100644 index 000000000..9587457ac --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/100-row-level-security.md @@ -0,0 +1 @@ +# Row level security \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/101-selinux.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/101-selinux.md new file mode 100644 index 000000000..7e2413d12 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/101-selinux.md @@ -0,0 +1 @@ +# Selinux \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/index.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/index.md new file mode 100644 index 000000000..d1a09c94a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/101-advanced-topics/index.md @@ -0,0 +1 @@ +# Advanced topics \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/102-authentication-models.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/102-authentication-models.md new file mode 100644 index 000000000..35c1189e1 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/102-authentication-models.md @@ -0,0 +1 @@ +# Authentication models \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/103-roles.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/103-roles.md new file mode 100644 index 000000000..1525bfb2f --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/103-roles.md @@ -0,0 +1 @@ +# Roles \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/104-pg-hba-conf.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/104-pg-hba-conf.md new file mode 100644 index 000000000..fb4db3b10 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/104-pg-hba-conf.md @@ -0,0 +1 @@ +# Pg hba conf \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/105-ssl-settings.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/105-ssl-settings.md new file mode 100644 index 000000000..028a9f7f9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/105-ssl-settings.md @@ -0,0 +1 @@ +# Ssl settings \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/index.md b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/index.md new file mode 100644 index 000000000..a15bdca33 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/106-postgresql-security-concepts/index.md @@ -0,0 +1 @@ +# Postgresql security concepts \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/100-logical-replication.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/100-logical-replication.md new file mode 100644 index 000000000..ddece89be --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/100-logical-replication.md @@ -0,0 +1 @@ +# Logical replication \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/101-streaming-replication.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/101-streaming-replication.md new file mode 100644 index 000000000..6e9bf4906 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/101-streaming-replication.md @@ -0,0 +1 @@ +# Streaming replication \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/index.md new file mode 100644 index 000000000..0516dcfd9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-replication/index.md @@ -0,0 +1 @@ +# Replication \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-resource-usage-provisioing-capacity-planning.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-resource-usage-provisioing-capacity-planning.md new file mode 100644 index 000000000..a82638346 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/100-resource-usage-provisioing-capacity-planning.md @@ -0,0 +1 @@ +# Resource usage provisioing capacity planning \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/100-pg-bouncer.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/100-pg-bouncer.md new file mode 100644 index 000000000..d6633b81e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/100-pg-bouncer.md @@ -0,0 +1 @@ +# Pg bouncer \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/101-pg-bouncer-alternatives.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/101-pg-bouncer-alternatives.md new file mode 100644 index 000000000..4a9898905 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/101-pg-bouncer-alternatives.md @@ -0,0 +1 @@ +# Pg bouncer alternatives \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/index.md new file mode 100644 index 000000000..9887428cb --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/101-connection-pooling/index.md @@ -0,0 +1 @@ +# Connection pooling \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/100-barman.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/100-barman.md new file mode 100644 index 000000000..7d1ca4d55 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/100-barman.md @@ -0,0 +1 @@ +# Barman \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/101-wal-g.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/101-wal-g.md new file mode 100644 index 000000000..b4dfdc072 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/101-wal-g.md @@ -0,0 +1 @@ +# Wal g \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/102-pgbackrest.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/102-pgbackrest.md new file mode 100644 index 000000000..cb50641b9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/102-pgbackrest.md @@ -0,0 +1 @@ +# Pgbackrest \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/103-pg-probackup.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/103-pg-probackup.md new file mode 100644 index 000000000..24aae1399 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/103-pg-probackup.md @@ -0,0 +1 @@ +# Pg probackup \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/104-pg-dump.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/104-pg-dump.md new file mode 100644 index 000000000..aae991ea8 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/104-pg-dump.md @@ -0,0 +1 @@ +# Pg dump \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/105-pg-dumpall.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/105-pg-dumpall.md new file mode 100644 index 000000000..adcfaa5eb --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/105-pg-dumpall.md @@ -0,0 +1 @@ +# Pg dumpall \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/106-pg-restore.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/106-pg-restore.md new file mode 100644 index 000000000..eb941a96b --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/106-pg-restore.md @@ -0,0 +1 @@ +# Pg restore \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/107-pg-basebackup.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/107-pg-basebackup.md new file mode 100644 index 000000000..3919b1338 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/107-pg-basebackup.md @@ -0,0 +1 @@ +# Pg basebackup \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/108-backup-validation-procedures.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/108-backup-validation-procedures.md new file mode 100644 index 000000000..847f64547 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/108-backup-validation-procedures.md @@ -0,0 +1 @@ +# Backup validation procedures \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/index.md new file mode 100644 index 000000000..6a5e1af33 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/102-backup-recovery-tools/index.md @@ -0,0 +1 @@ +# Backup recovery tools \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/100-using-pg-upgrade.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/100-using-pg-upgrade.md new file mode 100644 index 000000000..f79a637db --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/100-using-pg-upgrade.md @@ -0,0 +1 @@ +# Using pg upgrade \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/101-using-logical-replication.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/101-using-logical-replication.md new file mode 100644 index 000000000..735df853e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/101-using-logical-replication.md @@ -0,0 +1 @@ +# Using logical replication \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/index.md new file mode 100644 index 000000000..33e5b7b99 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/103-upgrade-procedures/index.md @@ -0,0 +1 @@ +# Upgrade procedures \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/100-patroni.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/100-patroni.md new file mode 100644 index 000000000..09edf6969 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/100-patroni.md @@ -0,0 +1 @@ +# Patroni \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/101-patroni-alternatives.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/101-patroni-alternatives.md new file mode 100644 index 000000000..316caf016 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/101-patroni-alternatives.md @@ -0,0 +1 @@ +# Patroni alternatives \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/index.md new file mode 100644 index 000000000..adb8c3a8e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/104-cluster-management/index.md @@ -0,0 +1 @@ +# Cluster management \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/100-simple-stateful-setup.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/100-simple-stateful-setup.md new file mode 100644 index 000000000..ab7281787 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/100-simple-stateful-setup.md @@ -0,0 +1 @@ +# Simple stateful setup \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/101-helm.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/101-helm.md new file mode 100644 index 000000000..a3e00304a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/101-helm.md @@ -0,0 +1 @@ +# Helm \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/102-operators.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/102-operators.md new file mode 100644 index 000000000..4978bc66d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/102-operators.md @@ -0,0 +1 @@ +# Operators \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/index.md new file mode 100644 index 000000000..b68e05c60 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/105-kubernetes-deployment/index.md @@ -0,0 +1 @@ +# Kubernetes deployment \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/100-prometheus.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/100-prometheus.md new file mode 100644 index 000000000..4f8259c24 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/100-prometheus.md @@ -0,0 +1 @@ +# Prometheus \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/101-zabbix.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/101-zabbix.md new file mode 100644 index 000000000..94358202f --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/101-zabbix.md @@ -0,0 +1 @@ +# Zabbix \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/index.md new file mode 100644 index 000000000..2ddbe89cb --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/index.md @@ -0,0 +1 @@ +# Monitoring \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/100-ha-proxy.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/100-ha-proxy.md new file mode 100644 index 000000000..997196821 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/100-ha-proxy.md @@ -0,0 +1 @@ +# Ha proxy \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/101-consul.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/101-consul.md new file mode 100644 index 000000000..4d3de44c5 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/101-consul.md @@ -0,0 +1 @@ +# Consul \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/102-keep-alived.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/102-keep-alived.md new file mode 100644 index 000000000..f9a20791a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/102-keep-alived.md @@ -0,0 +1 @@ +# Keep alived \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/103-etcd.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/103-etcd.md new file mode 100644 index 000000000..ceb836592 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/103-etcd.md @@ -0,0 +1 @@ +# Etcd \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/index.md new file mode 100644 index 000000000..76a6e1c25 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/107-load-balancing/index.md @@ -0,0 +1 @@ +# Load balancing \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/index.md new file mode 100644 index 000000000..d0b9094a3 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/index.md @@ -0,0 +1 @@ +# Postgresql infrastructure skills \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/100-shell-scripts.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/100-shell-scripts.md new file mode 100644 index 000000000..ff6eec903 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/100-shell-scripts.md @@ -0,0 +1 @@ +# Shell scripts \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/101-programming-language.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/101-programming-language.md new file mode 100644 index 000000000..617ddda1a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/101-programming-language.md @@ -0,0 +1 @@ +# Programming language \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/100-ansible.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/100-ansible.md new file mode 100644 index 000000000..ab8b4fd1a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/100-ansible.md @@ -0,0 +1 @@ +# Ansible \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/101-salt.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/101-salt.md new file mode 100644 index 000000000..d7fdb0c34 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/101-salt.md @@ -0,0 +1 @@ +# Salt \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/102-chef.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/102-chef.md new file mode 100644 index 000000000..9f5836b05 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/102-chef.md @@ -0,0 +1 @@ +# Chef \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/103-puppet.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/103-puppet.md new file mode 100644 index 000000000..c8a7fdad9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/103-puppet.md @@ -0,0 +1 @@ +# Puppet \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/index.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/index.md new file mode 100644 index 000000000..6c94beff5 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/102-configuration-management/index.md @@ -0,0 +1 @@ +# Configuration management \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/index.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/index.md new file mode 100644 index 000000000..c87152f8c --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/index.md @@ -0,0 +1 @@ +# Learn automation \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/100-practical-patterns.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/100-practical-patterns.md new file mode 100644 index 000000000..3d699fc21 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/100-practical-patterns.md @@ -0,0 +1 @@ +# Practical patterns \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase.md new file mode 100644 index 000000000..175d6ba09 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase.md @@ -0,0 +1 @@ +# Liquidbase sqitch bytebase \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/index.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/index.md new file mode 100644 index 000000000..8feb5128c --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/index.md @@ -0,0 +1 @@ +# Migrations \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/100-practical-patterns-antipatterns.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/100-practical-patterns-antipatterns.md new file mode 100644 index 000000000..94564eefe --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/100-practical-patterns-antipatterns.md @@ -0,0 +1 @@ +# Practical patterns antipatterns \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/101-skytools-pgq.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/101-skytools-pgq.md new file mode 100644 index 000000000..0a5e74798 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/101-skytools-pgq.md @@ -0,0 +1 @@ +# Skytools pgq \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/index.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/index.md new file mode 100644 index 000000000..b3e37379a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/101-queues/index.md @@ -0,0 +1 @@ +# Queues \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/102-bulk-load-process-data.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/102-bulk-load-process-data.md new file mode 100644 index 000000000..4cf4e3e2f --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/102-bulk-load-process-data.md @@ -0,0 +1 @@ +# Bulk load process data \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning-sharding-patterns.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning-sharding-patterns.md new file mode 100644 index 000000000..55f312596 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning-sharding-patterns.md @@ -0,0 +1 @@ +# Data partitioning sharding patterns \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/104-data-normalization-normal-forms.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/104-data-normalization-normal-forms.md new file mode 100644 index 000000000..20773947e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/104-data-normalization-normal-forms.md @@ -0,0 +1 @@ +# Data normalization normal forms \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/index.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/index.md new file mode 100644 index 000000000..6a57a000e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/index.md @@ -0,0 +1 @@ +# Application skills \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/100-process-memory-arch.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/100-process-memory-arch.md new file mode 100644 index 000000000..bbae26115 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/100-process-memory-arch.md @@ -0,0 +1 @@ +# Process memory arch \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/101-vacuum-processing.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/101-vacuum-processing.md new file mode 100644 index 000000000..52a90dd6d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/101-vacuum-processing.md @@ -0,0 +1 @@ +# Vacuum processing \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/102-buffer-management.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/102-buffer-management.md new file mode 100644 index 000000000..dc524cfbf --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/102-buffer-management.md @@ -0,0 +1 @@ +# Buffer management \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/103-lock-management.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/103-lock-management.md new file mode 100644 index 000000000..48103243e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/103-lock-management.md @@ -0,0 +1 @@ +# Lock management \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/104-physical-storage-and-file-layout.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/104-physical-storage-and-file-layout.md new file mode 100644 index 000000000..dea0b94d6 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/104-physical-storage-and-file-layout.md @@ -0,0 +1 @@ +# Physical storage and file layout \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/105-system-catalog.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/105-system-catalog.md new file mode 100644 index 000000000..f66fd6ea0 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/105-system-catalog.md @@ -0,0 +1 @@ +# System catalog \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/index.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/index.md new file mode 100644 index 000000000..b323fd886 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/100-low-level-internals/index.md @@ -0,0 +1 @@ +# Low level internals \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/100-per-user-per-database-settings.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/100-per-user-per-database-settings.md new file mode 100644 index 000000000..9f43cae65 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/100-per-user-per-database-settings.md @@ -0,0 +1 @@ +# Per user per database settings \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/101-storage-parameters.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/101-storage-parameters.md new file mode 100644 index 000000000..9f42764e9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/101-storage-parameters.md @@ -0,0 +1 @@ +# Storage parameters \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/102-workload-dependant-tuning.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/102-workload-dependant-tuning.md new file mode 100644 index 000000000..232b2441d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/102-workload-dependant-tuning.md @@ -0,0 +1 @@ +# Workload dependant tuning \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/index.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/index.md new file mode 100644 index 000000000..a59240370 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/101-fine-grained-tuning/index.md @@ -0,0 +1 @@ +# Fine grained tuning \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/100-pl-pgsql.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/100-pl-pgsql.md new file mode 100644 index 000000000..44dcfaa50 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/100-pl-pgsql.md @@ -0,0 +1 @@ +# Pl pgsql \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/101-procedures-and-functions.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/101-procedures-and-functions.md new file mode 100644 index 000000000..5338dd696 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/101-procedures-and-functions.md @@ -0,0 +1 @@ +# Procedures and functions \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/102-triggers.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/102-triggers.md new file mode 100644 index 000000000..57cdccb40 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/102-triggers.md @@ -0,0 +1 @@ +# Triggers \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/103-recursive-cte.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/103-recursive-cte.md new file mode 100644 index 000000000..bfc4411f7 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/103-recursive-cte.md @@ -0,0 +1 @@ +# Recursive cte \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/104-aggregate-and-window-functions.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/104-aggregate-and-window-functions.md new file mode 100644 index 000000000..1a3b68be6 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/104-aggregate-and-window-functions.md @@ -0,0 +1 @@ +# Aggregate and window functions \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/index.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/index.md new file mode 100644 index 000000000..f334e2cd6 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/102-advanced-sql/index.md @@ -0,0 +1 @@ +# Advanced sql \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/index.md b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/index.md new file mode 100644 index 000000000..d1a09c94a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/110-advanced-topics/index.md @@ -0,0 +1 @@ +# Advanced topics \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/100-pg-stat-activity.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/100-pg-stat-activity.md new file mode 100644 index 000000000..704c97965 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/100-pg-stat-activity.md @@ -0,0 +1 @@ +# Pg stat activity \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/101-pg-stat-statements.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/101-pg-stat-statements.md new file mode 100644 index 000000000..122738d20 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/101-pg-stat-statements.md @@ -0,0 +1 @@ +# Pg stat statements \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/index.md new file mode 100644 index 000000000..b98d95e3b --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/100-system-views/index.md @@ -0,0 +1 @@ +# System views \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/100-pt-center.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/100-pt-center.md new file mode 100644 index 000000000..537ac0de9 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/100-pt-center.md @@ -0,0 +1 @@ +# Pt center \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/index.md new file mode 100644 index 000000000..537d60c60 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/101-tools/index.md @@ -0,0 +1 @@ +# Tools \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/100-top.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/100-top.md new file mode 100644 index 000000000..b563aaacb --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/100-top.md @@ -0,0 +1 @@ +# Top \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/101-sysstat.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/101-sysstat.md new file mode 100644 index 000000000..c5551e8cc --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/101-sysstat.md @@ -0,0 +1 @@ +# Sysstat \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/102-iotop.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/102-iotop.md new file mode 100644 index 000000000..c861a4358 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/102-iotop.md @@ -0,0 +1 @@ +# Iotop \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/index.md new file mode 100644 index 000000000..cdacc3a3c --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/102-operating-system-tools/index.md @@ -0,0 +1 @@ +# Operating system tools \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/100-explain.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/100-explain.md new file mode 100644 index 000000000..848219f2b --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/100-explain.md @@ -0,0 +1 @@ +# Explain \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/101-depesz.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/101-depesz.md new file mode 100644 index 000000000..979fc8e8e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/101-depesz.md @@ -0,0 +1 @@ +# Depesz \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/102-pev.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/102-pev.md new file mode 100644 index 000000000..e65c3e4ba --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/102-pev.md @@ -0,0 +1 @@ +# Pev \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/103-tenser.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/103-tenser.md new file mode 100644 index 000000000..c6723083d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/103-tenser.md @@ -0,0 +1 @@ +# Tenser \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/index.md new file mode 100644 index 000000000..b86ae1b59 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/index.md @@ -0,0 +1 @@ +# Query analysis \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/100-gdb.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/100-gdb.md new file mode 100644 index 000000000..dfd0c4c21 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/100-gdb.md @@ -0,0 +1 @@ +# Gdb \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/101-strace.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/101-strace.md new file mode 100644 index 000000000..ab9d7af81 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/101-strace.md @@ -0,0 +1 @@ +# Strace \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/102-ebpf.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/102-ebpf.md new file mode 100644 index 000000000..06d729f71 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/102-ebpf.md @@ -0,0 +1 @@ +# Ebpf \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/103-perf-tools.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/103-perf-tools.md new file mode 100644 index 000000000..170ad566c --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/103-perf-tools.md @@ -0,0 +1 @@ +# Perf tools \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/104-core-dumps.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/104-core-dumps.md new file mode 100644 index 000000000..fa58de9e7 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/104-core-dumps.md @@ -0,0 +1 @@ +# Core dumps \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/index.md new file mode 100644 index 000000000..649fb2d1b --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/104-profiling-tools/index.md @@ -0,0 +1 @@ +# Profiling tools \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/100-use.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/100-use.md new file mode 100644 index 000000000..cda9d1daa --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/100-use.md @@ -0,0 +1 @@ +# Use \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/101-red.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/101-red.md new file mode 100644 index 000000000..712afebbd --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/101-red.md @@ -0,0 +1 @@ +# Red \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/102-golden-signals.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/102-golden-signals.md new file mode 100644 index 000000000..737af507e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/102-golden-signals.md @@ -0,0 +1 @@ +# Golden signals \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/index.md new file mode 100644 index 000000000..9bfb3b12c --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/105-troubleshooting-methods/index.md @@ -0,0 +1 @@ +# Troubleshooting methods \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/100-pg-badger.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/100-pg-badger.md new file mode 100644 index 000000000..96358c50d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/100-pg-badger.md @@ -0,0 +1 @@ +# Pg badger \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/101-awk.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/101-awk.md new file mode 100644 index 000000000..10b818700 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/101-awk.md @@ -0,0 +1 @@ +# Awk \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/102-grep.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/102-grep.md new file mode 100644 index 000000000..23eb0693a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/102-grep.md @@ -0,0 +1 @@ +# Grep \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/103-sed.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/103-sed.md new file mode 100644 index 000000000..1a9c250c0 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/103-sed.md @@ -0,0 +1 @@ +# Sed \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/index.md new file mode 100644 index 000000000..da49e1bbb --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/index.md @@ -0,0 +1 @@ +# Log analysis \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/index.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/index.md new file mode 100644 index 000000000..aa5bf3a72 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/index.md @@ -0,0 +1 @@ +# Troubleshooting techniques \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/100-b-tree.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/100-b-tree.md new file mode 100644 index 000000000..7ab904c51 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/100-b-tree.md @@ -0,0 +1 @@ +# B tree \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/101-hash.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/101-hash.md new file mode 100644 index 000000000..420847140 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/101-hash.md @@ -0,0 +1 @@ +# Hash \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/102-gist.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/102-gist.md new file mode 100644 index 000000000..c100e3de7 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/102-gist.md @@ -0,0 +1 @@ +# Gist \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/103-sp-gist.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/103-sp-gist.md new file mode 100644 index 000000000..9a64aad55 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/103-sp-gist.md @@ -0,0 +1 @@ +# Sp gist \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/104-gin.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/104-gin.md new file mode 100644 index 000000000..617f8d1d8 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/104-gin.md @@ -0,0 +1 @@ +# Gin \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/105-brin.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/105-brin.md new file mode 100644 index 000000000..7550f37a2 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/105-brin.md @@ -0,0 +1 @@ +# Brin \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/index.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/index.md new file mode 100644 index 000000000..d080c2829 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/100-indexes-usecases/index.md @@ -0,0 +1 @@ +# Indexes usecases \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/101-schema-design-patterns.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/101-schema-design-patterns.md new file mode 100644 index 000000000..071e4c5af --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/101-schema-design-patterns.md @@ -0,0 +1 @@ +# Schema design patterns \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/102-schema-query-patterns.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/102-schema-query-patterns.md new file mode 100644 index 000000000..a92055417 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/102-schema-query-patterns.md @@ -0,0 +1 @@ +# Schema query patterns \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/index.md b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/index.md new file mode 100644 index 000000000..1ac5c2101 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/112-sql-optimization-techniques/index.md @@ -0,0 +1 @@ +# Sql optimization techniques \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/100-mailing-lists.md b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/100-mailing-lists.md new file mode 100644 index 000000000..89b0685ed --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/100-mailing-lists.md @@ -0,0 +1 @@ +# Mailing lists \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/101-reviewing-patches.md b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/101-reviewing-patches.md new file mode 100644 index 000000000..0c75e471a --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/101-reviewing-patches.md @@ -0,0 +1 @@ +# Reviewing patches \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/102-writing-patches.md b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/102-writing-patches.md new file mode 100644 index 000000000..d358b5972 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/102-writing-patches.md @@ -0,0 +1 @@ +# Writing patches \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/index.md b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/index.md new file mode 100644 index 000000000..9077338e8 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/113-get-involved-in-development/index.md @@ -0,0 +1 @@ +# Get involved in development \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/index.md b/src/data/roadmaps/postgresql-dba/content/index.md new file mode 100644 index 000000000..4e768b56d --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/index.md @@ -0,0 +1 @@ +# \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/postgresql-dba.md b/src/data/roadmaps/postgresql-dba/postgresql-dba.md index dc7719516..1ed45c485 100644 --- a/src/data/roadmaps/postgresql-dba/postgresql-dba.md +++ b/src/data/roadmaps/postgresql-dba/postgresql-dba.md @@ -1,11 +1,12 @@ --- +jsonUrl: '/jsons/roadmaps/postgresql.json' pdfUrl: '/pdfs/roadmaps/postgresql-dba.pdf' order: 5 briefTitle: 'DBA' briefDescription: 'Step by step guide to become a PostgreSQL DBA in 2023' title: 'PostgreSQL DBA' description: 'Step by step guide to becoming a modern PostgreSQL DB Administrator in 2023' -hasTopics: false +hasTopics: true 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.'