Масштабируемое решение для многопоточных комментариев

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

Что-то вроде этого - единственное, что я могу придумать

$query = execute_query...('SELECT * FROM `comments` WHERE `post` = "1"');
foreach($query as $comment){
    $replies = execute_query...('SELECT * FROM `comment_replies` WHERE `comment` = "' . $comment['id'] . '"');
    if($replies){
        echo $comment['body']; //....
        foreach($replies as $reply){ /*....*/ }
    }
    else{
        echo $comment['body'];
    }
}

Поэтому мне нужны советы о структуре базы данных и о том, как я могу получить все многопоточные комментарии с учетом производительности, пожалуйста:)

3 ответа

Решение

Я уверен, что вы найдете статью " Управление иерархическими данными в MySQL" полезной. Эти две таблицы могут быть легко объединены в одну

Почему бы не присоединиться к комментариям и таблице comment_replies?

затем просто добавьте дополнительное сгенерированное поле, которое показывает, является ли это комментарием или comment_reply. И выберите их, если в foreach, как:

if($type == 'comment') 
{
      //do something with the comment
}
elseif($type == 'comment_reply')
{
      //do something with the comment reply
}

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

Я бы выбрал модель списка смежности, а не модель вложенного множества, потому что с моделью вложенного множества мне пришлось бы строить всю структуру дерева на каждой операции INSERT и DELETE, выполняемой над таблицей, и, если у меня есть 1000 записей, для одной INSERT или Операция УДАЛИТЬ все записи должны быть обновлены, что занимает больше времени для выполнения. Моя структура базы данных будет:

Также я написал небольшую систему комментариев с php mysql jquery и ajax. Взгляните на http://pradipchitrakar.com.np/programming/threaded-comment-system/

Другие вопросы по тегам