Несколько структур отображения и конструкций хранения систем комментариев.
Несколько структур отображения и конструкций хранения систем комментариев.

1. Введение

Система комментариев является важной частью веб-сайта интернет-сообщества и имеет большое значение для расширения участия пользователей и повышения активности веб-сайта. К основным функциям системы комментариев в основном относятся: пользователи оставляют комментарии, читают комментарии, отвечают на комментарии и т. д. (Современные системы комментариев могут также включать в себя сортировку, фильтрацию, поиск и другие функции).

Чтобы улучшить взаимодействие с пользователем системы комментариев, система комментариев должна иметь хорошую структуру отображения и дизайн хранилища для поддержки одновременного доступа большого количества пользователей и большого объема хранилища данных. В этой статье будут представлены три распространенные цены на отображение систем комментариев и схемы их хранения:

  • плиточная структура
  • вложенная структура
  • Гибридная структура (два уровня вложенности)

2. Плоская (линейная) структура обзора

1. Что такое плоская (линейная) структура обзора?

Линейная структура, также известная как плоская структура или линейная структура, — это самый простой и распространенный способ отображения комментариев. В этой структуре комментарии расположены в хронологическом порядке: самые новые комментарии располагаются вверху или внизу, в зависимости от дизайна сайта. Каждый комментарий независим и не иерархичен с другими комментариями. Эта структура проста и понятна, ее легко реализовать и понять.

Основными характеристиками линейной структуры являются: простая структура и удобство просмотра; она не поддерживает подробные беседы, поскольку ответы не могут быть напрямую связаны с конкретными комментариями; она подходит для сценариев, когда бесед мало или беседы неважны;

2. Применимые сценарии и примеры

Линейно структурированная система комментариев подходит для сценариев, где диалог не является основной целью или где пользователей больше интересует свежий контент. Например, на новостных сайтах, сайтах блогов и т. д. пользователи обычно уделяют больше внимания самой статье, а не комментариям других пользователей. Они могут просматривать последние комментарии, но с меньшей вероятностью будут погружаться в их обсуждение.

Другой пример — обзоры продуктов на сайтах электронной коммерции. Пользователи обычно просматривают последние обзоры или самые полезные обзоры, не обращая внимания на диалог между обзорами. Таким образом, для удовлетворения потребностей достаточно линейно структурированной системы комментариев.

  • Моменты WeChat
  • Github issue

3. Хранение технических заданий на проектирование

Структура линейного отображения комментариев имеет относительно простую структуру хранения из-за сложной взаимосвязи ответов на комментарии.

Независимо от кэширования и другой логики, вы можете обратиться к следующему дизайну таблицы.

Имя поля

тип данных

описывать

comment_id

INT

Уникальный идентификатор комментария, обычно возрастающее целое число.

user_id

INT

Уникальный идентификатор пользователя, разместившего комментарий.

content

TEXT

Текстовое содержание комментария.

post_time

TIMESTAMP

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

target_id

INT

Уникальный идентификатор человека, которому посвящен комментарий, например статьи, продукта или другого пользователя.

reply_to_id

INT

Уникальный идентификатор комментария, на который был дан ответ или процитирован. Это поле может быть пустым, если данный комментарий не является ответом или ссылкой на другой комментарий.

3. Вложенная (деревовидная) структура комментариев.

1. Что такое вложенная (деревовидная) структура комментариев?

Вложенная (деревовидная) структура комментариев — это распространенный способ организации онлайн-комментариев, который позволяет пользователям отвечать под комментариями других пользователей, образуя иерархическую структуру беседы. Эту структуру часто визуализируют в виде дерева, где корневым узлом является исходное сообщение, а каждый дочерний узел является ответом родительскому узлу.

К особенностям вложенных структур комментариев относятся:

  1. Иерархия. Каждый комментарий может иметь один или несколько подкомментариев, образующих иерархическую структуру беседы. Эта иерархия позволяет пользователям легко отслеживать и участвовать в определенных темах обсуждений.
  2. Контекстуальная релевантность. Поскольку каждый комментарий является ответом на конкретный комментарий, они часто явно релевантны контексту. Это позволяет читателям лучше понять смысл и цель каждого обзора.
  3. Динамический: структура вложенных комментариев позволяет вставлять новые комментарии в любом месте, либо как новый комментарий верхнего уровня, либо как ответ на существующий комментарий. Такая динамика позволяет дискуссиям расти и развиваться с течением времени.
  4. Масштабируемость: структура вложенных комментариев может вместить любое количество комментариев и ответов, что позволяет легко масштабировать ее для проведения крупномасштабных онлайн-обсуждений.
  5. Интерактивность: структура вложенных комментариев побуждает пользователей участвовать в обсуждениях, поскольку они могут напрямую отвечать на комментарии других пользователей, а не просто комментировать исходное сообщение. Такая интерактивность может повысить вовлеченность и удовлетворенность пользователей.

