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

Как будешь решать конфликт в базе данных при обращении к ней двух клиентов

Для решения конфликтов в БД при одновременном доступе нескольких клиентов используются механизмы транзакций и блокировок.

1. Оптимистичная блокировка
Предполагает, что конфликты редки. Проверяем версию записи перед обновлением:

python
# Пример с SQLAlchemy
record = session.query(Product).get(1)
record.version = 2  # Версия изменилась
try:
    session.commit()  # Проверка версии в БД
except StaleDataError:
    session.rollback()
    # Обработка конфликта

2. Пессимистичная блокировка
Блокируем запись на время транзакции:

sql
SELECT * FROM products WHERE id = 1 FOR UPDATE;

3. Уровни изоляции транзакций
Настраиваем в зависимости от требований (READ COMMITTED, SERIALIZABLE и др.).

Выбор зависит от частоты конфликтов и требований к производительности.

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

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

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

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