BlissCodeHub

BlissCodeHub 

Помогаем в IT 🧐

0subscribers

33posts

Разберем интересный вопрос с собеса на backend node.js (middle позиция) разработчика

Расскажите о минусах ORM 🧐
1. Для сложных структур данных и запросов автогенерированные запросы иногда могут быть неэффективны по сравнению с ручным написанием SQL. В пример приведём ситуацию, когда ORM может вызвать проблему с производительностью при выполнении сложных операций, таких как n+1 запросы - то есть, при извлечении связанных сущностей делается несколько отдельных запросов, вместо одного(можно отнести сюда TypeORM).
Как это лечить?
- Использование JOIN в запросах для извлечения связанных данных за один раз вместо множественных запросов для каждого объекта.
- ORM Prisma поддерживают пакетную загрузку, объединяя несколько однотипных запросов в один.
2. ORM стремится абстрагировать работу с БДшкой, но это не всегда возможно. Разрабу всё равно приходится юзать SQL, так как абстракция ORM не всегда успешно охватывает всю сложность взаимодействия. Например, когда речь идёт о сложных операциях - агрегациях данных, составных запросах или использовании специфичных для БД функций (окна PostgreSQL)
3. Проблема с несрабатывающим уникальным индексом в TypeORM - возникает, если в таблице уже присутствуют дубликаты, что нарушает работу механизма уникальности. Лечить можно ручной корректировкой миграций или удалением дубликатов до выполнения миграции
4. TypeORM может некорректно сгенерировать SQL-запрос для блокировки строки с помощью FOR UPDATE или других методов. Если блокировка реализована неправильно, может возникнуть ситуация, когда строки не блокируются, что приведет к несогласованности данных, когда два запроса параллельно обновляют одно и то же значение.

Присоединяйтесь к нашему общему
чату и Discord серверу :)
Subscription levels2

Bliss Scout

$6.4 per month
• Доступ к закрытому чату с топикам;
• Доступ к базе знаний;
• Подписка на ежедневную рассылку задач по программированию;
• Доступ к ревью резюме при помощи кастомных промптов (ChatGPT-4o, 6 запросов в месяц);
• Тематические созвоны с админами раз в месяц;
• Доступ к базе решений с реальных проектов (8 попыток поиска в месяц);
• Генерация задач по заданной теме (2 задачи в день);
• Генерация достижений для резюме по направлениям Frontend / Backend (6 запросов в месяц).

Bliss Ranger

$12.7 per month
Все бонусы уровня "Bliss Scout"
+
• Доступ к ревью резюме при помощи кастомных промптов (ChatGPT-4o, 16 запросов в месяц);
• Тематические созвоны с админами 3 раза в месяц;
• Доступ к базе решений с реальных проектов (20 попыток поиска в месяц);
• Генерация задач по заданной теме (5 задач в день);
• Генерация достижений для резюме по направлениям Frontend / Backend (24 запросов в месяц);
• Индивидуальные созвоны с админами 2 раза в месяц.
Go up