title

text

Юрий Жуковец
Юрий Жуковец ЗАО Дилжитал-Дизайн Архитектор ПО
14:00 06 февраля
22 мин

Технические особенности портирования T-SQL кода на plpgsql и данных из MS SQL в PG на примере перевода СЭДО «Приоритет» на Postgres

Доклад посвящен продолжению проекта по переводу нашей системы электронного документооборота «Приоритет» с MS SQL на Postgres. Будут затронуты технические решения и моменты переписывания с T-SQL на plpgsql, оптимизации результативного кода и переноса данных. Дополнительно рассмотрим аспекты тестирования производительности с точки зрения поиска «плохого кода» pgplsql как кандидата на оптимизацию. Основная задача презентации - ответить на вопрос: "У нас так на T-SQL - как это перенести на PG?". Доклад предназначается для начинающих разработчиков на Postgres и является продолжением предыдущего доклада сделанного на конференции в 2017 (https://youtu.be/v6_4Szr8t14).

Слайды

Видео

Другие доклады

  • Александр Кузьменков
    Александр Кузьменков Postgres Professional Программист
    45 мин

    Новые планы выполнения запросов в PostgreSQL 11 и будущих версиях

    Одна из важных задач СУБД -- по декларативному SQL-запросу построить эффективный план его выполнения, используя разные алгоритмы сканирования и объединения таблиц. Над улучшением планирования запросов идёт непрерывная работа. Какие методы применяет PostgreSQL, чтобы получить эффективный план, что нового в этой области в версии 11, и что сейчас находится в разработке? Например, при планировании запроса можно удалять ненужные соединения, или сводить внешние и полусоединения к внутренним. Есть патчи, позволяющие выполнять merge join по пересечению интервалов, или улучшающие оценку селективности соединения с помощью многоколоночной статистики. Если говорить о сканировании отдельных таблиц, покрывающие индексы позволяют чаще использовать index-only scan. Инкрементальная сортировка и более точная оценка стоимости сортировки улучшают планы, где нужен сортированный вывод, например, для GROUP BY и ORDER BY или merge join. Мы обсудим эти и другие подобные оптимизации, которые уже реализованы или находятся в разработке.

  • Денис Смирнов
    Денис Смирнов КГБУЗ КДЦ Вивея программист
    45 мин

    Greenplum: внутреннее устройство MPP PostgreSQL для аналитики

    PostgreSQL архитектурно является классической вертикально-масштабируемая СУБД для OLTP нагрузок. Параллельно с PostgreSQL много лет существует его альтернативная горизонтально-масштабируемая MPP версия Greenplum, заточенная под большие данные и OLAP нагрузку. В докладе будет рассказано про внутреннее устройство Greenplum (распределенные транзакции, шардирование данных, секционирование с гибридным хранением во внешних системах, колоночные движки хранения со сжатием и много другое), проведено сравнение с внутренним устройством PostgreSQL и показаны области применения каждого решения.

  • Артур Закиров
    Артур Закиров Postgres Professional Разработчик
    22 мин

    Использование pg_variables в качестве временных таблиц

    PostgreSQL предоставляет возможность создания временных таблиц. Хотя временная таблица доступна только для сессии, которая ее создала, и удаляется по окончании этой сессии, вся информация о ней хранится в системном каталоге PostgreSQL. С этим связаны несколько проблем, которые затрудняют или делают невозможным использование временных таблиц в некоторых случаях. Есть различные попытки решения этой особенности, в том числе в нашей компании. Но они пока не увенчались успехом, главным образом из-за движка PostgreSQL. В докладе я хочу рассказать о довольно простом и небольшом расширении pg_variables. Оно позволяет создавать табличные переменные наряду со скалярными. Я расскажу, в каких случаях оно может заменить временные таблицы, какие у него есть достоинства и недостатки.

  • Александр Федоров
    Александр Федоров dbeaver.com Директор по развитию
    Андрей Хитрин
    Андрей Хитрин RedSys Системный архитектор
    22 мин

    Самый важный инструмент: Xobot IDE

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

    Традиционно на хранимые процедуры возлагают множество задач: трудно устоять перед соблазном исполнить операцию над данными непосредственно в хранилище, особенно в Enterprise разработке. Такой подход довольно быстро приводит к размазыванию бизнес-логики по телу хранимых процедур и резко повышает стоимость поддержки и развития системы в целом.

    Особенности жизненного цикла хранимых процедур затрудняют применение стандартных инструментов и практик по контролю изменений. Необходимо адаптировать работу с хранимыми процедурами к стандартам Change Management, оставаясь в рамках привычных для разработчика действий.

    Мы рассмотрим проблемы разработки процедурных расширений и обсудим решения, которые мы реализуем в IDE XOBOT.