Что бы я включил в курс о Postgresql
Столкнувшись с вопросом “Что бы Вы сказали о нашем курсе по Postgresql?”, я пришел к выводу, что будет правильно сформулировать мой ответ как ТЗ автору такого курса. Далее - оно.
1. База
Базовая документация Postgresql - https://www.postgresql.org/docs/
Ее версия на русском - https://postgrespro.ru/docs, но этот перевод предназначен “исключительно для использования в личных и/или некоммерческих целях”, поэтому, если курс - коммерческий, на перевод ссылаться не надо (но слушателям стоит о нем знать).
Обратная связь
- Два вида работ с БД - это разработка и администрирование. Будет полезно сразу узнать, зачем пришли слушатели, тут бы помогла анкета из десятка пунктов, чтобы понять, что именно хочет получить текущая группа
- ознакомиться с документацией и пройти опрос “понятно/надо пояснять/иное” - это позволит
- понять уровень группы
- отсечь очевидные темы
- сосредоточиться на нужном
2. Введение
Pg - серверное приложение, для работы с ним нужен клиент. Варианты клиентов:
- psql - консольный, базовый, идет в составе дистрибутива
- https://dbeaver.io/
- https://www.pgadmin.org/
- https://sosedoff.github.io/pgweb/
С сервером Pg можно поработать без его установки, варианты:
- https://uibakery.io/sql-playground - доступ через клиент, возможно несколько коннектов
- https://www.db-fiddle.com/ - www
- https://extendsclass.com/postgresql-online.html - www
Обратная связь
- опрос - какой клиент предпочтительнее вам, чтобы мы его скриншоты вам на занятии показывали
- опрос - как с серверами, что удобнее - ссылки выше/на своем компе/VDS с linux/иное
3. Основная часть
Для закрепления привязки курса к Базовой документации, темы я бы оформил как ссылки на ее разделы.
5. Data Definition
Тут стоит обратить внимание на CREATE UNLOGGED TABLE
, пример - PostgreSQL as a Cache
9. Functions and Operators
Тут стоит обратить внимание на
- 9.12. Network Address Functions and Operators
- 9.19. Array Functions and Operators, в частности -
unnest
но наиболее интересен блок
9.16. JSON Functions and Operators
в чем фишка (от 2017г) - Postgres vs Mongo
13. Concurrency Control
- чаще всего используется
Read Committed
, стоит добавить задачи, для которых подошли бы другие уровни - для отработки примеров подойдет https://uibakery.io/sql-playground
- еще полезное про блокировки -
SELECT ... FOR UPDATE SKIP LOCKED
14.1. Using EXPLAIN
16. Installation from Binaries
В базовой доке нет ничего про облака или докер, про облака бы пригодился список вариантов с указанием текущих цен, про докер может хватить https://hub.docker.com/_/postgres
Обратная связь
Опрос - какова для вас сложность варианта
- пакеты
- docker
PS. Про обновление версии - уже есть простое решение (https://github.com/tianon/docker-postgres-upgrade), стоит его разобрать.
31. Logical Replication
Вполне можно в рамках одного занятия реализовать N-мультимастер на логической репликации с хэш-функцией.
38.7. Function Volatility Categories
Как описать функцию, которую можно запустить на реплике (потому что она не VOLATILE
)
38.17. Packaging Related Objects into an Extension
- https://github.com/citusdata/citus в т.ч. citus_columnar
- https://tembo.io/blog/postgres-extension-in-rust-pgmq/
40. Event Triggers
Это про DDL-триггеры, хорошо бы добавить примеры (при изменении хранимки положить ее в гит?)
42. Procedural Languages
Дополнения
Проекты за рамками курса, которые, возможно, стоит упомянуть