Soft Delete сохраняет строку, помечая её удалённой. Это облегчает восстановление, но требует единообразной фильтрации, продуманной уникальности и отдельной политики физической очистки.
Что такое Soft Delete (мягкое удаление) на уровне БД? Какие архитектурные проблемы с индексами, уникальностью полей и производительностью ORM возникают при использовании флага is_deleted = True в больших таблицах?
Soft Delete сохраняет строку, помечая её удалённой. Это облегчает восстановление, но требует единообразной фильтрации, продуманной уникальности и отдельной политики физической очистки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Soft Delete сохраняет строку, помечая её удалённой. Это облегчает восстановление, но требует единообразной фильтрации, продуманной уникальности и отдельной политики физической очистки.
Обычный unique-индекс продолжает учитывать удалённые строки. В PostgreSQL частичный unique-индекс по активным строкам может разрешить повторное использование значения, но восстановление старой записи тогда способно конфликтовать.
ORM-фильтр по умолчанию не защищает raw SQL, JOIN и административные обходы. Большой объём удалённых данных увеличивает индексы и стоимость обслуживания; частичные индексы полезны только при подходящих запросах. Продумайте каскады, аудит, retention и гонки восстановления. Soft Delete не равен полноценной истории версий и не заменяет обязательное удаление данных.