Как хранить диалоги неограниченной вложенности с иерархией?
Доброго времени суток.
Встал вопрос о хранении комментариев с сохранением иерархии и неограниченной вложенностью. Сообщений будет очень много, по этому nested sets скорее всего не подойдет. Рассматриваю Adjacency List, но обработка скопа сырых данных в php будет занимать много времени. Есть вариант использования Materialized Path - он выглядит самым лучшим, но по нему пока накопал слишком мало информации, особенно о том как его отсортировать для выдачи во фронтенд.
Прошу советов мудрых, новых слов для гуглений или еще лучше - ссылок для прочтения. Заранее спасибо
В итоге выбрал MP, сделал хранимую процедуру для добавления детей и триггер, который создает корень-комментарий для каждого поста (со значением level - (-1)), к которому я добавляю детей, следовательно у меня пути в виде (1.xxx.xxx..), так же добавил level для удобства вывода.
не знаю, я бы не стал такое городить. если путь строится из айдишников, то сортировка по пути как раз и построит нужное дерево без всяких корневых комментариев
FanatPHP: да, построит, но только тут вот свои проблемки:
1. мы изначально не знаем id комментария, следовательно нужен инсерт, затем апдейт пути
2. если использовать в качестве пути id комментария, то при достижении количества комментариев семизначных значений, уровень вложенности заметно сократится, т.к. я храню путь в varchar(250) (где-то прочитал, что лучше использовать его, нежели text) если использовать мою схему, можно достичь ~60 уровней вложенности, а если использовать id, то ~35.
Поправьте, если я неправ.
В первую очередь тебя должно интересовать, как отобразить на странице 35 уровней вложенности. Вот это - реальная проблема. Потому что при возможности комментаторы займут все уровни. Но вот как это будет выглядеть на странице, и можно ли это будет читать - вопрос, на который жетательно ответить заранее
Взятб все комментарии принадлежащие одной статье. Поьом на основании парент айди построить деоево. Это же элементарно. Я не понимаю что теюе непонятно.
FanatPHP: т.е. из бд получить ВСЕ комментарии для статьи и потом их в дерево скриптом, так?
Статьи находятся в разделах. Первый коммент ИМЕЕТ ВЕТКУ-РОДИТЕЛЯ (а родитель - еще парочку родителей). Тащить всю таблицу?!