• Photos
  • Schedule
  • VIP Day
  • Talks
  • Speakers
  • Contacts
  • En Ru
    VIP день — это три параллельных потока тренингов, рассчитанных на
    ограниченное количество участников.

    5 июля 2016
    Park Inn by Radisson Прибалтийская


    Главной гордостью VIP дня в рамках PG Day’16 мы считаем наших спикеров, так как это не обычные тренеры, которые читают лекции по готовой программе, построенной на теоретических пособиях, а практикующие
    эксперты по PostgreSQL, много лет ежедневно решающие десятки проблем, связанных с работой этой базы данных у различных клиентов.
    1.

    Прикладная разработка PostgreSQL.
    обучение и практикум.



    Целевая аудитория:

    Программа тренинга:

    • 1.Основные схожие и отличительные черты PostgreSQL в сравнении с популярными реляционными и нереляционными СУБД?
      • 1.1Популярные open-source решения для хранения данных и причины их выбора.
      • 1.2Какие возможности дает PostgreSQL разработчику?
      • 1.3Почему программист не должен воспринимать базу данных как “черный ящик”?
    • 2.Ключевые инструменты и ресурсы для ежедневной разработки и решения задач.
      • 2.1Какие задачи обычно решает программист и что ему реально надо знать о хранилище данных, чтобы начать разработку?
      • 2.2Минимальный набор инструментов, который будет полезен для старта?
      • 2.3Краткая вводная о psql.
    • 3.Транзакционная обработка данных как неотъемлимая часть работы СУБД.
      • 3.1Действительно ли транзакции нужны при работе с данными?
      • 3.2Основополагающие принципы “правильных” транзакций в исполнении PostgreSQL.
      • 3.3Что происходит с данными во время сбоя?
    • 4.Принципы и подходы к описанию схемы данных, DDL.
      • 4.1Что нужно знать о структуре таблиц? Эффективные подходы к организации таблиц, решающих типовые задачи (хранение бизнес-сущностей, словари данных, отображения, хранение статистики и др.)
      • 4.2Пара особенностей работы с sequences в PostgreSQL.
      • 4.3Группировка таблиц в схемы. Почему это нужно и полезно делать.
      • 4.4Копирование структуры таблиц.
      • 4.5Примеры работы с ограничениями (constraints).
      • 4.6Транзакционная обработка DDL и что это дает нам на практике?
    • 5.Прикладной DML: написание выборок, сложных запросов, построение аналитических отчетов, использование статистических функций, OLAP.
      • 5.1Как эффективно выполнять крупные выборки и выгружать их результаты?
      • 5.2Эффективные способы проверки существования записей и агрегации списков.
      • 5.3Как эффективно заполнить таблицы тестовыми данными для тестирования?
      • 5.4Как научиться работать с EXPLAIN? Основные типы индексов и примеры решения прикладных задач поисковых выборок с их помощью.
      • 5.5Примеры “продвинутого” использования индексов, демонстрация возможностей PostgreSQL по оптимизации нетривиальных выборок.
      • 5.6Эффективные приемы выборки разнородных данных.
      • 5.7Статистические функции. Что это такое и как это применить в решении реальных задач?
    • 6.Особенности работы с блокировками.
      • 6.1Что такое блокировки и почему их наличие неизбежно в любой эффективной базе данных?
      • 6.2Уровни физического блокирования данных в PostgreSQL, какие они бывают и как своими глазами это проверить? К каким конфликтам и проблемам приводит наличие блокировок? “Дедлоки” — самый распространенный пример конфликта блокировок.
      • 6.3Приемы борьбы с типовыми проблемами блокировок. Как добавить колонку в большую таблицу?
      • 6.4Как правильно делать INSERT .. ON CONFLICT UPDATE?
      • 6.5Что такое рекомендательные блокировки? Что они позволяют сделать? Примеры из практики и советы по эксплуатации.
    • 7.Написание хранимой логики в PostgreSQL.
      • 7.1Хранимая логика в PostgreSQL: плюсы и минусы.
      • 7.2Как хранимые процедуры позволяют объединять работу с данными и программирование бизнес-логики в общей среде? Примеры возможностей хранимых процедур.
      • 7.3Использование хранимой логики для выполнения сложного OLAP.
      • 7.4Динамическое формирование запросов при помощи хранимых процедур. Плюсы и минусы, способы реализации.
      • 7.5Почему использование хранимых процедур может упростить внедрение и ввод в эксплуатацию новой функциональности?
      • 7.6Отладка хранимых процедур.
      • 7.7Подходы к “выкатке” хранимой логики.
    • 8.Нестандартные типы данных.
      • 8.1 От массивов до JSON: богатые возможности хранения и обработки слабо структурированных данных в PostgreSQL.
      • 8.2 Примеры использования нестандартных типов при проектировании и разработке новой функциональности.
    • 9.Практические примеры решения типовых задач в проектах с высокой степенью нагрузки.
    Об авторе

    Роман Друзягин — технический директор 404 Group. Профильное техническое образование, десятилетний опыт коммерческой разработки в различных амплуа, от программиста до руководителя.

    Основные экспертизы: организация эффективных технических команд, разработка для PostgreSQL, управление разработкой, антикризисное управление в IT, построение отказоустойчивых систем.

    Сейчас осуществляет глобальное руководство технической экспертизой проектов компании, проводит семинары и обучающие тренинги, является соучредителем ежегодной профильной технической конференции PG Day Russia для специалистов, работающих с PostgreSQL. Неоднократный опыт выступлений с лекциями, докладами, семинарами, мастер-классами в учебных заведениях, на event-площадках и пространствах, высокопрофильных конференциях (Highload, Whale Rider, RIT).

    2.

    Как заставить постгрес работать
    эффективнее. Оптимизация запросов в PG.



    Целевая аудитория:

    Программа тренинга:

    • 1.Введение: что можно понимать под производительностью запроса.
      • 1.1 Зависимость производительности запросов от ресурсов сервера (память/диски/процессор/сеть).
      • 1.2 Что значит "приемлемая производительность запроса".
      • 1.3 Что делать, если для запроса не получается добиться приемлемой производительности.
    • 2.Индексы как основной инструмент оптимизации запросов.
      • 2.1 Введение в btree индексы и для каких запросов они подходят.
      • 2.2 Прочие индексы, доступные в PostgreSQL, и для чего они могут быть нужны.
    • 3.Начала оптимизации.
      • 3.1 Основные стадии выполнения запроса (разбор — планирование — выполнение).
      • 3.2 Как посмотреть ожидаемый план и как посмотреть реальное выполнение запроса — основы работы с explain / explain analyze.
      • 3.3 На основе чего строится план и кратко про статистику.
      • 3.4 Нет статистики — нет эффективного плана или немного про ANALYZE / Autovacuum analyze и default_statistics_target.
      • 3.5 Немного про seq_page_cost / random_page_cost / effective_cache_size.
    • 4.Простейший случай. Работаем с одной таблицей.
      • 4.1 where a = 100 или простейший пример использования индекса
      • 4.2 where a = 100 and b = 200, почему индекс по (a) + индекс по (b) — не тоже самое, что индекс по (a, b) или введение в индексы по нескольким полям.
      • 4.3 order by a / order by a limit N.
      • 4.4 select count(*) или почему так делать не надо.
      • 4.5 where a=100 order by b LIMIT N.
    • 5.Оптимизация запросов, включающих в себя 2 (и более) таблицы.
      • 5.1 Разница между nested loop / hash join / merge join.
      • 5.2 Разница между (LEFT) JOIN и IN/EXISTS с точки зрения базы и оптимизации.
      • 5.3 Разбор практических примеров.
      • 5.4 Почему не надо использовать конструкцию NOT IN (подзапрос).
    • 6.Примеры аdvanced техники оптимизации запросов, которые не сводятся к добавлению индексов.
      • 6.1 Борьба с OR запросами заменой на UNION.
      • 6.2 select distinct, используя index skip scan.
      • 6.3 Что делать, если запрос занимает 2 страницы текста, а его explain analyze — 10 страниц текста.
    • 7.Использование не btree индексов.
      • 7.1 Использование индексов по массивам значений.
      • 7.2 Полнотекстовый поиск с использованием индексов.
      • 7.3 pg_trgm и ускорение запросов с LIKE условиями.
    • 8.Ускорение запросов, изменяющих данные (INSERT/UPDATE/DELETE).
      • 8.1 Кратко про fsync / syncronous_commit и его эффекты.
      • 8.2 Почему лучше иметь 1 большой запрос, а не 1000 маленьких.
      • 8.3 Немного про COPY и ускорение загрузки больших объемов данных.
    • 9.Что еще можно сделать для ускорения работы.
      • 9.1 Построение плана — это тоже занимает время.
      • 9.2 Использование prepared запросов: плюсы и минусы.
      • 9.3 Использование хранимых процедур: плюсы и минусы.
      • 9.4 Немного про сетевые задержки или еще раз, почему 1 большой запрос лучше чем 1000 мелких.
    Об авторе

    Максим Богук — Директор по консалтингу и один из основателей компании PostgreSQL-Consulting, многолетнего лидера российского рынка услуг по сопровождению и эксплуатации СУБД PostgreSQL.

    Один из старейших в России специалистов по администрированию СУБД PostgreSQL, модератор раздела PostgreSQL форума sql.ru, эксперт международного уровня по работе планировщика и оптимизации запросов в PostgreSQL.

    За время своей работы Максим обнаружил, воспроизвел и сообщил о множестве впоследствии исправленных разработчиками багов в исходном коде PostgreSQL, по своему числу сопоставимое с ведущими коммитерами проекта.

    3.

    Как стать администратором PostgreSQL за
    один день. (Интенсивный курс)



    Целевая аудитория:

    Программа тренинга:

    • 1.Конфигурирование ОС Linux для установки PostgreSQL.
      • 1.1Выбор дистрибутива.
      • 1.2Установка PostgreSQL средствами OS или собственная сборка.
      • 1.3Настройка параметров ОС: ядра Linux и файловой системы.
      • 1.4Настройки firewall для сервера базы данных.
    • 2.Установка и базовая настройка PostgreSQL и pgbouncer.
      • 2.1Установка PostgreSQL, базовые настройки кластера.
      • 2.2Для чего нужен брокер запросов, установка и выбор конфигурации pgbouncer.
    • 3.Настройка резервного копирования и репликации. Отказоустойчивость.
      • 3.1Как работает резервное копирование, в чем характерные особенности PostgreSQL.
      • 3.2Снятие резервных копий различными способами.
      • 3.3Архивирование WAL-файлов — best practices, как обеспечить максимальную надежность при сохранении производительности.
      • 3.4Проверка надежности системы резервного копирования.
      • 3.5Восстановление.
      • 3.6Проблемы, возникающие с резервным копированием и распространенные ошибки, которые допускают администраторы.
    • 4.Продвинутые настройки.
      • 4.1Работа с оперативной памятью.
      • 4.2Дисковая производительность.
      • 4.3Диагностическая информация.
      • 4.4Настройки оптимизатора.
    • 5.Мониторинг и диагностика.
      • 5.1Общие подходы к поиску неполадок.
      • 5.2Диагностическая информация, которую необходимо собирать всегда.
      • 5.3Графические и command-line утилиты.
      • 5.4Работа с диагностическими view pg_catalog.
      • 5.5Случаи, когда стандартных средств диагностики не хватает, и что при этом делать.
    Об авторах

    Илья Космодемьянский — Генеральный директор и один из основателей компании PostgreSQL-Consulting. Администратор баз данных и консультант с более чем 10-ти летним стажем, специалист по PostgreSQL, Oracle, IBM DB2. Автор ряда уникальных курсов по PostgreSQL для администраторов и разработчиков.

    В 2012 году совместно с Николаем Самохваловым и Олегом Буниным организовал первый в России поток докладов по PostgreSQL в рамках конференции Highload++.

    В 2014 году, совместно с Романом Друзягиным, — первую в России специализированную конференцию сообщества PostgreSQL — Pg Day Russia

    Постоянный докладчик российских и международных конференций на тему эксплуатации и производительности PostgreSQL.

    Алексей Лесовский — Администратор баз данных и консультант в компании PostgreSQL-Consulting. Один из лучших в России специалистов по вопросам производительности PostgreSQL и операционной системы Linux.

    Постоянный автор planet.postgresql.org — главного международного агрегатора блогов о PostgreSQL. Одним из первых Алексей изучил и систематизировал все имеющиеся в операционной системе и в самой PostgreSQL инструменты анализа производительности, о чем подготовил ряд публикаций, докладов и учебных курсов.