Встречается на собеседованиях • сегодня

Встречал ли проблемы с ORM

Да, проблемы с ORM (например, Django ORM, SQLAlchemy) встречаются довольно часто. Основные из них:

  1. N+1 проблема – когда для каждого объекта делается отдельный запрос к связанным данным.
    Решение: Использовать select_related() (Django) или joinedload() (SQLAlchemy).

  2. Сложные запросы – ORM может генерировать неэффективные SQL-запросы.
    Решение: Вручную оптимизировать или использовать raw() (Django), session.execute() (SQLAlchemy).

  1. Миграции – конфликты, долгое применение, потеря данных.
    Решение: Тестировать миграции, делать бэкапы.

  2. Блокировки – ORM может неявно блокировать таблицы.
    Решение: Использовать select_for_update() (Django) или with_for_update() (SQLAlchemy) осознанно.

Пример N+1 в Django:

python
# Плохо – N+1 запросов
books = Book.objects.all()
for book in books:
    print(book.author.name)  # Отдельный запрос для каждого автора

# Хорошо – 1 запрос
books = Book.objects.select_related('author').all()

ORMs удобны, но требуют понимания их работы "под капотом".

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы