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 могут быть отличия в некоторых тонкостях, но основные принципы те же, поэтому доклад будет полезен разработчикам, использующим различные технологии.
Слайды
Видео
Другие доклады
-
Дмитрий Юхтимовский Gilev.ru технический лидер
Магические фокусы с последующим разоблачением (1С+PG)
Магические фокусы с последующим разоблачением (1С+PG):
- Фокус первый. Как убедить бухгалтерию купить новый сервер.
- Фокус второй. Как показать, что MS SQL быстрее PostgreSQL.
- Фокус третий. Как показать, что PostgreSQL быстрее MS SQL Server.
-
Федор Сигаев Postgres Professional технический директор, ведущий разработчик PostgreSQL
Вперед в прошлое
Иной раз есть большое желание вернуть базу данных в прошлое, на день, два или несколько дней. Причины самые разные, но чаще всего: посмотреть, что поменялось, приложение после обновления повело себя некорректно, повеление свыше сделать как вчера. Классический способ все знают - держим опорные резервные копии и наборы WAL-логов для возможности восстановления на произвольный момент. И такой способ - головная боль для DBA/администраторов и быстро не делается. Безусловно, есть способы несколько оптимизировать этот процесс, но без downtime это не обходится. PostgresPro предлагает новый способ - снапшоты или снимки состояния БД и возможность вернуться к ним.
-
Федор Сигаев Postgres Professional технический директор, ведущий разработчик PostgreSQL
Малоизвестные, но достойные расширения Постгреса
Постгрес хорошо известен своей расширяемостью, которая делает его универсальным и пригодным практически для любого проекта. Многие расширения хорошо известны и широко используются, как, например, PostGIS - фактический стандарт для open sourc'ных ГИС, или hstore - расширение для хранения данных "ключ-значение". Я расскажу о менее известных, но очень полезных расширениях, которые дают полезную функциональность и/или повышают производительность.
Благодаря наличию API для создания расширений, их может разрабатывать программист без компетенции "ядерного" разработчика, и создавать в них свои функции, типы данных, операторы, индексы, и даже методы доступа (знаете, что это?)
Для этого доклада из сотен расширений я выбрал два:
- VOPS - заметно улучшает производительность OLAP-запросов с помощью векторных операций,
- pg_variables - обеспечивающее сессионные переменные, которые можно использовать в том числе и на read-only репликах
-
Василий Пучков ООО Главный эксперт
Интеграция серверов PostgreSQL в корпоративную сеть
Корпоративные стандарты защиты информации, обеспечения надёжности и унификации ПО: Аутентификация Kerberos (на Windows и Linux) в среде Active Directory. Особенности 1С Предприятие. Подключение к системе резервного копирования (HP Data Protector). Подключение к системе мониторинга Solarwinds.