PostgreSQL как платформа для разработки приложений
3 июля
Иван Фролков
Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.
В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.
План семинара:
-
PostgreSQL как платформа для разработки приложений.
- Наивный подход: пишем форум без использования базы данных.
- Что делать, если возникает ошибка при обновлении данных?
- Как правильно обработать исключение? Снапшоты и лог изменений.
-
Паттерн Observer. Что делать, если имплементация паттерна выдает исключения?
- В каком состоянии данные оказываются в результате?
- Как восстановить прежнее состояние?
- Какое состояние считать прежним?
- Как реализовать лог состояний?
-
Многопоточная реализация паттерна Observer.
- Нужны блокировки.
- Простые блокировки не помогают: их надо уметь ставить и читать. Нужен API для работы с данными, причем достаточно низкоуровневый.
- Нужна система управления блокировками, они должны быть разных типов, нужно уметь определять дедлоки.
- Что делать? Переписать все на эрланге? А потом на хаскеле!? А потом обратно?
-
СУБД!
- Не надо вести лог изменений, он уже есть.
- Поддержка “многопоточности” — из коробки, блокировки давно написаны и отлажены.
- Резервное копирование готово к использованию.
- Есть репликация.
- Удобства доступа к данным: SQL и PL/PGSQL.
- Как упростить себе жизнь: Object-Relational Mappers.
-
Работа с данными в стиле Postgres.
- Сиквенсы, констрейнты, уникальные id.
- Common Table Expressions.
- hstore, json.
-
Рецепты SQL и PL/PGSQL.
- Views.
- Рекурсия.
- Обработка исключений.
- Обмен сообщениями.
Презентация (часть 1)
Презентация (часть 2)
Презентация (часть 3)