PostgreSQL как платформа для разработки приложений

3 июля
Иван Фролков

Уникальный семинар от опытного "базиста" Ивана Фролкова призван наглядно пояснить слушателям адекватность применения реляционных СУБД на задачах веба. В рамках доклада Иван рассмотрит типичные "грабли", на которые натыкаются разработчики, и субоптимальные решения, изобретаемые с целью побороть возникшие проблемы. В качестве альтернативы, коллега Фролков наглядно пояснит, как эти же задачи решаются штатными средствами PostgreSQL.

В качестве бонуса Иван — "ветеран" промышленной разработки ПО для реляционных СУБД — проведет краткий ликбез по рекомендуемым практикам построения SQL-запросов и программирования на языке PL/PGSQL.

План семинара:

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

Презентация (часть 1) Презентация (часть 2) Презентация (часть 3)

Студентам – бесплатно!