Приветствую!
Я делаю сайт (в продакшен ещё не выгрузил), он предполагается высоконагруженным.
В нём есть лента с постами (например как в контакте).
К постам юзеры пишут комменты. Эти комменты имеют 2 уровня вложенности. Их можно лайкать.
К выгрузке
Каждый раз когда юзер пишет коммент или лайкает, алгоритм делает:
1) снова собираю все комменты к посту, делаю перебор массива - дабы создать свою структуру (мне нужны вложенные комменты)
2) получившийся массив я сериализую и записываю в поле к самому посту
это я сделал вместо того, чтобы:
1) при выгрузке постов искать их комменты
2) устанавливать свою структуру комментов (вложения)
Правильным ли я пошёл путём?
Идти вторым путём накладно, а первый вариант отрабатывается при написании коммента и лайке каждый раз.
Или можно было поступить как-то иначе? Уж голову сломал, не получает максимально оптимизировать...
1. Преждевременная оптимизация - зло.
2. Денормализация БД - тоже зло, но можно попытаться его "правильно готовить".
У вас получилось этакое кеширование в БД. Я бы писал готовый html-блок или json в файл или в memcache, потому что для базы эта информация - мусор. Причем такого рода мусор может в будущем выйти боком, при каких-то сложных операциях с таблицей постов.