From e36a749223bdfa32a11c8ceb2a3d8cb26953ce7b Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 19 Apr 2023 21:55:22 +0100 Subject: [PATCH] Update postgresql roadmap --- public/jsons/roadmaps/postgresql-dba.json | 11966 +++++++++++++++- .../106-monitoring/102-check-pgactivity.md | 45 + .../106-monitoring/103-temboard.md | 75 + .../106-monitoring/104-check-pgbackrest.md | 35 + .../100-postgresql-anonymizer.md | 49 + .../108-anonymization/index.md | 29 + .../100-ansible.md | 31 +- .../108-learn-automation/103-terraform.md | 39 + .../101-liquidbase-sqitch-bytebase-ora2pg.md | 29 + .../101-liquidbase-sqitch-bytebase.md | 38 - ...103-data-partitioning-sharding-patterns.md | 33 - .../103-data-partitioning.md | 13 + .../105-sharding-patterns.md | 11 + .../104-explain-dalibo-com.md | 5 + .../106-log-analysis/104-pg-cluu.md | 39 + 15 files changed, 12364 insertions(+), 73 deletions(-) create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/102-check-pgactivity.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/103-temboard.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/104-check-pgbackrest.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/100-postgresql-anonymizer.md create mode 100644 src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/index.md create mode 100644 src/data/roadmaps/postgresql-dba/content/108-learn-automation/103-terraform.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase-ora2pg.md delete mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase.md delete 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/103-data-partitioning.md create mode 100644 src/data/roadmaps/postgresql-dba/content/109-application-skills/105-sharding-patterns.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/104-explain-dalibo-com.md create mode 100644 src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/104-pg-cluu.md diff --git a/public/jsons/roadmaps/postgresql-dba.json b/public/jsons/roadmaps/postgresql-dba.json index 47c17e382..bff5042e0 100644 --- a/public/jsons/roadmaps/postgresql-dba.json +++ b/public/jsons/roadmaps/postgresql-dba.json @@ -1 +1,11965 @@ -{"mockup":{"controls":{"control":[{"ID":"1952","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":"1953","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":"1954","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":"1955","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":"1956","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":"1957","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":"1958","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":"1959","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":"1960","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":"1961","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":"1962","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":"1963","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":"1964","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":"1965","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":"1966","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":"1967","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":"1968","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":"1969","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":"1970","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":"1971","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":"1972","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":"1973","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":"1974","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":"1975","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":"1976","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":"1977","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":"1978","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":"1979","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":"1980","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":"1981","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":"1982","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":"1983","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":"1984","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":"1985","typeID":"__group__","zOrder":"33","measuredW":"189","measuredH":"42","w":"189","h":"42","x":"306","y":"2918","properties":{"controlName":"100-troubleshooting-techniques:tools:pgcenter"},"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":"66","measuredH":"24","x":"62","y":"9","properties":{"size":"16","text":"pgcenter"}}]}}},{"ID":"1986","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":"1987","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":"1988","typeID":"Canvas","zOrder":"36","w":"146","h":"164","measuredW":"100","measuredH":"70","x":"611","y":"2359"},{"ID":"1989","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":"1990","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":"1991","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":"1992","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":"1993","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":"1994","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":"1995","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":"1996","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":"1997","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":"1998","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":"1999","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":"2000","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":"2001","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":"2002","typeID":"Canvas","zOrder":"50","w":"188","h":"157","measuredW":"100","measuredH":"70","x":"977","y":"2016"},{"ID":"2003","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":"2004","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":"2005","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":"2006","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":"2007","typeID":"Canvas","zOrder":"55","w":"235","h":"157","measuredW":"100","measuredH":"70","x":"1160","y":"2016"},{"ID":"2008","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":"2009","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":"2010","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":"2011","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":"2012","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":"2013","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":"2014","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":"2015","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":"2016","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":"2017","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":"2018","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":"2019","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":"2020","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":"2021","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":"2022","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":"2023","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":"2024","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":"2025","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":"2026","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":"2027","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":"2028","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":"2029","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":"2030","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":"2031","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":"2032","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":"2033","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":"2034","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":"2035","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":"2036","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":"2037","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":"2038","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":"2039","typeID":"Label","zOrder":"87","measuredW":"152","measuredH":"36","x":"666","y":"181","properties":{"size":"28","text":"PostgreSQL"}},{"ID":"2040","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":"2041","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":"2042","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":"2043","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":"2044","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":"2045","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":"2046","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":"2047","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":"2048","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":"2049","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":"2050","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":"2051","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":"2052","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":"2053","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":"2054","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":"2055","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":"2056","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":"2057","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":"2058","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":"2059","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":"2060","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":"2061","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":"2062","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":"2063","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":"2064","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":"2065","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":"2066","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":"2067","typeID":"Canvas","zOrder":"115","w":"189","h":"189","measuredW":"100","measuredH":"70","x":"1199","y":"592"},{"ID":"2068","typeID":"Label","zOrder":"116","measuredW":"140","measuredH":"24","x":"1224","y":"603","properties":{"size":"16","text":"Managing Postgres"}},{"ID":"2069","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":"2070","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":"2071","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":"2072","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":"2073","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":"2074","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":"2075","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":"2076","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":"2077","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":"2078","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":"2079","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":"2080","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":"2081","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":"2082","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":"2083","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":"2084","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":"2085","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":"2086","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":"2087","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":"2088","typeID":"Canvas","zOrder":"136","w":"245","h":"79","measuredW":"100","measuredH":"70","x":"508","y":"1102"},{"ID":"2089","typeID":"Label","zOrder":"137","measuredW":"180","measuredH":"25","x":"530","y":"1116","properties":{"text":"Following {color:blue}postgres.conf{color}","size":"17"}},{"ID":"2090","typeID":"Label","zOrder":"138","measuredW":"186","measuredH":"25","x":"530","y":"1143","properties":{"text":"configurations and more","size":"17"}},{"ID":"2091","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":"2092","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":"2093","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":"2094","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":"2095","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":"2096","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":"2097","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":"2098","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":"2099","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":"2100","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":"2101","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":"2102","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":"2103","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":"2104","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":"2105","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":"2106","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":"2107","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":"2108","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":"2109","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":"2110","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":"2111","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":"2112","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":"2113","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":"2114","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":"2115","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":"2116","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":"2117","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":"2118","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":"2119","typeID":"Label","zOrder":"167","measuredW":"87","measuredH":"24","x":"1214","y":"1947","properties":{"size":"16","text":"Builtin Tools"}},{"ID":"2120","typeID":"Label","zOrder":"168","measuredW":"66","measuredH":"24","x":"1046","y":"1947","properties":{"size":"16","text":"3rd Party"}},{"ID":"2121","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":"2122","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":"2123","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":"2124","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":"2125","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":"2126","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":"2127","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":"2128","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":"2129","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":"2130","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":"2131","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":"2132","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":"2133","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":"2134","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":"2135","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":"2136","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":"2137","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":"2138","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":"2139","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":"2140","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":"2141","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":"2142","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":"2143","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":"2144","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":"2145","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":"2146","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":"2147","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":"2148","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":"2149","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":"2150","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":"2151","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"}}]}}},{"ID":"2152","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":"2153","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":"2154","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":"2155","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":"2156","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":"2157","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":"2158","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":"2159","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":"2160","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":"2161","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":"2162","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":"2163","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":"2164","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":"2165","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":"2166","typeID":"Label","zOrder":"214","measuredW":"110","measuredH":"24","x":"627","y":"2488","properties":{"size":"16","text":"Migration Tools"}},{"ID":"2167","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":"2168","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":"2169","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":"2170","typeID":"Canvas","zOrder":"218","w":"146","h":"126","measuredW":"100","measuredH":"70","x":"608","y":"2684"},{"ID":"2171","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":"2172","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":"2173","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":"2174","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":"2175","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":"2176","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":"2177","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":"2178","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":"2179","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":"2180","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":"2181","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":"2182","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":"2183","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":"2184","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":"2185","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":"2186","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":"2187","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":"2188","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":"2189","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":"2190","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":"2191","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":"2192","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":"2193","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":"2194","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":"2195","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":"2196","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":"2197","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":"2198","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":"2199","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":"2200","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":"2201","typeID":"__group__","zOrder":"249","measuredW":"97","measuredH":"42","w":"97","h":"42","x":"305","y":"3049","properties":{"controlName":"102-troubleshooting-techniques:query-analysis:pev2"},"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":"40","measuredH":"24","x":"29","y":"9","properties":{"size":"16","text":"PEV2"}}]}}},{"ID":"2202","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":"2203","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":"2204","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":"2205","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":"2206","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":"2207","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":"2208","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":"2209","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":"2210","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":"2211","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":"2212","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":"2213","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":"2214","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":"2215","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":"2216","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":"2217","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":"2218","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":"2219","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":"2220","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":"2221","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":"2222","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":"2223","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":"2224","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":"2225","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":"2226","typeID":"Label","zOrder":"274","measuredW":"161","measuredH":"32","x":"794","y":"3575","properties":{"size":"24","text":"Keep Learning"}},{"ID":"2227","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":"2228","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":"2229","typeID":"Canvas","zOrder":"277","w":"350","h":"141","measuredW":"100","measuredH":"70","x":"975","y":"134"},{"ID":"2230","typeID":"Label","zOrder":"278","measuredW":"314","measuredH":"25","x":"989","y":"151","properties":{"size":"17","text":"Find the detailed version of this roadmap"}},{"ID":"2231","typeID":"Label","zOrder":"279","measuredW":"319","measuredH":"25","x":"989","y":"179","properties":{"size":"17","text":"along with resources and other roadmaps"}},{"ID":"2232","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":"2233","typeID":"Canvas","zOrder":"281","w":"300","h":"141","measuredW":"100","measuredH":"70","x":"261","y":"130"},{"ID":"2234","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":"2235","typeID":"Label","zOrder":"283","measuredW":"175","measuredH":"28","x":"286","y":"151","properties":{"size":"20","text":"Related Roadmaps"}},{"ID":"2236","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":"2237","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"}}]}}}]}}}]},"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 +{ + "mockup": { + "controls": { + "control": [ + { + "ID": "1952", + "typeID": "Arrow", + "zOrder": "1", + "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": "1953", + "typeID": "Arrow", + "zOrder": "2", + "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": "1954", + "typeID": "Arrow", + "zOrder": "3", + "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": "1955", + "typeID": "Arrow", + "zOrder": "4", + "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": "1956", + "typeID": "Arrow", + "zOrder": "5", + "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": "1957", + "typeID": "Arrow", + "zOrder": "6", + "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": "1958", + "typeID": "Arrow", + "zOrder": "7", + "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": "1959", + "typeID": "Arrow", + "zOrder": "8", + "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": "1960", + "typeID": "Arrow", + "zOrder": "9", + "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": "1961", + "typeID": "Arrow", + "zOrder": "10", + "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": "1962", + "typeID": "Arrow", + "zOrder": "11", + "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": "1963", + "typeID": "Arrow", + "zOrder": "12", + "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": "1964", + "typeID": "Arrow", + "zOrder": "13", + "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": "1965", + "typeID": "Arrow", + "zOrder": "14", + "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": "1966", + "typeID": "Arrow", + "zOrder": "15", + "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": "1967", + "typeID": "Arrow", + "zOrder": "16", + "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": "1968", + "typeID": "Arrow", + "zOrder": "17", + "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": "1969", + "typeID": "__group__", + "zOrder": "18", + "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": "1970", + "typeID": "__group__", + "zOrder": "19", + "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": "1971", + "typeID": "__group__", + "zOrder": "20", + "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": "1972", + "typeID": "__group__", + "zOrder": "21", + "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": "1973", + "typeID": "__group__", + "zOrder": "22", + "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": "1974", + "typeID": "__group__", + "zOrder": "23", + "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": "1975", + "typeID": "__group__", + "zOrder": "24", + "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": "1976", + "typeID": "__group__", + "zOrder": "25", + "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": "1977", + "typeID": "__group__", + "zOrder": "26", + "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": "1978", + "typeID": "__group__", + "zOrder": "27", + "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": "1979", + "typeID": "__group__", + "zOrder": "28", + "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": "1980", + "typeID": "__group__", + "zOrder": "29", + "measuredW": "95", + "measuredH": "42", + "w": "95", + "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": "95", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "73", + "measuredH": "24", + "x": "11", + "y": "9", + "properties": { + "size": "16", + "text": "pgBadger" + } + } + ] + } + } + }, + { + "ID": "1981", + "typeID": "__group__", + "zOrder": "30", + "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": "1982", + "typeID": "__group__", + "zOrder": "31", + "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": "1983", + "typeID": "__group__", + "zOrder": "32", + "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": "1984", + "typeID": "__group__", + "zOrder": "282", + "measuredW": "209", + "measuredH": "96", + "w": "209", + "h": "96", + "x": "296", + "y": "2818", + "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": "1985", + "typeID": "__group__", + "zOrder": "283", + "measuredW": "189", + "measuredH": "42", + "w": "189", + "h": "42", + "x": "306", + "y": "2862", + "properties": { + "controlName": "100-troubleshooting-techniques:tools:pgcenter" + }, + "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": "66", + "measuredH": "24", + "x": "62", + "y": "9", + "properties": { + "size": "16", + "text": "pgcenter" + } + } + ] + } + } + }, + { + "ID": "1986", + "typeID": "Arrow", + "zOrder": "33", + "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": "1987", + "typeID": "Arrow", + "zOrder": "34", + "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": "1988", + "typeID": "Canvas", + "zOrder": "35", + "w": "146", + "h": "164", + "measuredW": "100", + "measuredH": "70", + "x": "611", + "y": "2359" + }, + { + "ID": "1989", + "typeID": "Arrow", + "zOrder": "36", + "w": "1", + "h": "88", + "measuredW": "150", + "measuredH": "100", + "x": "434", + "y": "2458", + "properties": { + "curvature": "0", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "color": "10027263", + "p0": { + "x": 0.4271178962663953, + "y": 0.3713024393487103 + }, + "p1": { + "x": 0.4999999999999998, + "y": 0 + }, + "p2": { + "x": 0.4271178962663953, + "y": 88.66666666666663 + } + } + }, + { + "ID": "1990", + "typeID": "Arrow", + "zOrder": "37", + "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": "1991", + "typeID": "Arrow", + "zOrder": "38", + "w": "620", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "232", + "y": "1784", + "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": "1992", + "typeID": "Arrow", + "zOrder": "39", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "594", + "y": "1975", + "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": "1993", + "typeID": "Arrow", + "zOrder": "40", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "850", + "y": "1975", + "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": "1994", + "typeID": "Arrow", + "zOrder": "41", + "w": "404", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "415", + "y": "1853", + "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": "1995", + "typeID": "Arrow", + "zOrder": "42", + "w": "1", + "h": "264", + "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.49999999999999994, + "y": 0 + }, + "p2": { + "x": 0.4271178962662816, + "y": 264.5 + } + } + }, + { + "ID": "1996", + "typeID": "Arrow", + "zOrder": "43", + "w": "1", + "h": "65", + "measuredW": "150", + "measuredH": "100", + "x": "852", + "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": 64.5 + } + } + }, + { + "ID": "1997", + "typeID": "Arrow", + "zOrder": "44", + "w": "1", + "h": "53", + "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.4999999999999999, + "y": 0 + }, + "p2": { + "x": 0.4271178962662816, + "y": 52.5 + } + } + }, + { + "ID": "1998", + "typeID": "Arrow", + "zOrder": "45", + "w": "102", + "h": "42", + "measuredW": "150", + "measuredH": "100", + "x": "701", + "y": "1729", + "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": "1999", + "typeID": "Arrow", + "zOrder": "46", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "641", + "y": "2046", + "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": "2000", + "typeID": "Arrow", + "zOrder": "47", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "849", + "y": "1858", + "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": "2001", + "typeID": "Arrow", + "zOrder": "48", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "1078", + "y": "1933", + "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": "2002", + "typeID": "Canvas", + "zOrder": "49", + "w": "188", + "h": "157", + "measuredW": "100", + "measuredH": "70", + "x": "977", + "y": "1980" + }, + { + "ID": "2003", + "typeID": "Arrow", + "zOrder": "50", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "1257", + "y": "1849", + "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": "2004", + "typeID": "Arrow", + "zOrder": "51", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "1078", + "y": "1846", + "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": "2005", + "typeID": "__group__", + "zOrder": "52", + "measuredW": "418", + "measuredH": "47", + "w": "418", + "h": "47", + "x": "977", + "y": "1830", + "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": "2006", + "typeID": "Arrow", + "zOrder": "53", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "1257", + "y": "1929", + "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": "2007", + "typeID": "Canvas", + "zOrder": "54", + "w": "235", + "h": "157", + "measuredW": "100", + "measuredH": "70", + "x": "1160", + "y": "1980" + }, + { + "ID": "2008", + "typeID": "Arrow", + "zOrder": "55", + "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": "2009", + "typeID": "Arrow", + "zOrder": "56", + "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": "2010", + "typeID": "Arrow", + "zOrder": "57", + "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": "2011", + "typeID": "Arrow", + "zOrder": "58", + "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": "2012", + "typeID": "Arrow", + "zOrder": "59", + "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": "2013", + "typeID": "Arrow", + "zOrder": "60", + "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": "2014", + "typeID": "Arrow", + "zOrder": "61", + "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": "2015", + "typeID": "Arrow", + "zOrder": "62", + "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": "2016", + "typeID": "Arrow", + "zOrder": "63", + "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": "2017", + "typeID": "Arrow", + "zOrder": "64", + "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": "2018", + "typeID": "Arrow", + "zOrder": "65", + "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": "2019", + "typeID": "Arrow", + "zOrder": "66", + "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": "2020", + "typeID": "Arrow", + "zOrder": "67", + "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": "2021", + "typeID": "Arrow", + "zOrder": "68", + "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": "2022", + "typeID": "__group__", + "zOrder": "69", + "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": "2023", + "typeID": "Arrow", + "zOrder": "70", + "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": "2024", + "typeID": "Arrow", + "zOrder": "71", + "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": "2025", + "typeID": "Arrow", + "zOrder": "72", + "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": "2026", + "typeID": "Arrow", + "zOrder": "73", + "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": "2027", + "typeID": "__group__", + "zOrder": "74", + "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": "2028", + "typeID": "__group__", + "zOrder": "75", + "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": "2029", + "typeID": "__group__", + "zOrder": "76", + "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": "2030", + "typeID": "__group__", + "zOrder": "77", + "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": "2031", + "typeID": "Arrow", + "zOrder": "78", + "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": "2032", + "typeID": "Arrow", + "zOrder": "79", + "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": "2033", + "typeID": "Arrow", + "zOrder": "80", + "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": "2034", + "typeID": "Arrow", + "zOrder": "81", + "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": "2035", + "typeID": "Arrow", + "zOrder": "82", + "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": "2036", + "typeID": "Arrow", + "zOrder": "83", + "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": "2037", + "typeID": "Arrow", + "zOrder": "84", + "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": "2038", + "typeID": "Arrow", + "zOrder": "85", + "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": "2039", + "typeID": "Label", + "zOrder": "86", + "measuredW": "152", + "measuredH": "36", + "x": "666", + "y": "181", + "properties": { + "size": "28", + "text": "PostgreSQL" + } + }, + { + "ID": "2040", + "typeID": "Arrow", + "zOrder": "87", + "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": "2041", + "typeID": "__group__", + "zOrder": "88", + "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": "2042", + "typeID": "__group__", + "zOrder": "89", + "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": "2043", + "typeID": "__group__", + "zOrder": "90", + "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": "2044", + "typeID": "__group__", + "zOrder": "91", + "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": "2045", + "typeID": "__group__", + "zOrder": "92", + "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": "2046", + "typeID": "__group__", + "zOrder": "93", + "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": "2047", + "typeID": "__group__", + "zOrder": "94", + "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": "2048", + "typeID": "__group__", + "zOrder": "95", + "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": "2049", + "typeID": "__group__", + "zOrder": "96", + "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": "2050", + "typeID": "__group__", + "zOrder": "97", + "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": "2051", + "typeID": "__group__", + "zOrder": "98", + "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": "2052", + "typeID": "__group__", + "zOrder": "99", + "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": "2053", + "typeID": "__group__", + "zOrder": "100", + "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": "2054", + "typeID": "__group__", + "zOrder": "101", + "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": "2055", + "typeID": "__group__", + "zOrder": "102", + "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": "2056", + "typeID": "__group__", + "zOrder": "103", + "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": "2057", + "typeID": "__group__", + "zOrder": "104", + "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": "2058", + "typeID": "__group__", + "zOrder": "105", + "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": "2059", + "typeID": "__group__", + "zOrder": "106", + "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": "2060", + "typeID": "__group__", + "zOrder": "107", + "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": "2061", + "typeID": "__group__", + "zOrder": "108", + "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": "2062", + "typeID": "__group__", + "zOrder": "109", + "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": "2063", + "typeID": "__group__", + "zOrder": "110", + "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": "2064", + "typeID": "__group__", + "zOrder": "111", + "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": "2065", + "typeID": "__group__", + "zOrder": "112", + "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": "2066", + "typeID": "__group__", + "zOrder": "113", + "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": "2067", + "typeID": "Canvas", + "zOrder": "114", + "w": "189", + "h": "189", + "measuredW": "100", + "measuredH": "70", + "x": "1199", + "y": "592" + }, + { + "ID": "2068", + "typeID": "Label", + "zOrder": "115", + "measuredW": "140", + "measuredH": "24", + "x": "1224", + "y": "603", + "properties": { + "size": "16", + "text": "Managing Postgres" + } + }, + { + "ID": "2069", + "typeID": "__group__", + "zOrder": "116", + "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": "2070", + "typeID": "__group__", + "zOrder": "117", + "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": "2071", + "typeID": "__group__", + "zOrder": "118", + "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": "2072", + "typeID": "__group__", + "zOrder": "119", + "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": "2073", + "typeID": "__group__", + "zOrder": "120", + "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": "2074", + "typeID": "__group__", + "zOrder": "121", + "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": "2075", + "typeID": "__group__", + "zOrder": "122", + "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": "2076", + "typeID": "__group__", + "zOrder": "123", + "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": "2077", + "typeID": "__group__", + "zOrder": "124", + "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": "2078", + "typeID": "__group__", + "zOrder": "125", + "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": "2079", + "typeID": "Arrow", + "zOrder": "126", + "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": "2080", + "typeID": "__group__", + "zOrder": "127", + "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": "2081", + "typeID": "__group__", + "zOrder": "128", + "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": "2082", + "typeID": "__group__", + "zOrder": "129", + "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": "2083", + "typeID": "__group__", + "zOrder": "130", + "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": "2084", + "typeID": "__group__", + "zOrder": "131", + "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": "2085", + "typeID": "__group__", + "zOrder": "132", + "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": "2086", + "typeID": "__group__", + "zOrder": "133", + "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": "2087", + "typeID": "__group__", + "zOrder": "134", + "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": "2088", + "typeID": "Canvas", + "zOrder": "135", + "w": "245", + "h": "79", + "measuredW": "100", + "measuredH": "70", + "x": "508", + "y": "1102" + }, + { + "ID": "2089", + "typeID": "Label", + "zOrder": "136", + "measuredW": "180", + "measuredH": "25", + "x": "530", + "y": "1116", + "properties": { + "text": "Following {color:blue}postgres.conf{color}", + "size": "17" + } + }, + { + "ID": "2090", + "typeID": "Label", + "zOrder": "137", + "measuredW": "186", + "measuredH": "25", + "x": "530", + "y": "1143", + "properties": { + "text": "configurations and more", + "size": "17" + } + }, + { + "ID": "2091", + "typeID": "__group__", + "zOrder": "138", + "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": "2092", + "typeID": "__group__", + "zOrder": "139", + "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": "2093", + "typeID": "__group__", + "zOrder": "140", + "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": "2094", + "typeID": "__group__", + "zOrder": "141", + "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": "2095", + "typeID": "__group__", + "zOrder": "142", + "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": "2096", + "typeID": "__group__", + "zOrder": "143", + "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": "2097", + "typeID": "__group__", + "zOrder": "144", + "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": "2098", + "typeID": "__group__", + "zOrder": "145", + "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": "2099", + "typeID": "Arrow", + "zOrder": "146", + "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": "2100", + "typeID": "__group__", + "zOrder": "147", + "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": "2101", + "typeID": "__group__", + "zOrder": "148", + "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": "2102", + "typeID": "__group__", + "zOrder": "149", + "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": "2103", + "typeID": "__group__", + "zOrder": "150", + "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": "2104", + "typeID": "__group__", + "zOrder": "151", + "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": "2105", + "typeID": "__group__", + "zOrder": "152", + "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": "2106", + "typeID": "__group__", + "zOrder": "153", + "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": "2107", + "typeID": "__group__", + "zOrder": "154", + "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": "2108", + "typeID": "__group__", + "zOrder": "155", + "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": "2109", + "typeID": "__group__", + "zOrder": "156", + "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": "2110", + "typeID": "__group__", + "zOrder": "157", + "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": "2111", + "typeID": "__group__", + "zOrder": "158", + "measuredW": "278", + "measuredH": "49", + "w": "278", + "h": "49", + "x": "788", + "y": "1756", + "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": "2112", + "typeID": "__group__", + "zOrder": "159", + "measuredW": "221", + "measuredH": "143", + "w": "221", + "h": "143", + "x": "1148", + "y": "1487", + "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": "2113", + "typeID": "__group__", + "zOrder": "160", + "measuredW": "194", + "measuredH": "42", + "w": "194", + "h": "42", + "x": "1162", + "y": "1545", + "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": "2114", + "typeID": "__group__", + "zOrder": "161", + "measuredW": "194", + "measuredH": "42", + "w": "194", + "h": "42", + "x": "1162", + "y": "1499", + "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": "2115", + "typeID": "__group__", + "zOrder": "162", + "measuredW": "103", + "measuredH": "42", + "w": "103", + "h": "42", + "x": "1169", + "y": "1991", + "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": "2116", + "typeID": "__group__", + "zOrder": "163", + "measuredW": "108", + "measuredH": "42", + "w": "108", + "h": "42", + "x": "1277", + "y": "1991", + "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": "2117", + "typeID": "__group__", + "zOrder": "164", + "measuredW": "216", + "measuredH": "42", + "w": "216", + "h": "42", + "x": "1169", + "y": "2038", + "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": "2118", + "typeID": "__group__", + "zOrder": "165", + "measuredW": "216", + "measuredH": "42", + "w": "216", + "h": "42", + "x": "1169", + "y": "2084", + "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": "2119", + "typeID": "Label", + "zOrder": "166", + "measuredW": "87", + "measuredH": "24", + "x": "1214", + "y": "1911", + "properties": { + "size": "16", + "text": "Builtin Tools" + } + }, + { + "ID": "2120", + "typeID": "Label", + "zOrder": "167", + "measuredW": "66", + "measuredH": "24", + "x": "1046", + "y": "1911", + "properties": { + "size": "16", + "text": "3rd Party" + } + }, + { + "ID": "2121", + "typeID": "__group__", + "zOrder": "168", + "measuredW": "81", + "measuredH": "42", + "w": "81", + "h": "42", + "x": "986", + "y": "1991", + "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": "2122", + "typeID": "__group__", + "zOrder": "169", + "measuredW": "166", + "measuredH": "42", + "w": "166", + "h": "42", + "x": "986", + "y": "2037", + "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": "2123", + "typeID": "__group__", + "zOrder": "170", + "measuredW": "166", + "measuredH": "42", + "w": "166", + "h": "42", + "x": "986", + "y": "2082", + "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": "2124", + "typeID": "__group__", + "zOrder": "171", + "measuredW": "80", + "measuredH": "42", + "w": "80", + "h": "42", + "x": "1072", + "y": "1991", + "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": "2125", + "typeID": "__group__", + "zOrder": "172", + "measuredW": "418", + "measuredH": "42", + "w": "418", + "h": "42", + "x": "977", + "y": "2133", + "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": "2126", + "typeID": "__group__", + "zOrder": "173", + "measuredW": "211", + "measuredH": "42", + "w": "211", + "h": "42", + "x": "745", + "y": "1832", + "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": "2127", + "typeID": "__group__", + "zOrder": "174", + "measuredW": "211", + "measuredH": "42", + "w": "211", + "h": "42", + "x": "745", + "y": "1902", + "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": "2128", + "typeID": "__group__", + "zOrder": "175", + "measuredW": "211", + "measuredH": "42", + "w": "211", + "h": "42", + "x": "745", + "y": "1948", + "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": "2129", + "typeID": "__group__", + "zOrder": "176", + "measuredW": "221", + "measuredH": "143", + "w": "221", + "h": "143", + "x": "1146", + "y": "1664", + "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": "2130", + "typeID": "__group__", + "zOrder": "177", + "measuredW": "194", + "measuredH": "42", + "w": "194", + "h": "42", + "x": "1160", + "y": "1722", + "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": "2131", + "typeID": "__group__", + "zOrder": "178", + "measuredW": "194", + "measuredH": "42", + "w": "194", + "h": "42", + "x": "1160", + "y": "1676", + "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": "2133", + "typeID": "__group__", + "zOrder": "179", + "measuredW": "211", + "measuredH": "42", + "w": "211", + "h": "42", + "x": "745", + "y": "2017", + "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": "2134", + "typeID": "__group__", + "zOrder": "180", + "measuredW": "112", + "measuredH": "42", + "w": "112", + "h": "42", + "x": "745", + "y": "2064", + "properties": { + "controlName": "100-postgresql-infrastructure-skills:monitoring:prometheus" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "112", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "88", + "measuredH": "24", + "x": "12", + "y": "9", + "properties": { + "size": "16", + "text": "Prometheus" + } + } + ] + } + } + }, + { + "ID": "2135", + "typeID": "__group__", + "zOrder": "181", + "measuredW": "94", + "measuredH": "42", + "w": "94", + "h": "42", + "x": "862", + "y": "2064", + "properties": { + "controlName": "101-postgresql-infrastructure-skills:monitoring:zabbix" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "94", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "49", + "measuredH": "24", + "x": "22", + "y": "9", + "properties": { + "size": "16", + "text": "Zabbix" + } + } + ] + } + } + }, + { + "ID": "2136", + "typeID": "Arrow", + "zOrder": "182", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "595", + "y": "1858", + "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": "2137", + "typeID": "__group__", + "zOrder": "183", + "measuredW": "211", + "measuredH": "42", + "w": "211", + "h": "42", + "x": "491", + "y": "1832", + "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": "2138", + "typeID": "__group__", + "zOrder": "184", + "measuredW": "211", + "measuredH": "42", + "w": "211", + "h": "42", + "x": "491", + "y": "1902", + "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": "2139", + "typeID": "__group__", + "zOrder": "185", + "measuredW": "211", + "measuredH": "42", + "w": "211", + "h": "42", + "x": "491", + "y": "1948", + "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": "2140", + "typeID": "Arrow", + "zOrder": "186", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "542", + "y": "2042", + "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": "2141", + "typeID": "__group__", + "zOrder": "187", + "measuredW": "301", + "measuredH": "42", + "w": "301", + "h": "42", + "x": "426", + "y": "2016", + "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": "2142", + "typeID": "__group__", + "zOrder": "188", + "measuredW": "106", + "measuredH": "42", + "w": "106", + "h": "42", + "x": "484", + "y": "2086", + "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": "2143", + "typeID": "__group__", + "zOrder": "189", + "measuredW": "106", + "measuredH": "42", + "w": "106", + "h": "42", + "x": "484", + "y": "2132", + "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": "2144", + "typeID": "__group__", + "zOrder": "190", + "measuredW": "91", + "measuredH": "42", + "w": "91", + "h": "42", + "x": "595", + "y": "2086", + "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": "2145", + "typeID": "__group__", + "zOrder": "191", + "measuredW": "91", + "measuredH": "42", + "w": "91", + "h": "42", + "x": "595", + "y": "2133", + "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": "2146", + "typeID": "Arrow", + "zOrder": "192", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "354", + "y": "1858", + "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": "2147", + "typeID": "__group__", + "zOrder": "193", + "measuredW": "197", + "measuredH": "42", + "w": "197", + "h": "42", + "x": "264", + "y": "1832", + "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": "2148", + "typeID": "__group__", + "zOrder": "194", + "measuredW": "197", + "measuredH": "42", + "w": "197", + "h": "42", + "x": "264", + "y": "1902", + "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": "2149", + "typeID": "__group__", + "zOrder": "195", + "measuredW": "90", + "measuredH": "42", + "w": "90", + "h": "42", + "x": "264", + "y": "1948", + "properties": { + "controlName": "101-postgresql-infrastructure-skills:kubernetes-deployment:helm" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "90", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "38", + "measuredH": "24", + "x": "26", + "y": "9", + "properties": { + "size": "16", + "text": "Helm" + } + } + ] + } + } + }, + { + "ID": "2150", + "typeID": "__group__", + "zOrder": "196", + "measuredW": "104", + "measuredH": "42", + "w": "104", + "h": "42", + "x": "358", + "y": "1948", + "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": "2151", + "typeID": "__group__", + "zOrder": "197", + "measuredW": "427", + "measuredH": "42", + "w": "427", + "h": "42", + "x": "288", + "y": "1715", + "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" + } + } + ] + } + } + }, + { + "ID": "2152", + "typeID": "Arrow", + "zOrder": "198", + "w": "1", + "h": "508", + "measuredW": "150", + "measuredH": "100", + "x": "232", + "y": "1784", + "properties": { + "curvature": "0", + "leftArrow": "false", + "rightArrow": "false", + "color": "10027263", + "p0": { + "x": -0.4129169328207354, + "y": 507.5072332031234 + }, + "p1": { + "x": 0.5, + "y": 0 + }, + "p2": { + "x": -0.4129169328207354, + "y": -0.5 + } + } + }, + { + "ID": "2153", + "typeID": "Arrow", + "zOrder": "199", + "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": "2154", + "typeID": "__group__", + "zOrder": "200", + "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": "2155", + "typeID": "__group__", + "zOrder": "201", + "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": "2156", + "typeID": "__group__", + "zOrder": "202", + "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": "2157", + "typeID": "__group__", + "zOrder": "203", + "measuredW": "274", + "measuredH": "42", + "w": "274", + "h": "42", + "x": "294", + "y": "2524", + "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": "2158", + "typeID": "__group__", + "zOrder": "204", + "measuredW": "75", + "measuredH": "42", + "w": "75", + "h": "42", + "x": "294", + "y": "2572", + "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": "2159", + "typeID": "__group__", + "zOrder": "205", + "measuredW": "53", + "measuredH": "42", + "w": "53", + "h": "42", + "x": "374", + "y": "2572", + "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": "2160", + "typeID": "__group__", + "zOrder": "206", + "measuredW": "57", + "measuredH": "42", + "w": "57", + "h": "42", + "x": "431", + "y": "2572", + "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": "2161", + "typeID": "__group__", + "zOrder": "207", + "measuredW": "75", + "measuredH": "42", + "w": "75", + "h": "42", + "x": "493", + "y": "2572", + "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": "2162", + "typeID": "__group__", + "zOrder": "208", + "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": "2163", + "typeID": "__group__", + "zOrder": "209", + "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": "2164", + "typeID": "__group__", + "zOrder": "210", + "measuredW": "300", + "measuredH": "42", + "w": "300", + "h": "42", + "x": "627", + "y": "2396", + "properties": { + "controlName": "100-application-skills:migrations:practical-patterns" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "300", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "252", + "measuredH": "24", + "x": "24", + "y": "9", + "properties": { + "size": "16", + "text": "Practical Patterns and Antipatterns" + } + } + ] + } + } + }, + { + "ID": "2165", + "typeID": "__group__", + "zOrder": "211", + "measuredW": "300", + "measuredH": "42", + "w": "300", + "h": "42", + "x": "627", + "y": "2442", + "properties": { + "controlName": "101-application-skills:migrations:liquidbase-sqitch-bytebase-ora2pg" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "300", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "276", + "measuredH": "24", + "x": "12", + "y": "9", + "properties": { + "size": "16", + "text": "liquibase, sqitch, Bytebase, ora2pg etc" + } + } + ] + } + } + }, + { + "ID": "2166", + "typeID": "Label", + "zOrder": "212", + "measuredW": "110", + "measuredH": "24", + "x": "627", + "y": "2488", + "properties": { + "size": "16", + "text": "Migration Tools" + } + }, + { + "ID": "2167", + "typeID": "__group__", + "zOrder": "213", + "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": "2168", + "typeID": "__group__", + "zOrder": "214", + "measuredW": "145", + "measuredH": "42", + "w": "145", + "h": "42", + "x": "609", + "y": "2573", + "properties": { + "controlName": "103-application-skills:data-partitioning" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "145", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "121", + "measuredH": "24", + "x": "12", + "y": "9", + "properties": { + "size": "16", + "text": "Data Partitioning" + } + } + ] + } + } + }, + { + "ID": "2169", + "typeID": "__group__", + "zOrder": "215", + "measuredW": "297", + "measuredH": "42", + "w": "297", + "h": "42", + "x": "609", + "y": "2618", + "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": "2170", + "typeID": "Canvas", + "zOrder": "216", + "w": "146", + "h": "126", + "measuredW": "100", + "measuredH": "70", + "x": "608", + "y": "2682" + }, + { + "ID": "2171", + "typeID": "__group__", + "zOrder": "217", + "measuredW": "109", + "measuredH": "42", + "w": "109", + "h": "42", + "x": "619", + "y": "2663", + "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": "2172", + "typeID": "__group__", + "zOrder": "218", + "measuredW": "279", + "measuredH": "42", + "w": "279", + "h": "42", + "x": "618", + "y": "2711", + "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": "2173", + "typeID": "__group__", + "zOrder": "219", + "measuredW": "279", + "measuredH": "42", + "w": "279", + "h": "42", + "x": "618", + "y": "2756", + "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": "2174", + "typeID": "__group__", + "zOrder": "220", + "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": "2175", + "typeID": "__group__", + "zOrder": "221", + "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": "2176", + "typeID": "__group__", + "zOrder": "222", + "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": "2177", + "typeID": "__group__", + "zOrder": "223", + "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": "2178", + "typeID": "__group__", + "zOrder": "224", + "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": "2179", + "typeID": "__group__", + "zOrder": "225", + "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": "2180", + "typeID": "__group__", + "zOrder": "226", + "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": "2181", + "typeID": "__group__", + "zOrder": "227", + "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": "2182", + "typeID": "__group__", + "zOrder": "228", + "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": "2183", + "typeID": "__group__", + "zOrder": "229", + "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": "2184", + "typeID": "__group__", + "zOrder": "230", + "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": "2185", + "typeID": "__group__", + "zOrder": "231", + "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": "2186", + "typeID": "__group__", + "zOrder": "232", + "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": "2187", + "typeID": "__group__", + "zOrder": "233", + "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": "2188", + "typeID": "__group__", + "zOrder": "234", + "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": "2189", + "typeID": "__group__", + "zOrder": "235", + "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": "2190", + "typeID": "__group__", + "zOrder": "236", + "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": "2191", + "typeID": "__group__", + "zOrder": "237", + "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": "2192", + "typeID": "Arrow", + "zOrder": "238", + "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": "2193", + "typeID": "Arrow", + "zOrder": "239", + "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": "2194", + "typeID": "__group__", + "zOrder": "240", + "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": "2195", + "typeID": "__group__", + "zOrder": "284", + "measuredW": "209", + "measuredH": "135", + "w": "209", + "h": "135", + "x": "296", + "y": "2688", + "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": "2196", + "typeID": "__group__", + "zOrder": "285", + "measuredW": "190", + "measuredH": "42", + "w": "190", + "h": "42", + "x": "305", + "y": "2727", + "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": "2197", + "typeID": "__group__", + "zOrder": "286", + "measuredW": "190", + "measuredH": "42", + "w": "190", + "h": "42", + "x": "305", + "y": "2771", + "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": "2198", + "typeID": "__group__", + "zOrder": "241", + "measuredW": "209", + "measuredH": "191", + "w": "209", + "h": "191", + "x": "296", + "y": "2910", + "properties": { + "controlName": "103-troubleshooting-techniques:query-analysis" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "209", + "h": "191", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0" + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "106", + "measuredH": "24", + "x": "51", + "y": "11", + "properties": { + "size": "16", + "text": "Query Analysis" + } + } + ] + } + } + }, + { + "ID": "2199", + "typeID": "__group__", + "zOrder": "242", + "measuredW": "97", + "measuredH": "42", + "w": "97", + "h": "42", + "x": "305", + "y": "2957", + "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": "2200", + "typeID": "__group__", + "zOrder": "243", + "measuredW": "87", + "measuredH": "42", + "w": "87", + "h": "42", + "x": "406", + "y": "2957", + "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": "2201", + "typeID": "__group__", + "zOrder": "244", + "measuredW": "97", + "measuredH": "42", + "w": "97", + "h": "42", + "x": "305", + "y": "3002", + "properties": { + "controlName": "102-troubleshooting-techniques:query-analysis:pev2" + }, + "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": "40", + "measuredH": "24", + "x": "29", + "y": "9", + "properties": { + "size": "16", + "text": "PEV2" + } + } + ] + } + } + }, + { + "ID": "2202", + "typeID": "__group__", + "zOrder": "245", + "measuredW": "87", + "measuredH": "42", + "w": "87", + "h": "42", + "x": "406", + "y": "3002", + "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": "2203", + "typeID": "__group__", + "zOrder": "246", + "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": "2204", + "typeID": "__group__", + "zOrder": "247", + "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": "2205", + "typeID": "__group__", + "zOrder": "248", + "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": "2206", + "typeID": "__group__", + "zOrder": "249", + "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": "2207", + "typeID": "__group__", + "zOrder": "250", + "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": "2208", + "typeID": "__group__", + "zOrder": "251", + "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": "2209", + "typeID": "__group__", + "zOrder": "252", + "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": "2210", + "typeID": "__group__", + "zOrder": "253", + "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": "2211", + "typeID": "__group__", + "zOrder": "254", + "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": "2212", + "typeID": "__group__", + "zOrder": "255", + "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": "2213", + "typeID": "__group__", + "zOrder": "256", + "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": "2214", + "typeID": "__group__", + "zOrder": "257", + "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": "2215", + "typeID": "__group__", + "zOrder": "258", + "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": "2216", + "typeID": "__group__", + "zOrder": "259", + "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": "2217", + "typeID": "__group__", + "zOrder": "260", + "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": "2218", + "typeID": "__group__", + "zOrder": "261", + "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": "2219", + "typeID": "__group__", + "zOrder": "262", + "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": "2220", + "typeID": "__group__", + "zOrder": "263", + "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": "2221", + "typeID": "__group__", + "zOrder": "264", + "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": "2222", + "typeID": "__group__", + "zOrder": "265", + "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": "2223", + "typeID": "__group__", + "zOrder": "266", + "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": "2224", + "typeID": "__group__", + "zOrder": "267", + "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": "2225", + "typeID": "__group__", + "zOrder": "268", + "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": "2226", + "typeID": "Label", + "zOrder": "269", + "measuredW": "161", + "measuredH": "32", + "x": "794", + "y": "3575", + "properties": { + "size": "24", + "text": "Keep Learning" + } + }, + { + "ID": "2227", + "typeID": "Arrow", + "zOrder": "270", + "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": "2228", + "typeID": "Arrow", + "zOrder": "271", + "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": "2229", + "typeID": "Canvas", + "zOrder": "272", + "w": "350", + "h": "141", + "measuredW": "100", + "measuredH": "70", + "x": "975", + "y": "134" + }, + { + "ID": "2230", + "typeID": "Label", + "zOrder": "273", + "measuredW": "314", + "measuredH": "25", + "x": "989", + "y": "151", + "properties": { + "size": "17", + "text": "Find the detailed version of this roadmap" + } + }, + { + "ID": "2231", + "typeID": "Label", + "zOrder": "274", + "measuredW": "319", + "measuredH": "25", + "x": "989", + "y": "179", + "properties": { + "size": "17", + "text": "along with resources and other roadmaps" + } + }, + { + "ID": "2232", + "typeID": "__group__", + "zOrder": "275", + "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": "2233", + "typeID": "Canvas", + "zOrder": "276", + "w": "300", + "h": "141", + "measuredW": "100", + "measuredH": "70", + "x": "261", + "y": "130" + }, + { + "ID": "2234", + "typeID": "__group__", + "zOrder": "277", + "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": "2235", + "typeID": "Label", + "zOrder": "278", + "measuredW": "175", + "measuredH": "28", + "x": "286", + "y": "151", + "properties": { + "size": "20", + "text": "Related Roadmaps" + } + }, + { + "ID": "2236", + "typeID": "__group__", + "zOrder": "279", + "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": "2237", + "typeID": "__group__", + "zOrder": "280", + "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": "2238", + "typeID": "__group__", + "zOrder": "281", + "measuredW": "189", + "measuredH": "42", + "w": "189", + "h": "42", + "x": "305", + "y": "3047", + "properties": { + "controlName": "102-troubleshooting-techniques:query-analysis:explain-dalibo-com" + }, + "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": "132", + "measuredH": "24", + "x": "29", + "y": "9", + "properties": { + "size": "16", + "text": "explain.dalibo.com" + } + } + ] + } + } + }, + { + "ID": "2240", + "typeID": "__group__", + "zOrder": "287", + "measuredW": "148", + "measuredH": "42", + "w": "148", + "h": "42", + "x": "758", + "y": "2573", + "properties": { + "controlName": "105-application-skills:sharding-patterns" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "148", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "129", + "measuredH": "24", + "x": "9", + "y": "9", + "properties": { + "size": "16", + "text": "Sharding Patterns" + } + } + ] + } + } + }, + { + "ID": "2241", + "typeID": "__group__", + "zOrder": "288", + "measuredW": "95", + "measuredH": "42", + "w": "95", + "h": "42", + "x": "610", + "y": "3133", + "properties": { + "controlName": "104-troubleshooting-techniques:log-analysis:pg-cluu" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "95", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "52", + "measuredH": "24", + "x": "22", + "y": "9", + "properties": { + "size": "16", + "text": "pgCluu" + } + } + ] + } + } + }, + { + "ID": "2243", + "typeID": "__group__", + "zOrder": "289", + "measuredW": "214", + "measuredH": "42", + "w": "214", + "h": "42", + "x": "745", + "y": "2155", + "properties": { + "controlName": "103-postgresql-infrastructure-skills:monitoring:temboard" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "214", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "72", + "measuredH": "24", + "x": "71", + "y": "9", + "properties": { + "size": "16", + "text": "temBoard" + } + } + ] + } + } + }, + { + "ID": "2244", + "typeID": "__group__", + "zOrder": "290", + "measuredW": "213", + "measuredH": "42", + "w": "213", + "h": "42", + "x": "745", + "y": "2110", + "properties": { + "controlName": "102-postgresql-infrastructure-skills:monitoring:check-pgactivity" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "213", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "121", + "measuredH": "24", + "x": "46", + "y": "9", + "properties": { + "size": "16", + "text": "check_pgactivity" + } + } + ] + } + } + }, + { + "ID": "2245", + "typeID": "__group__", + "zOrder": "291", + "measuredW": "215", + "measuredH": "42", + "w": "215", + "h": "42", + "x": "745", + "y": "2200", + "properties": { + "controlName": "104-postgresql-infrastructure-skills:monitoring:check-pgbackrest" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "215", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "134", + "measuredH": "24", + "x": "41", + "y": "9", + "properties": { + "size": "16", + "text": "check_pgbackrest" + } + } + ] + } + } + }, + { + "ID": "2247", + "typeID": "__group__", + "zOrder": "292", + "measuredW": "274", + "measuredH": "42", + "w": "274", + "h": "42", + "x": "294", + "y": "2439", + "properties": { + "controlName": "103-learn-automation:terraform" + }, + "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": "71", + "measuredH": "24", + "x": "101", + "y": "9", + "properties": { + "size": "16", + "text": "Terraform" + } + } + ] + } + } + }, + { + "ID": "2248", + "typeID": "__group__", + "zOrder": "293", + "measuredW": "151", + "measuredH": "42", + "w": "151", + "h": "42", + "x": "264", + "y": "2017", + "properties": { + "controlName": "108-postgresql-infrastructure-skills:anonymization" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "151", + "h": "42", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0" + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "105", + "measuredH": "24", + "x": "23", + "y": "9", + "properties": { + "size": "16", + "text": "Anonymization" + } + } + ] + } + } + }, + { + "ID": "2251", + "typeID": "Arrow", + "zOrder": "0", + "w": "1", + "h": "54", + "measuredW": "150", + "measuredH": "100", + "x": "339", + "y": "2042", + "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": "2252", + "typeID": "__group__", + "zOrder": "294", + "measuredW": "197", + "measuredH": "42", + "w": "197", + "h": "42", + "x": "264", + "y": "2096", + "properties": { + "controlName": "100-postgresql-infrastructure-skills:anonymization:postgresql-anonymizer" + }, + "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": "175", + "measuredH": "24", + "x": "11", + "y": "9", + "properties": { + "size": "16", + "text": "PostgreSQL Anonymizer" + } + } + ] + } + } + } + ] + }, + "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/107-postgresql-infrastructure-skills/106-monitoring/102-check-pgactivity.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/102-check-pgactivity.md new file mode 100644 index 000000000..8252cefe2 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/102-check-pgactivity.md @@ -0,0 +1,45 @@ +# check_pgactivity + +## Check_pgactivity + +Check_pgactivity is a popular monitoring tool designed specifically for PostgreSQL. It is an efficient and flexible solution to monitor various aspects of a PostgreSQL database such as connectivity, queries, locks, and other key performance indicators. This tool provides an easy-to-use interface to collect and store PostgreSQL performance data, which makes it a helpful resource for database administrators and developers to keep their databases running efficiently. + +### Features + +- **Wide range of monitors:** Check_pgactivity offers numerous service checks, including database connections, query durations, transactions, WAL files, Bloat, and much more. This enables users to gain insights on virtually every important aspect of their PostgreSQL environment. + +- **Nagios Integration:** The tool seamlessly integrates with Nagios, a widely-used open-source monitoring solution, allowing administrators to include PostgreSQL monitoring into their existing monitoring setup with ease. + +- **Flexible output:** Check_pgactivity generates output that is compatible with various monitoring solutions, making it flexible enough to adapt to different systems' requirements. + +- **Custom thresholds and alerts:** Users can set specific thresholds and alerts for certain metrics, allowing them to detect potential issues early on and take appropriate action. + +- **Perl-based:** Being a Perl script, check_pgactivity is lightweight and easy to integrate into existing tools and workflows. + +### Usage + +To use check_pgactivity, you will first need to install it on your system. You can download the latest version from the [official repository](https://github.com/OPMDG/check_pgactivity/releases). Ensure that you have the required Perl modules (DBD::Pg and DBI) installed. + +Once installed, you can execute the script to perform different monitoring tasks: + +``` +check_pgactivity -s -h -U -p -d +``` + +Replace the placeholders with appropriate connection details, and choose the desired service check as per your monitoring requirements. For a full list of supported services, refer to the [official documentation](https://github.com/OPMDG/check_pgactivity/blob/master/doc/check_pgactivity.pod). + +### Examples + +To monitor the number of connections in a PostgreSQL database: + +``` +check_pgactivity -s connections -h localhost -U postgres -p 5432 -d my_database +``` + +To check the oldest transaction: + +``` +check_pgactivity -s oldest_2pc -h localhost -U postgres -p 5432 -d my_database +``` + +In conclusion, check_pgactivity is a powerful and versatile tool that can help you effectively monitor your PostgreSQL databases. By tracking various performance metrics and integrating with other monitoring solutions like Nagios, it provides comprehensive insights into your PostgreSQL environment and allows you to fine-tune and optimize its performance. \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/103-temboard.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/103-temboard.md new file mode 100644 index 000000000..78d505f77 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/103-temboard.md @@ -0,0 +1,75 @@ +# temBoard + +## Monitoring with temBoard + +In this section, we'll explore a powerful management and monitoring tool for PostgreSQL: `temBoard`. It's a user-friendly, highly adaptable, and open-source web application designed to monitor and manage your database instances efficiently. + +### What is temBoard? + +`temBoard` is a comprehensive management and monitoring solution for PostgreSQL instances. It provides a real-time, detail-oriented view of databases and their current status allowing administrators to oversee their system efficiently. Key features of temBoard include: + +- Real-time monitoring of Key Performance Indicators (KPIs). +- Historical data analysis with a built-in data retention mechanism. +- An intuitive and customizable web interface. +- High-level security with role-based access control and SSL/TLS support. +- Management of multiple PostgreSQL clusters from one central location. +- Extensibility through plugins for specific tasks. + +### Installing temBoard + +You can install temBoard using `pip`, Python's standard package manager. Before installation, you need to install the following dependencies: + +1. Python 3.6 or higher: You can install Python from the official website or through your package manager. +2. PostgreSQL server 9.4 or higher: Your PostgreSQL instance should be compatible with temBoard for full feature support. + +Use the following command to install temBoard using `pip`: + +``` +pip install temboard +``` + +### Configuring and Running temBoard + +After installation, temBoard needs to be configured properly to start monitoring the PostgreSQL database. Follow these steps to configure temBoard: + +1. Create the temBoard configuration file: The default location is `/etc/temboard/temboard.conf`. You can use the following command to create and edit the file: + + ``` + sudo mkdir /etc/temboard + sudo touch /etc/temboard/temboard.conf + sudo nano /etc/temboard/temboard.conf + ``` + +2. Add the following contents to the configuration file and modify the values as needed: + + ``` + [temboard] + address = 0.0.0.0 + port = 8888 + ssl_cert_file = /etc/temboard/temboard_SERVER_NAME_chained.pem + ssl_key_file = /etc/temboard/temboard_SERVER_NAME.key + [repository] + host = localhost + port = 5432 + user = temboard + password = temboard_password + dbname = temboard + [logging] + method = stderr + level = INFO + format = %(asctime)s [%(levelname)s] %(message)s + ``` + +3. Initialize the temBoard repository: Use the following command to initialize the database for temBoard: + + ``` + temboard-admin -c /etc/temboard/temboard.conf initialize + ``` + +4. Start temBoard as a service: You can start temBoard using the following command: + + ``` + temboard -c /etc/temboard/temboard.conf + ``` + +After running temBoard, access the web interface using your browser at `https://:8888/`. You can now monitor and manage your PostgreSQL instances using the temBoard web interface. \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/104-check-pgbackrest.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/104-check-pgbackrest.md new file mode 100644 index 000000000..9d5bd5bfe --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/106-monitoring/104-check-pgbackrest.md @@ -0,0 +1,35 @@ +# check_pgbackrest + +## Check pgBackRest + +In this section, we'll discuss the importance of monitoring your PostgreSQL backup and recovery solution, specifically focusing on `check pgBackRest`. `pgBackRest` is a widely-used backup tool for PostgreSQL databases, providing features like full, differential, incremental and archive backups, support for multiple repostories and threaded backup/restore processes. + +### Why should you monitor pgBackRest? + +Monitoring `pgBackRest` helps ensure that your PostgreSQL backups are consistent, up-to-date, and free from any potential issues. By regularly checking your backups, you'll be able to maintain a reliable and efficient backup-restore process for your PostgreSQL database. + +### How to check pgBackRest? + +`pgBackRest` provides a built-in command called `check` which performs various checks to validate your repository and configuration settings. The command is executed as follows: + +```sh +pgbackrest --stanza= check +``` + +`` should be replaced with the name of the stanza for which you want to verify the repository and configuration settings. + +### What does the check command do? + +When you run `check pgBackRest`, it performs the following tasks: + +1. **Configuration validation**: It verifies if the configuration file (`pgbackrest.conf`) contains valid settings and if the runtime parameters are properly set. + +2. **Backup consistency**: It checks the consistency of backup files within the stanza, ensuring that there are no missing or incomplete backups. + +3. **Archive validation**: It examines the state of WAL archive files, ensuring that they are present and retrievable as per the minimum and maximum settings specified in the configuration. + +4. **Remote connectivity**: If any remote repositories are configured, it checks the connectivity to remote hosts and verifies that the repository paths are accessible. + +### Conclusion + +Regularly monitoring and checking `pgBackRest` is essential for maintaining a reliable backup and recovery solution for your PostgreSQL database. By using the built-in `check` command, you can ensure that your repository and configuration settings are validated, backups are consistent, and archives are available, providing you with peace of mind and making it easier to recover your database in case of any disaster. \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/100-postgresql-anonymizer.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/100-postgresql-anonymizer.md new file mode 100644 index 000000000..d3cf93569 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/100-postgresql-anonymizer.md @@ -0,0 +1,49 @@ +# PostgreSQL Anonymizer + +PostgreSQL Anonymizer is an extension that helps you protect sensitive data by anonymizing and obfuscating it. It is essential for meeting privacy regulations and ensuring the security of personal information contained in your databases. + +## Key Features + +- **Dynamic Masking**: With dynamic masking, you can create specific views that display anonymized data. Therefore, you can have the real data in the underlying tables but only reveal necessary masked data to users or applications. + +```sql +CREATE MASKED VIEW masked_clients AS SELECT * FROM clients; +SELECT anon.mask_data('clients', 'masked_clients'); +``` +- **In-Place Anonymization**: You can also anonymize data in place, making the change permanent. This method is useful when you need to share databases between environments, such as testing and development, but want to ensure privacy. + +```sql +SELECT anon.anonymize('clients'); +``` +- **Extensible and Customizable Functions**: You can define your own anonymization functions, providing great flexibility in how you anonymize data. These custom functions can then be applied to specific columns or tables. + +```sql +CREATE FUNCTION anon_ssn(text) RETURNS text AS +$$ + DECLARE + ssn text := anon.pseudonymize_DISTRIBUTED($1); + BEGIN + RETURN substring(ssn for 2) || '-' || substring(ssn from 5 for 2) || '-' || substring(ssn from 8); + END; +$$ LANGUAGE plpgsql; +SELECT anon.set_anonymous_function('clients', 'ssn', 'anon_ssn(text)'); +``` + +## Getting Started + +1. Install the PostgreSQL Anonymizer extension: +```sql +CREATE EXTENSION IF NOT EXISTS anon CASCADE; +``` +2. Define the anonymization methods for each sensitive field in your tables. You can use the built-in functions or create your own. +```sql +SELECT anon.set_anonymous_function('clients', 'email', 'anon.email(text)'); +``` +3. Apply anonymization using either dynamic masking or in-place methods, depending on your requirements. + +## Additional Resources + +For further details on PostgreSQL Anonymizer, consult the following resources: + +- [Official PostgreSQL Anonymizer Documentation](https://postgresql-anonymizer.readthedocs.io/) +- [GitHub Repository](https://gitlab.com/dalibo/postgresql_anonymizer) \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/index.md b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/index.md new file mode 100644 index 000000000..3b511db47 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/107-postgresql-infrastructure-skills/108-anonymization/index.md @@ -0,0 +1,29 @@ +# Anonymization + +Anonymization is the process of protecting sensitive and personally identifiable information (PII) from being exposed, by replacing or changing the data in a way that it becomes impossible or extremely difficult to trace back to its original source. In the context of PostgreSQL, anonymization techniques are used to ensure the confidentiality and privacy of the data, while still making it available to perform analysis or testing. + +### Why is anonymization important? + +Anonymization has become a critical aspect of databasing due to the growing need for data protection and compliance with privacy regulations like GDPR, HIPAA, and CCPA. The consequences of non-compliance can result in fines, damage to brand reputation, and potential legal battles. + +### Techniques for anonymizing data in PostgreSQL + +1. **Data Masking**: Replacing sensitive information with random characters or numbers to make it unrecognizable. For example, replacing a person's name with random letters. + +2. **Generalization**: Aggregating data to a higher level of abstraction, such as converting exact ages to age groups or locations to regions. This will allow you to analyze the data at a higher level without compromising individual privacy. + +3. **Pseudonymization**: Replacing sensitive information with synthetic substitutes, while maintaining a mapping of the original data to the pseudonyms. This allows data to still be useful for analysis purposes but protects identifiable information. + +4. **Data Swapping**: Interchanging some sensitive data between records to create a level of ambiguity on the true data combination. For example, swapping salaries of some employees within a company. + +5. **Random Noise Addition**: Adding random noise to the data elements in a dataset, thus making it more difficult to identify individual records. + +### Tools for anonymizing data in PostgreSQL + +1. **pg_anonymize**: It's a PostgreSQL extension that can be used to mask and anonymize data. It can generate fake data, mask existing data or shuffle data between rows. + +2. **anon**: A PostgreSQL extension that offers built-in anonymization functions, like data masking, randomizing and anonymization with k-anonymity. + +3. **Data Masker**: A commercial solution that offers tools to mask and pseudonymize sensitive data according to your specific requirements. + +In conclusion, anonymization is an essential skill in any PostgreSQL infrastructure, aiming to protect sensitive and personally identifiable information. Implementing anonymization techniques will enable your organization to comply with data protection regulations and maintain the privacy of individuals, while still enabling you to analyze the patterns and trends in your data. \ 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 index 7d7b73ea1..585befde2 100644 --- 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 @@ -55,6 +55,35 @@ Example playbook for installing PostgreSQL on Ubuntu: In this example, the playbook installs the required packages, configures PostgreSQL using a custom `pg_hba.conf` file (from a Jinja2 template), and then reloads and restarts the PostgreSQL service. +## pgLift for Ansible + +pgLift is a PostgreSQL automation tool that helps you manage your PostgreSQL servers and databases. It includes a set of Ansible modules that can be used to automate common tasks, such as creating databases, users, and extensions, or managing replication and backups. + +pgLift modules are available on [Ansible Galaxy](https://galaxy.ansible.com/pglift), and can be installed using the `ansible-galaxy` command: + +```bash +ansible-galaxy collection install pglift.pglift +``` + +Once installed, you can use the modules in your playbooks: + +```yaml +--- +- name: Create a database + hosts: all + become: yes + tasks: + - name: Create a database + pglift.pglift.postgresql_db: + name: mydb + owner: myuser + encoding: UTF8 + lc_collate: en_US.UTF-8 + lc_ctype: en_US.UTF-8 + template: template0 + state: present +``` + ## Conclusion -Ansible is a powerful configuration management tool that can greatly simplify the maintenance and deployment of PostgreSQL servers. By using Ansible playbooks and PostgreSQL modules, you can automate repetitive tasks, ensure consistent configurations, and reduce human error. \ No newline at end of file +Ansible is a powerful configuration management tool that can greatly simplify the maintenance and deployment of PostgreSQL servers. By using Ansible playbooks and PostgreSQL modules, you can automate repetitive tasks, ensure consistent configurations, and reduce human error. diff --git a/src/data/roadmaps/postgresql-dba/content/108-learn-automation/103-terraform.md b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/103-terraform.md new file mode 100644 index 000000000..3f7e7b488 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/108-learn-automation/103-terraform.md @@ -0,0 +1,39 @@ +# Terraform + +Terraform is an Infrastructure as Code (IaC) tool developed by HashiCorp that allows you to streamline and automate the process of managing your infrastructure. With Terraform, you can define, provision, and manage resources like virtual machines, storage accounts, and networking resources using a declarative language called HashiCorp Configuration Language (HCL). You can also use JSON as an alternative to HCL, but HCL is more suitable for human-readable configuration. + +### Advantages of Terraform + +1. **Platform Agnostic**: Terraform supports a variety of cloud providers like AWS, Google Cloud, Azure, and many more, allowing you to manage multi-cloud deployments seamlessly. + +2. **Version Control**: By maintaining your infrastructure using code, you can leverage the power of version control systems like Git. This enables seamless collaboration, better understanding of changes, and the ability to roll back when needed. + +3. **Modularity**: Terraform promotes modular and reusable code, which simplifies the process of managing complex infrastructure setups. + +4. **State Management**: Terraform persists the state of your infrastructure, allowing you to determine real-time configuration and track changes over time. + +### Main Components of Terraform + +1. **Configuration Files**: These are written in HCL and describe the infrastructure you want to create, update, or delete. + +2. **Terraform CLI**: The command-line interface that helps you manage the lifecycle of your infrastructure. + +3. **State File**: This file stores the state of your infrastructure and is used by Terraform to determine the changes required during each operation. + +4. **Providers**: These are the plugins that integrate Terraform with various cloud providers and services. Some popular providers are AWS, Azure, Google Cloud, and many more. + +### Terraform Workflow + +The typical workflow when working with Terraform involves four main steps: + +1. **Write**: Describe your infrastructure using configuration files. + +2. **Initialize**: Run `terraform init` to download required providers and set up the backend for storing your state file. + +3. **Plan**: Run `terraform plan` to preview the actions Terraform will take to achieve the desired infrastructure state. + +4. **Apply**: Run `terraform apply` to execute the actions in the plan and provision your infrastructure. + +Keep in mind that Terraform is highly extensible, supporting custom providers, provisioners, and various third-party tools to make managing your infrastructure even more efficient. + +In conclusion, if you're looking to learn automation and improve your administration of PostgreSQL or any other infrastructure, becoming familiar with Terraform is an invaluable asset in your toolkit. \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase-ora2pg.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase-ora2pg.md new file mode 100644 index 000000000..7a7749c1b --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase-ora2pg.md @@ -0,0 +1,29 @@ +# liquibase, sqitch, Bytebase, ora2pg etc + +Migrations are crucial in the lifecycle of database applications. As the application evolves, changes to the database schema and sometimes data itself become necessary. In this section, we will explore four popular migration tools—Liquibase, Sqitch, Bytebase, and Ora2Pg provide you with a brief summary of each. + +### Liquibase + +[Liquibase](https://www.liquibase.org/) is an open-source database-independent library for tracking, managing, and applying database schema changes. It can be integrated with various build environments, such as Maven or Gradle, and supports multiple database management systems, including PostgreSQL. + +Liquibase tracks changes in XML, YAML, JSON, or SQL format and utilizes a changeset to uniquely identify each migration. Some advantages of Liquibase include its robust support for various database platforms and its compatibility with version control systems like Git or SVN. + +### Sqitch + +[Sqitch](https://sqitch.org/) is another database-agnostic schema change management tool. It does not require a specific file format for migration scripts, allowing developers to work with their preferred language (e.g., PL/pgSQL or PL/Tcl). + +Sqitch stores metadata about changes in a separate schema, which makes it easy to understand the relationship between changes and their dependencies. Furthermore, it integrates well with version control systems, making it a popular choice for managing database migrations. + +### Bytebase + +[Bytebase](https://bytebase.io/) is a web-based, open-source database schema change management tool that plays well with PostgreSQL. It provides a user-friendly interface for managing migrations, collaborating with team members, and tracking the progress of changes across multiple environments. + +Bytebase offers features such as schema versioning, pull-request-style reviews, and automated deployment. Its intuitive interface and collaborative features make it an excellent choice for teams with non-technical users or organizations looking for more control over their migration process. + +### Ora2Pg + +[Ora2Pg](https://ora2pg.darold.net/) is a specific migration tool designed to facilitate the migration of Oracle database schemas and data to PostgreSQL. It provides support for various schema objects, including tables, indexes, sequences, views, and more. + +Ora2Pg can export schema information in various formats, including SQL or PL/pgSQL, and generate migration scripts to ease the transition from Oracle to PostgreSQL. If you're planning to switch from an Oracle database to PostgreSQL, Ora2Pg is a valuable tool to streamline the migration process. + +In conclusion, Liquibase, Sqitch, Bytebase, and Ora2Pg are four powerful migration tools that can help you manage your database schema changes in a PostgreSQL environment. By understanding each tool's capabilities, you can select the right one for your specific needs and ensure smooth database migrations throughout your application's lifecycle. \ 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 deleted file mode 100644 index 0529886f6..000000000 --- a/src/data/roadmaps/postgresql-dba/content/109-application-skills/100-migrations/101-liquidbase-sqitch-bytebase.md +++ /dev/null @@ -1,38 +0,0 @@ -# Liquidbase, Sqitch, & Bytebase - -In this section, we'll take a closer look at three popular tools for managing database migrations in PostgreSQL: Liquidbase, Sqitch, & Bytebase. Each tool has its own unique features and way of handling migrations, giving you options to choose the best one that fits your project's requirements. - -## Liquidbase - -[Liquidbase](https://www.liquibase.org/) is an open-source database-independent library for tracking, managing, and applying database schema changes. It uses a changelog file to keep track of each change applied to the database, ensuring that you can always know the state of your database schema. - -### Key Features: - -- Supports various databases including PostgreSQL, MySQL, Oracle, and more. -- Changelog support using XML, JSON, YAML, or SQL formats. -- Automatically generates rollback statements for applied changes. -- Supports advanced features such as contexts, labels, and preconditions. - -## Sqitch - -[Sqitch](https://sqitch.org/) is an open-source tool designed specifically for managing database schema changes, emphasizing simplicity, ease-of-use, and native SQL support. Unlike Liquidbase, Sqitch does not make use of a changelog file, instead focusing on individual migration files (scripts). - -### Key Features: - -- Native SQL support - write your migrations in pure SQL. -- No requirement for any special language or DSL. -- Supports PostgreSQL, MySQL, SQLite, Oracle, and more. -- Offers a powerful command-line interface (CLI) for managing your migrations. - -## Bytebase - -[Bytebase](https://bytebase.io/) is a modern, web-based database schema change management and version control tool. Bytebase allows you to manage and track schema changes across multiple environments, streamlining the process of deploying database schema changes. - -### Key Features: - -- Web-based UI for managing and tracking schema changes. -- Supports PostgreSQL, MySQL, and SQLite. -- Schema change review and approval workflows. -- Integrates with popular version control systems like GitHub, GitLab, and Bitbucket. - -In summary, Liquidbase, Sqitch, and Bytebase are all great options for managing migrations in PostgreSQL. Each tool offers unique features and approaches to handling migrations, allowing you to pick the one that best fits your project's architecture and requirements. The key is to choose the right tool based on your team's preferences, development processes, and the specific needs of your application's database schema. \ 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 deleted file mode 100644 index 75df29d09..000000000 --- a/src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning-sharding-patterns.md +++ /dev/null @@ -1,33 +0,0 @@ -# Data Partitioning and Sharding Patterns - -In this section, we will discuss data partitioning and sharding patterns in PostgreSQL. When dealing with big datasets or high-throughput applications, it is essential to distribute the data across multiple databases or servers to achieve better performance, scalability, and maintainability. - -## Data Partitioning - -Data partitioning is a technique that divides a large table into smaller, more manageable pieces called partitions. Each partition is a smaller table that stores a subset of the data, usually based on specific criteria such as ranges, lists, or hashes. Partitioning can improve query performance, simplifies data maintenance tasks, and optimizes resource utilization. - -PostgreSQL supports different partitioning methods, such as: - -- **Range Partitioning:** The data in a range-partitioned table is separated into partitions based on a specified range of values for a given column. For example, orders could be partitioned by date range, with each partition containing orders within a specific date interval. - -- **List Partitioning:** The data in a list-partitioned table is separated into partitions based on specified discrete sets of values for a given column. For example, customers could be partitioned by their country, with each partition storing customers from a specific country. - -- **Hash Partitioning:** The data in a hash-partitioned table is divided into partitions using a hash function applied to one or more columns. This method distributes data uniformly across all partitions, which helps in load balancing and parallel query processing. For example, products could be hash partitioned based on the product ID. - -For more information on partitioning in PostgreSQL, refer to the [official documentation](https://www.postgresql.org/docs/current/ddl-partitioning.html). - -## Sharding - -Sharding is a technique that splits a large dataset across multiple database instances or servers, called shards. Each shard is an independent and self-contained unit that holds a portion of the overall data, and shards can be distributed across different geographical locations or infrastructures. - -In PostgreSQL environment, sharding can be achieved in different ways: - -- **Sharding at the application level:** The application defines the logic to decide which shard will store a specific data record. The application communicates directly with each shard for querying or modifying the data. - -- **Sharding using foreign data wrappers:** PostgreSQL provides a feature called foreign data wrappers (FDW) that allows a PostgreSQL server to access data stored in remote servers, treating them as local tables. By using this technique, the data can be sharded across multiple remote servers, and the local PostgreSQL instance acts as a coordinator for accessing these shards. - -- **Sharding using 3rd-party tools:** Several 3rd-party tools, such as Pgpool-II, Citus, and PLProxy, can be used for sharding purpose. These tools handle connection pooling, load balancing, and data distribution across multiple PostgreSQL instances. The choice of tools depends on the requirements, complexity, and the desired level of control over the sharding logic. - -For more information on sharding in PostgreSQL, refer to this [comprehensive guide](https://www.citusdata.com/blog/2017/07/31/sharding-in-postgresql/). - -Implementing data partitioning or sharding requires careful planning and analysis of data distribution, query patterns, and system resources. Balancing the trade-offs of manageability, performance, and scalability is crucial for a successful implementation. \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning.md new file mode 100644 index 000000000..810dee128 --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/103-data-partitioning.md @@ -0,0 +1,13 @@ +# Data Partitioning + +Data partitioning is a technique that divides a large table into smaller, more manageable pieces called partitions. Each partition is a smaller table that stores a subset of the data, usually based on specific criteria such as ranges, lists, or hashes. Partitioning can improve query performance, simplifies data maintenance tasks, and optimizes resource utilization. + +PostgreSQL supports different partitioning methods, such as: + +- **Range Partitioning:** The data in a range-partitioned table is separated into partitions based on a specified range of values for a given column. For example, orders could be partitioned by date range, with each partition containing orders within a specific date interval. + +- **List Partitioning:** The data in a list-partitioned table is separated into partitions based on specified discrete sets of values for a given column. For example, customers could be partitioned by their country, with each partition storing customers from a specific country. + +- **Hash Partitioning:** The data in a hash-partitioned table is divided into partitions using a hash function applied to one or more columns. This method distributes data uniformly across all partitions, which helps in load balancing and parallel query processing. For example, products could be hash partitioned based on the product ID. + +For more information on partitioning in PostgreSQL, refer to the [official documentation](https://www.postgresql.org/docs/current/ddl-partitioning.html). \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/109-application-skills/105-sharding-patterns.md b/src/data/roadmaps/postgresql-dba/content/109-application-skills/105-sharding-patterns.md new file mode 100644 index 000000000..3bd1a29bd --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/109-application-skills/105-sharding-patterns.md @@ -0,0 +1,11 @@ +# Sharding Patterns + +Sharding is a technique that splits a large dataset across multiple database instances or servers, called shards. Each shard is an independent and self-contained unit that holds a portion of the overall data, and shards can be distributed across different geographical locations or infrastructures. + +In PostgreSQL environment, sharding can be achieved in different ways: + +- **Sharding at the application level:** The application defines the logic to decide which shard will store a specific data record. The application communicates directly with each shard for querying or modifying the data. + +- **Sharding using foreign data wrappers:** PostgreSQL provides a feature called foreign data wrappers (FDW) that allows a PostgreSQL server to access data stored in remote servers, treating them as local tables. By using this technique, the data can be sharded across multiple remote servers, and the local PostgreSQL instance acts as a coordinator for accessing these shards. + +- **Sharding using 3rd-party tools:** Several 3rd-party tools, such as Pgpool-II, Citus, and PLProxy, can be used for sharding purpose. These tools handle connection pooling, load balancing, and data distribution across multiple PostgreSQL instances. The choice of tools depends on the requirements, complexity, and the desired level of control over the sharding logic. \ No newline at end of file diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/104-explain-dalibo-com.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/104-explain-dalibo-com.md new file mode 100644 index 000000000..3b7d0148e --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/103-query-analysis/104-explain-dalibo-com.md @@ -0,0 +1,5 @@ +# explain.dalibo.com + +explain.dalibo.com is a free service that allows you to analyze the execution plan of your queries. It is based on the [explain.depesz.com](explain.depesz.com) service. + +- [explain.dalibo.com](https://explain.dalibo.com/) diff --git a/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/104-pg-cluu.md b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/104-pg-cluu.md new file mode 100644 index 000000000..bc2fb98ca --- /dev/null +++ b/src/data/roadmaps/postgresql-dba/content/111-troubleshooting-techniques/106-log-analysis/104-pg-cluu.md @@ -0,0 +1,39 @@ +# pgCluu + +PgCluu is a powerful and easy-to-use PostgreSQL performance monitoring and tuning tool. This open-source program collects statistics and provides various metrics in order to analyze PostgreSQL databases, helping you discover performance bottlenecks and optimize your cluster's performance. + +## Key Features + +- Collects and analyzes PostgreSQL log files and system statistics. +- Provides real-time monitoring and reports with insights into various aspects, such as queries, locks, indexes, tablespaces, connections, and more. +- Offers customizable graphs for visualizing performance data. + +## Installation and Usage + +To install PgCluu, follow these steps: + +- Install the required dependencies: + ```bash + sudo apt-get install perl libdbi-perl libdbd-pg-perl libpg-perl libjson-perl rrdtool librrds-perl + ``` +- Download and extract the latest PgCluu release from [the official GitHub repository](https://github.com/darold/pgcluu/releases): + ```bash + wget https://github.com/darold/pgcluu/archive/refs/tags/v3.1.tar.gz + tar xzf v3.1.tar.gz + ``` +- Run the PgCluu collector to collect statistics: + ```bash + cd pgcluu-3.1/bin + ./pgcluu_collectd -D /path/to/output_directory -S [interval_seconds] -W [history_days] -C /path/to/pgcluu.conf + ``` +- Generate the report using the collected data: + ```bash + ./pgcluu -o /path/to/report_directory /path/to/output_directory + ``` +- Serve the report using a web server or browse the generated HTML files directly. + +## Configuration + +Before running the PgCluu collector (`pgcluu_collectd`), you can configure the `pgcluu.conf` file by providing the appropriate values for your PostgreSQL cluster, such as hostname, port number, database name, and login credentials. + +Apart from PostgreSQL-specific settings, you can also tweak other options, such as the RRDtool's data file format (JPG or SVG), time range for graphs, and more. \ No newline at end of file