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 могут быть отличия в некоторых тонкостях, но основные принципы те же, поэтому доклад будет полезен разработчикам, использующим различные технологии.

Слайды

Видео

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

  • Константин Евтеев
    Константин Евтеев X5 FoodTech Главный архитектор
    45 мин

    Стендбай в бою

    В докладе рассмотрю различные варианты использования и конфигурацию standby сервера. Расскажу о том, как сделать standby, согласованный с вашим архивом, чтобы после аварии primary и промотирования standby сервера новый стендбай можно было пересоздать из архива. Слушатели познакомятся с опытом Avito: как использовать standby для read-only запросов, какие возникали проблемы и как мы их решили. Поговорю про мониторинг standby - на какие метрики стоит обратить внимание.

  • Артем Иванов
    Артем Иванов Atos IT S&S Пресейл-инженер
    Алексей Игнатов
    Алексей Игнатов Postgres Professional DBA
    22 мин

    Миграция на СУБД PostgreSQL/Postgres Pro с многоядерными серверами Bull. Реальный опыт

    При миграции на СУБД PostgreSQL/Postgres Pro многоядерные серверы требуют к себе внимательного отношения и знания настроек для параллельной работы процессов. Как обеспечить корректную и быструю работу при многотерабайтных конфигурацях?

    В своем докладе Артем Иванов и Алексей Игнатов расскажут об опыте тестирования PostgreSQL и Postgres Pro на BullSequana S и Bullion S.

    • Особенности данной аппаратной платформы для высонагруженных конфигураций
    • Многопроцессорные Scale-up серверы и PostgreSQL/Postgres Pro
    • Результаты стрессового тестирования оборудования для СУБД PostgreSQL/Postgres Pro.

  • Александр Павлов
    Александр Павлов Modulbank .NET разработчик
    45 мин

    Как получить нагрузку в БД на пустом месте?

    Мы - обычные разработчики, которые думали о том, как разработать систему, способную выдерживать неплохие нагрузки, и это даже получилось.

    На уровне архитектуры всё было OK, но объём данных возрастал, и начали вылезать не самые приятные моменты, о которых ранее никто не думал и не понимал. Иногда это приводило нас к самым потрясающим запросам, которые мы не понимали, как можно было написать. Мой небольшой рассказ будет о том, как получить нагрузку в БД на пустом месте и как потом от неё избавиться.

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

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

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

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

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

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

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