В этом выпуске мы поговорили с Александром Вершиловым — разработчиком с 15-летним опытом и руководителем отдела разработки в Сириус.Курсах. Мы устроили дебаты про ORM. Обсудили чем ORM отличается от query-builder’а, разобрали типичные проблемы N+1 и ленивых связей, сравнили подходы Code-First и Data-First к миграциям, а также поделились приёмами, как обойтись без ORM и не потерять производительность.
Вы узнаете, когда строгая типизация (на примере Haskell) спасает проект, какие настройки ORM могут «положить» продакшен и какие практики позволяют держать базу под контролем. А так же решите для себя, брать ли ORM в следующий проект или сразу писать SQL.
(00:00) - Введение. Почему мы всё ещё спорим про ORM?
(02:18) - Что такое ORM на пальцах — быстро, чётко, по делу
(04:32) - PHP и ORM: от древности до Laravel
(07:01) - ORM глазами хаскелиста — определение через опыт
(08:51) - Как типизация усложняет или упрощает маппинг
(10:35) - Связи решают всё: зачем они важны в любой базе
(13:45) - Фильтрация и динамика: где builder выигрывает у SQL
(17:51) - Тестируем SQL: что делать с ошибками на проде
(22:30) - Почему auto-инструментация — это роскошь не для всех
(25:43) - Query builder — обязательный минимум для любого проекта?
(29:23) - Когда ORM спасает время (и нервы)
(34:08) - Сериализация "на автомате" — магия или хорошая инженерия?
(36:51) - Промышленный стандарт = спокойствие в команде
(39:39) - Магия рефлексии: когда модель = пустой класс
(41:31) - Код first: почему он иногда опаснее, чем кажется
(43:36) - Zero downtime и миграции: возможно ли идеальное развертывание?
(49:36) - Как PHP прошёл путь к миграциям: взгляд в прошлое
(54:08) - Когда SQL тормозит: ищем виновника
(57:45) - Запросы: главная претензия к ORM
(01:05:03) - Как распознать N+1 запрос и не страдать
(01:08:13) - Пример Elixir: ORM без боли и магии
(01:12:44) - Где заканчивается SQL и начинается здравый смысл
(01:19:14) - Как удалять данные и при этом не терять их
(01:22:25) - ORM и бизнес-логика: когда класс — не просто класс
(01:28:50) - Декларативность vs. контроль: можно ли совместить?
(01:32:26) - Генерация объектов: действительно ли тормозит?
(01:36:22) - Оптимистичная блокировка спасает не только от конфликтов
(01:41:14) - Транзакции, блокировки и реалии продакшена
(01:44:58) - Нерешаемая проблема мутабельности
(01:48:27) - Когда "умная" ORM становится врагом архитектуры
(01:51:01) - Заключение. Как жить с ORM и не страдать?
★ Support this podcast ★