ORM vs SQL — Дебаты: что побеждает в реальных проектах? Александр Вершилов #50
В этом выпуске мы поговорили с Александром Вершиловым — разработчиком с 15-летним опытом и руководителем отдела разработки в Сириус.Курсах. Мы устроили дебаты про ORM. Обсудили чем ORM отличается от query-builder’а, разобрали типичные проблемы N+1 и ленивых связей, сравнили подходы Code-First и Data-First к миграциям, а также поделились приёмами, как обойтись без ORM и не потерять производительность. Подписывайтесь на канал «Организованное программирование» в Telegram: https://ttttt.me/orgprog – Список подкаст-платформ (Apple Podcast, Google Podcast, Spotify, Яндекс.Музыка и другие): https://podcast.ru/1734325321 – Смотреть в ВК Видео: https://vkvideo.ru/video-224967259_456239161 Вы узнаете, когда строгая типизация (на примере Haskell) спасает проект, какие настройки ORM могут «положить» продакшен и какие практики позволяют держать базу под контролем. А так же решите для себя, брать ли ORM в следующий проект или сразу писать SQL. В этом видео: 00:00 Введение. Почему мы всё ещё спорим про ORM? 00:42 Да начнутся дебаты! Бой за и против ORM 03:43 Что такое ORM на пальцах — быстро, чётко, по делу 05:57 PHP и ORM: от древности до Laravel 08:26 ORM глазами хаскелиста — определение через опыт 10:16 Как типизация усложняет или упрощает маппинг 12:00 Связи решают всё: зачем они важны в любой базе 15:10 Фильтрация и динамика: где builder выигрывает у SQL 19:16 Тестируем SQL: что делать с ошибками на проде 23:55 Почему auto-инструментация — это роскошь не для всех 27:08 Query builder — обязательный минимум для любого проекта? 30:48 Когда ORM спасает время (и нервы) 35:33 Сериализация "на автомате" — магия или хорошая инженерия? 38:16 Промышленный стандарт = спокойствие в команде 41:04 Магия рефлексии: когда модель = пустой класс 42:56 Код first: почему он иногда опаснее, чем кажется 45:01 Zero downtime и миграции: возможно ли идеальное развертывание? 51:01 Как PHP прошёл путь к миграциям: взгляд в прошлое 55:33 Когда SQL тормозит: ищем виновника 59:10 Запросы: главная претензия к ORM 01:06:28 Как распознать N+1 запрос и не страдать 01:09:38 Пример Elixir: ORM без боли и магии 01:14:09 Где заканчивается SQL и начинается здравый смысл 01:20:39 Как удалять данные и при этом не терять их 01:23:50 ORM и бизнес-логика: когда класс — не просто класс 01:30:15 Декларативность vs. контроль: можно ли совместить? 01:33:51 Генерация объектов: действительно ли тормозит? 01:37:47 Оптимистичная блокировка спасает не только от конфликтов 01:42:39 Транзакции, блокировки и реалии продакшена 01:46:23 Нерешаемая проблема мутабельности 01:49:52 Когда "умная" ORM становится врагом архитектуры 01:52:26 Заключение. Как жить с ORM и не страдать? #ORM #LazyLoading #NPlusOne #ActiveRecord #DataMapper #MigrationPatterns #Hibernate #RailsORM #Ecto #UnitOfWork #SoftDelete #SQL #Дебаты #ПродуктивноеAPI #ХаскельORM ORM vs SQL — Дебаты: что побеждает в реальных проектах? Александр Вершилов #50
В этом выпуске мы поговорили с Александром Вершиловым — разработчиком с 15-летним опытом и руководителем отдела разработки в Сириус.Курсах. Мы устроили дебаты про ORM. Обсудили чем ORM отличается от query-builder’а, разобрали типичные проблемы N+1 и ленивых связей, сравнили подходы Code-First и Data-First к миграциям, а также поделились приёмами, как обойтись без ORM и не потерять производительность. Подписывайтесь на канал «Организованное программирование» в Telegram: https://ttttt.me/orgprog – Список подкаст-платформ (Apple Podcast, Google Podcast, Spotify, Яндекс.Музыка и другие): https://podcast.ru/1734325321 – Смотреть в ВК Видео: https://vkvideo.ru/video-224967259_456239161 Вы узнаете, когда строгая типизация (на примере Haskell) спасает проект, какие настройки ORM могут «положить» продакшен и какие практики позволяют держать базу под контролем. А так же решите для себя, брать ли ORM в следующий проект или сразу писать SQL. В этом видео: 00:00 Введение. Почему мы всё ещё спорим про ORM? 00:42 Да начнутся дебаты! Бой за и против ORM 03:43 Что такое ORM на пальцах — быстро, чётко, по делу 05:57 PHP и ORM: от древности до Laravel 08:26 ORM глазами хаскелиста — определение через опыт 10:16 Как типизация усложняет или упрощает маппинг 12:00 Связи решают всё: зачем они важны в любой базе 15:10 Фильтрация и динамика: где builder выигрывает у SQL 19:16 Тестируем SQL: что делать с ошибками на проде 23:55 Почему auto-инструментация — это роскошь не для всех 27:08 Query builder — обязательный минимум для любого проекта? 30:48 Когда ORM спасает время (и нервы) 35:33 Сериализация "на автомате" — магия или хорошая инженерия? 38:16 Промышленный стандарт = спокойствие в команде 41:04 Магия рефлексии: когда модель = пустой класс 42:56 Код first: почему он иногда опаснее, чем кажется 45:01 Zero downtime и миграции: возможно ли идеальное развертывание? 51:01 Как PHP прошёл путь к миграциям: взгляд в прошлое 55:33 Когда SQL тормозит: ищем виновника 59:10 Запросы: главная претензия к ORM 01:06:28 Как распознать N+1 запрос и не страдать 01:09:38 Пример Elixir: ORM без боли и магии 01:14:09 Где заканчивается SQL и начинается здравый смысл 01:20:39 Как удалять данные и при этом не терять их 01:23:50 ORM и бизнес-логика: когда класс — не просто класс 01:30:15 Декларативность vs. контроль: можно ли совместить? 01:33:51 Генерация объектов: действительно ли тормозит? 01:37:47 Оптимистичная блокировка спасает не только от конфликтов 01:42:39 Транзакции, блокировки и реалии продакшена 01:46:23 Нерешаемая проблема мутабельности 01:49:52 Когда "умная" ORM становится врагом архитектуры 01:52:26 Заключение. Как жить с ORM и не страдать? #ORM #LazyLoading #NPlusOne #ActiveRecord #DataMapper #MigrationPatterns #Hibernate #RailsORM #Ecto #UnitOfWork #SoftDelete #SQL #Дебаты #ПродуктивноеAPI #ХаскельORM ORM vs SQL — Дебаты: что побеждает в реальных проектах? Александр Вершилов #50