Егор Штепа
Go developer в Avanpost · 06.12
Почему ORM в Go — это зло (или благо)? Давайте разберемся! Использование ORM (Object-Relational Mapping) в Go давно стало предметом горячих споров среди разработчиков. Вот несколько аргументов за и против, чтобы вы могли выбрать свою сторону в этом войне миров: Против ORM 1. Потеря производительности. Go славится своей скоростью, а ORM, как известно, может вносить значительные накладные расходы. Прямой SQL-запрос будет работать быстрее и прозрачнее. 2. Сложности с отладкой. Ошибки в генерируемом ORM SQL коде порой превращаются в квест на несколько часов. Прямой SQL код читается проще и явно говорит, что происходит. 3. Ограничения в гибкости. ORM часто ограничивает разработчиков, усложняя использование сложных запросов, оконных функций или специфичных для базы возможностей. 4. Учить ORM вместо SQL? Go — про контроль и простоту. Учить новую абстракцию (ORM), вместо того чтобы писать SQL, который знают все, не всегда оправдано. За ORM 1. Скорость разработки. ORM экономит кучу времени на написании CRUD операций. В небольших проектах это настоящий спаситель. 2. Чистый код. Вместо мешанины из SQL-запросов в коде вы получаете удобные структуры и методы, что упрощает поддержку. 3. Кросс-БД. ORM может абстрагироваться от конкретной базы данных, упрощая переходы между СУБД. 4. Меньше рутины. ORM избавляет от необходимости писать однотипный SQL, позволяя сосредоточиться на бизнес-логике. Что происходит в Go? Сообщество Go традиционно скептически относится к излишним абстракциям, включая ORM. Такие инструменты, как GORM или Ent, делают ORM доступным и мощным, но платой за это становится потеря контроля и производительности. С другой стороны, библиотеки вроде sqlx или pgx предоставляют полу-абстракции, позволяя работать ближе к SQL и оставаясь в духе Go. Вывод 1. Если вы строите высоконагруженное приложение, где важен контроль над каждым запросом — используйте чистый SQL или что-то вроде sqlx. 2. Для типичных CRUD-приложений или стартапов ORM вполне может сэкономить время и нервы. 3. А если вы пишете в стиле Go, то, возможно, ORM вообще не ваш путь. А что думаете вы? ORM — костыль или инструмент?
Максим Юрчук
· 07.12
Мне понравился sqlc генератор
ответить
Егор Штепа
07.12
Мне, кст, генераторы тоже норм заходит
ответить
еще контент автора
еще контент автора
Егор Штепа
Go developer в Avanpost · 06.12
войдите, чтобы увидеть
и подписаться на интересных профи