2. Сценарии использования и примеры

Вложенные (деревовидные) структуры комментариев подходят для многих сценариев онлайн-взаимодействия, особенно тех, которые требуют углубленных обсуждений и многоуровневых разговоров.

Вот несколько сайтов, использующих вложенные древовидные структуры.

  • Reddit

3. Проект хранения древовидной структуры комментариев.

Существует два основных подхода к типичному проектированию хранилища для древовидных структур просмотра: модель списка смежности и модель перечисления путей.

  1. Модель списка смежности: В этой модели каждый комментарий имеет поле идентификатора родительского комментария. Идентификатор родительского комментария комментария верхнего уровня обычно имеет значение null или определенное значение. Преимущество этого метода в том, что структура данных проста, ее легко понять и реализовать. Однако запрос всех дочерних отзывов конкретного обзора или запрос всех родительских отзывов конкретного обзора может потребовать нескольких запросов к базе данных, что менее эффективно. Имя поля тип данных описывать id int Уникальный идентификатор комментария parent_id int Идентификатор родительского комментария. Идентификатор родительского комментария верхнего уровня может иметь значение null или определенное значение. content text
  2. Модель перечисления путей: В этой модели каждый комментарий имеет поле пути, в котором записан путь от верхнего комментария к текущему комментарию. Например, если комментарий B является дочерним по отношению к комментарию A, а комментарий C является дочерним по отношению к комментарию B, то путь комментария A может быть «A», путь комментария B может быть «A/B», а путь комментария C может быть «А/Б/С». Преимущество этого метода заключается в том, что для запроса всех подкомментариев определенного комментария или запроса всех комментариев-предков определенного комментария требуется только один запрос к базе данных, что очень эффективно. Однако вставка новых комментариев или перемещение комментариев может потребовать обновления путей к нескольким записям, что менее эффективно. Имя поля тип данных описывать id int Уникальный идентификатор комментария path text Путь от верхнего комментария к текущему комментарию, например «A/B/C». content text Содержание комментария

4. Смешанная структура комментариев (двухуровневая вложенная структура)

1. Двухуровневая структура вложенных комментариев.

Двухуровневая структура вложенных комментариев — это распространенный способ организации онлайн-комментариев, который позволяет пользователям комментировать тему, а также отвечать на комментарии других пользователей.

Эта структура обычно принимает форму основного комментария (также называемого корневым комментарием или комментарием верхнего уровня), за которым следует ряд подкомментариев. Ответы на дочерние комментарии представляют собой скорее ссылочные отношения, чем отношения «родитель-потомок». Все их родительские узлы являются основными комментариями.

Основное преимущество этой структуры заключается в том, что она позволяет легко отслеживать и организовывать ветки обсуждений, что облегчает пользователям понимание и участие в обсуждении. При этом уровень комментариев ограничен, чтобы пользователи не были слишком погружены во взаимодействие комментариев и не возвращались к теме.

2. Применимые сценарии структуры вложенных комментариев второго уровня являются разумными.

Двухуровневая структура вложенных комментариев широко используется в различных интернет-сообществах, форумах, блогах и новостных сайтах. Она позволяет пользователям комментировать темы, а также отвечать на комментарии других пользователей (ответы на комментарии первого уровня представлены родительским элементом). -дочерние узлы). Формат организации, ответы на второстепенные комментарии организованы в плоском порядке).

Большинство отечественных сообществ, форумов и видеосайтов используют эту двухуровневую структуру вложенных комментариев.

  • Чжиху
  • Станция Б

3. Проект хранения двухуровневой структуры вложенных комментариев.

Field

Type

Description

comment_id

INT

Уникальный идентификатор каждого отзыва, первичный ключ

parent_id

INT

comment_id родительского комментария каждого комментария. Для комментариев первого уровня это поле имеет значение NULL.

topic_id

INT

Идентификатор темы, к которой относится каждый комментарий

content

TEXT

Содержание комментария

user_id

INT

Идентификатор пользователя, разместившего комментарий

post_time

TIMESTAMP

Время публикации комментария

reply_to_id

INT

Уникальный идентификатор вторичного комментария, на который был дан ответ или который был процитирован. Это поле может быть пустым, если данный комментарий не является ответом или ссылкой на другой комментарий.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose