ivinnic
@ivinnic
Full-Stack developer

Хранить удаленные строки через deleted_at или отдельную таблицу?

Добрый день!

Вопрос к highload разработчиками, но не факт :)

Есть мульти пользовательское приложение, где состояние удаленных данных, нужно будет синхронизировать с конечными пользователями.

потребность в том что бы хранить удаленные данные возникает по следующей причине:
у пользователя в indexdb хранятся данные, которые потом синхронизируются с сервером.
При синхронизации нужно получить из таблиц данные по updated_at create_at deleted_at которые были после последней синхронизации.

Вопрос в том какие есть варианты хранения удаленных данных.
Вижу два варианта.

1. Иметь колонку deleted_at где будет хранится дата удаление. В таком случае при каждом запросе в табилцу или join нужно будет уточнять. where deleted_at is NULL .
Конечно движок позволить все это авмтомитизировать.
Но как быть с производительностью, когда есть миллионы строк в таблицах и разные другие "where"
Надо будет постоянно указывать в индексах deleted_at или как сделать что бы не было проблем со скоростью получения данных? Какие есть практики.
Партицирование?

2. Иметь зеркало базы, в которую будут перемещаться удаленные строки.
Плюсы, облегчаются запросы базу.
Минусы? ну разве что синхронизировать структуру таблиц.

3. Можно создать таблицу в которой бы хранились пары table_name id deleted_at. которые можно было бы использовать для синхронизации.

Буду очень благодарен за любую информацию по этому направлению, или ресурс где можно почитать об архитектуре!
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Это ноги растут из dbase, где удаление не было удалением как таковым?
В чем видится недостаток чистого delete средствами СУБД?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы