Как предотвращать коллизии идентификаторов в памяти и БД

Случайность лишь уменьшает вероятность совпадения. Уникальность обеспечивает атомарная проверка и вставка: синхронизированная структура в памяти или unique constraint в базе.

Короткий ответ

Что ответить на собеседовании

Случайность лишь уменьшает вероятность совпадения. Уникальность обеспечивает атомарная проверка и вставка: синхронизированная структура в памяти или unique constraint в базе.

Подробный разбор

Ответ с пояснениями

Условие

Сервис генерирует короткий случайный ID. Несколько потоков или процессов могут получить одинаковый кандидат. Как обеспечить уникальность при хранении в памяти и в базе?

Ответ

Случайность лишь уменьшает вероятность совпадения. Уникальность обеспечивает атомарная проверка и вставка: синхронизированная структура в памяти или unique constraint в базе.

В одном процессе используйте защищённое критической секцией хранилище и повтор генерации при занятом ID. Проверка contains и отдельная запись без синхронизации создают гонку. Между процессами локальной блокировки недостаточно: база должна отвергать дубликат уникальным ограничением, после чего приложение ограниченно повторяет попытку. Ошибки других типов нельзя маскировать как коллизию.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее