title

text

Алексей Фадеев
Алексей Фадеев Sibedge Старший разработчик .NET, евангелист Postgres.
: декабря
45 мин

ORM: как писать запросы и не сводить с ума СУБД

Многие специалисты, обслуживающие СУБД не любят эти три буквы - ORM, потому что не раз видели сгенерированные многоэтажные запросы для простейших операций. Однако, практика показывает, что источник проблемы - не ORM, а разработчики, не умеющие ими пользоваться. В этом докладе я расскажу основные принципы, как писать код для ORM, генерирующий «хорошие» запросы, а также покажу «плохие» примеры кода, и что из них получается на выходе. Основные идеи – при написании кода мыслить в SQL, научиться заранее видеть, какой запрос будет сгенерирован. Но даже обретя такой навык нужно всегда проверять выходной SQL для сложных запросов. Приведу конкретный пример, когда незначительное изменение в ORM-логике меняет объём выходного SQL в десятки(!) раз. Расскажу о дополнительных инструментах и хитростях. А именно – отключение трекинга, конструкция Include, разный синтаксис для JOIN, как получить больше данных за меньшее число запросов, как эффективно писать запросы с группировкой, и зачем нужны проекции. Не обойду стороной и случаи, когда эффективно решить задачу средствами ORM не получается (например, запросы с рекурсией). Кроме SELECT-запросов немного расскажу о средствах Batch-Update/Delete, позволяющих обновлять и удалять данные средствами ORM без загрузки на клиент. Несколько слов будет и о вставке – как заставить ORM быстро вставлять большие объёмы данных через Multi-Insert и COPY. Будет упомянуто и о поддержке в ORM специфичных для PostgreSQL типов данных – массивов, hstore и jsonb. Может возникнуть вопрос – а есть ли вообще смысл использовать ORM, раз нужно столькому научиться. Преимущества их использования есть, и об этом тоже будет сказано. Все примеры будут на технологии Entity Framework для платформ .Net Core и .Net Framework на языке C#. Для Hibernate/NHibernate могут быть отличия в некоторых тонкостях, но основные принципы те же, поэтому доклад будет полезен разработчикам, использующим различные технологии.

Слайды

Видео

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

  • Юрий Жуковец
    Юрий Жуковец ЗАО Дилжитал-Дизайн Архитектор ПО
    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).

  • Александр Любушкин
    Александр Любушкин ООО "ФОРС Телеком" Технический директор
    Рустам Абдрахимов
    Рустам Абдрахимов ООО Форс-Телеком Главный эксперт
    22 мин

    Live Universal Interface (LUI) - средство коллективной разработки WEB-интерфейса прикладных систем для Postgres

    В нашей компании разработан программный продукт Live Universal Interface (LUI), - инструмент для быстрого создания и изменения унифицированных экранных форм для WEB-браузеров без компиляции программного кода, при этом достаточно знать только SQL.

    LUI нацелен на сегменты В2В, В2G, G2C и B2C, и предназначен для использования в системах биллинга, управления финансами, учета и контроля производства, где необходимо решать, в первую очередь, функциональные задачи, а не демонстрировать излишние графические элементы.

    Коллективная разработка обеспечивается хранением всего объема наработок в базе данных, которая может располагаться как на корпоративном сервере, так и в «облаке» на сторонней площадке.

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

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

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

  • Вадим Подольный
    Вадим Подольный АО "РАСУ" Независимый эксперт
    45 мин

    Высоконагруженная распределенная система управления современной АЭС

    В докладе будет представлена новая платформа распределенной системы управления АЭС.

    Вы узнаете, как обеспечивается управление сложнейшими объектами автоматизации в мире. В режиме жесткого реального времени обеспечивается работа более 150 специальных подсистем, управляющих различными технологическими процессами АЭС, таких как система управления реактором мощностью выше 1000 МВт и турбиной весом более 2000 тонн. Более 100К источников данных от датчиков и до 500К расчетных параметров. 5 разновидностей физических процессов: нейтронная кинетика, гидродинамика, химия и радиохимия и физика прочности.

    При некоторых отклонениях вся система превращается в огромный источник DDoS полезной диагностической информации, которой всегда больше, чем способна переварить сеть и вычислительные ресурсы автоматизированной системы, что мешает нормальному управлению объектом. Вы узнаете, как мы «разруливаем» такие проблемы.

    Из доклада вы узнаете об аппаратной и программной архитектуре таких систем, узнаете, как обеспечивается резервирование и репликация данных в таких системах, зачем нужна избыточность данных и технологическое разнообразие. Как обеспечивается управление нагрузками, как устроен QoS. И что будет, если отключится система нормальной эксплуатации, как, например было на Фукусиме.

    Но мы все же про кодинг. Никаких SSD и HDD, только InMemory, структуры данных из десятков миллионов элементов, забудьте про кэш процессора, он не работает. Ваш новый Xeon 4-го поколения потерял все преимущества и превратился в "тыкву", поэтому закатываем рукава и ковыряемся в таймингах, жесточайшей аcинхронике и выжимаем из железа максимум. Кто слабое звено - процессор, память, ОС или сеть. Выясняем это.