По сути нужен движок, оптимизированный под хранение «очередей». Топик/чат/дискуссия - это всегда очередь/list/vector. Элементы часто тупо не удаляются, а помечаются «deleted».
Не хочется ваять традиционную табличку в реляционке, где есть:
(это абстрактный псевдо-SQL)
create table posts (
topic_id INT,
message_id INT autoincrement,
msg VARCHAR
) INDEX (topic_id, message_id);
куда потом пойдут селекты вида:
SELECT .. from posts where topic_id = 555 ORDER BY message_id offset ..;
Хочется чего-то проще, менее общего назначения, более специфичное. Пускай не SQL - пофиг вообще.
1. Топик/тред - всегда последовательность событий (древовидные не смотрим пока). Это должно «осознаваться» самим движком, а не приложением: движок должен понимать что он добавляет событие В КОНЕЦ очереди и присваивать ему нужные для этого атрибуты сам (номер в последовательности, например). Конечно традиционный автоинкремент имеет то преимущество, что можно дропнуть строку и значения автоинкрементных полей сохранятся какие были, а не съедут назад на 1, но мы не будем в нашем движке ничего дропать.
2. В списке тредов часто делают авто-всплытие свежих тредов наверх. Пускай наш движок хранения очередей тупо имеет timestamp пополнения каждой из очередей и мы это можем (а можем и НЕ) использовать для этих целей.
3. Как хранят древовидные системы срачевания (комментирования) - вообще слабо представляю, по-моему никак; это всегда тяжело и ненужно; в нормальных заведениях рубят уровень комментирования очень рано, на ютубе например лесенка вообще только до 2 уровня идёт.
Короче, какие системы для реализации форумов/комментариев в виде такого вот «хранения очередей» существуют?