Валентин Хомутенко / «что не так с ORM в Go»
Подписывайтесь на наш канал здесь и в телеграмм t.me/meetups_evrone, чтобы быть в курсе будущих митапов и не пропускать полезные доклады!
Валентин Хомутенко, бэкенд-инженер в Авито
«У разработчиков на разных стеках сложилось разное отношение к ORM: где-то без них не работают вообще, где-то используют лишь иногда. В Go тема использования ORM стала известным холиваром и часто можно услышать, что «ORM не нужны». Доклад - это попытка разобраться, почему так сложилось, и действительно ли у Go просто свой путь в работе с базами данных».
Если вы тоже хотите поделиться экспертизой с сообществом, ещё есть возможность стать спикером. Пишите на andy@evrone.com, он поможет составить хороший доклад. Ну а обсудить услышанное можно будет прямо в ходе митапа, спикеры будут отвечать на вопросы в комментариях. Чтобы присоединиться, скорее регистрируйтесь здесь.
00:00 - Введение
00:30 - ORM в других языках
02:10 - ORM в Go
04:12 - Почему люди пользуются ORM?
06:40 - Без ORM пишут крутаны, которые хорошо знают SQL
08:49 - В маленьких командах не нужен ORM
10:36 - ORM это всегда проблемы с производительностью
12:34 - Для сложных запросов ORM мешает
13:46 - ORM не нужен, если не тестировать реальную БД
15:34 - Микросервисы можно писать и без ORM
16:54 - Нет готовой базы знаний и лучших практик
18:26 - Никто не хочет изобретать велосипед
19:55 - Гоферы просто страдают без ORM и ничего не могут с этим сделать?
20:31 - database/sql
21:29 - sqlx
22:09 - squirrel
22:46 - migrate
24:20 - Есть ли нормальные ORM в Go?
25:06 - gorm
26:33 - reform
27:38 - ent
28:16 - pop
29:25 - bun (go-pg)
30:20 - Заключение
Пікірлер: 23
Пишу на го именно потому что здесь не принято тянуть странные проблемы на продакшн. Насколько же проще подддерживать код, когда в нем нет орм. Тоже раньше писал на питоне, много. Го как глоток свежего воздуха после питона.
В сложных запросах мне проще написать без ORM
Как хорошо, что у го есть своя идеология и люди, которые ее поддерживают и бьют по рукам новаторам. Вы хотите как в других языках, где ты нативный язык вообще можешь не знать, а должен знать десяток фреймворков и даже не понимаешь, что происходит, вокруг сплошная магия! Вам дали язык, он со всем справляется, практически, из коробки,если хочется добавить, то вот вам библиотеки) ну не нужно тянуть в него лишнее, орм и тд, и заставлять разработчика бороться и копаться в инструменте, а не в решении проблемы
А можно в описание к видео добавить ссылки на затронутые ORM из доклада, а то перематывать и искать нужный момент не удобно. И спасибо за данное видео.
Классный доклад
Клево, спасибо за доклад)
В микросервисах базу не шарят между разными компонентами, которые делают разные команды. Поэтому зависимости проще отследить и меньше риски, чем в монолитной архитектуре, где поменяешь тип у колонки - и где-то неизвестно где отвалится
Худшее что может сделать ORM - дать унифицированный доступ к любой БД. Звучит круто, а на деле просто отрезание всех уникальных фич ради которых и существуют разные БД.
@user-vg1sr9ye5s
Ай бұрын
Я только ради этого и использую ОРМ. Нафиг не нужны эти фичи, если они влияют на синтаксис SQL и с одной на другую базу нужно переписывать код.
@maxpain177
12 күн бұрын
@@user-vg1sr9ye5s А у вас такое развлечение каждую неделю переходить на новую БД? Над большими проектами работали? Партиционирование таблиц использовали, к примеру?
если хотите ORM лучше не используйте SQL и всё.
КГ\АМ
Спасибо за доклад. было бы интересно узнать так же об prisma которая хорошо зарекомендовала себя в js, и добавляет поддержку golang
@yarbersheer8559
2 жыл бұрын
Prisma Client Go is no longer officially maintained.
@ebriussenex9850
Жыл бұрын
Там ещё бекенд самой ормки на расте, что довольно интересно
Sqlc не упоминается
@vladislavdudnikov26
Жыл бұрын
Видео старое, stable-версия sqlc вышла в 2020 только
Да, ORM - это круто! В проекте Doctrine делала два запроса в одном 12 JOIN, второй 8 JOIN. Руками переписал на запрос с одним JOIN и второй запрос к одной таблице. Главное, что для всех это было сюрпризом. P.S. Меня брали как Go Developer, но потом заставили опуститься до PHP.
ORM нужно уметь пользоваться. Не заставляйте ORM делать джойны выгребая все сразу, а старайтесь делать одиночные запросы. Джойны и в чистом SQL будут тормозить. Если хорошо оптимизировать орм, то она может работать быстрее всяких связок db/sqlx.
@greenbear8179
7 ай бұрын
джоины в чистом скл тормозят только в слаборазвитых умах ормщиков.
В больших и сложных проектах где очень сложные сущности и взаимоотношения между данными базы без ORM не обойтись. ORM снижает производительность впринципе. Но, это меньшее зло по сравнению с тем, что могут натворить шаловливые ручки программистов имеющих произвольный доступ к таблицам базы данных. Типичный пример - богомерзкий 1С, поумолчанию использует ORМ, управлять базой из 1500(ERP среднего предприятия) таблиц имеющих сложные взаимосвязи практически нереально.