Всем привет!
Допустим есть сайт, на котором пользователь может добавить пост, к этому посту можно добавлять комментарии, комментарии можно лайкать, пользователи получают уведомление о лайке и ответе на их комментарий. Плюс получает рейтинг за комментарии. В общем стандартный пост вконтакте, но лучше взять pikabu для примера.
Предположим к посту добавлено 1500 комментариев (пример пикабу, там есть столько комментов)
Но что делать если пользователь решает удалить пост?
Есть два варианта:
- 1. Удаляем все лайки к посту и комментариям, удаляем все уведомления связанные с комментами и постом, удаляем все картинки в комментариях и все картинки в посте, удаляем все комментарии, удаляем пост.
- 2. Отметить пост как удаленный и при любой выборке постов указывать добавлять
WHERE `status` <> 'delete'
С первым вариантом проблема в том, что при удалении нужно сделать тысячи запросов, ну если оптимизировать, то меньше, но смысл один - это тяжелая операция...
А вот со вторым еще больше проблем... Если мы не удаляем попутные данные вроде комментариев, то в профиле остаются ссылки на "мои комментарии", где будут и комменты к удаленному посту. Такая же история и с уведомлениями...
Подскажите, как удаляются такие большие массивы данных?