Уникальное ограничение или уникальный индекс на область операции и Idempotency-Key. Оно атомарно не позволяет двум конкурентным транзакциям создать две записи с одним логическим ключом.
Какой механизм базы данных предотвращает создание дублей при конкурентных запросах с одним ключом идемпотентности?
Уникальное ограничение или уникальный индекс на область операции и Idempotency-Key. Оно атомарно не позволяет двум конкурентным транзакциям создать две записи с одним логическим ключом.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Уникальное ограничение или уникальный индекс на область операции и Idempotency-Key. Оно атомарно не позволяет двум конкурентным транзакциям создать две записи с одним логическим ключом.
Обычный SELECT, за которым следует INSERT, содержит окно гонки. Вместо этого используйте вставку с обработкой конфликта и храните результат операции вместе с отпечатком запроса. Уникальность должна учитывать пользователя или арендатора, чтобы чужие ключи не конфликтовали. Сам индекс защищает запись дедупликации, но не любой внешний эффект: его нужно согласовать с бизнес-транзакцией либо идемпотентным внешним вызовом.