Нужно сделать автоматическую разбивку тем.

Vitaly

Есть проблема с длинными темами. Пока еще не очень большая, но дожидаться когда жареный петух на могилке спляшет - не хочется. Длинные темы (в которых несколько ТЫСЯЧ сообщений), создают неправильную нагрузку на сервер.

Хочется организовать автоматическую нарезалку таких тем на части. Механизм следующий:

  1. В конце темы создается сообщение со ссылкой “Продолжение. Том XX” и тема закравается.
  2. Создается новая тема, с названием “Старый топик. Том XX-1”
  3. Там же проставляется ссылка на предыдущую тему.

То есть, связность сохраняется, плюс автоматическая нумерация. Размер тома около тысячи сообщений (еще не прикидывал, как лучше и как у других сделано).

Кто-нибудь сталкивался на практике с такими механизмами? У них есть недостатки?

Boroda-msk
Vitaly:

У них есть недостатки?

  1. Есть ли там механизм при просмотре и выделении под ответ с цитированием куска сообщения из первого тома размещать ответ в последнем томе… х.з. …
  2. Часто встречал практику разбивки тем не по количеству постов, а по годам, что с точки зрения логики более юзабельно - можно сделать отдельные разделы “Архив-2008”, “Архив-2007” и т.д. (примерно как сейчас наличие “пыльного чулана”) и старые куски тем переносить туда…
Vitaly

Хм… с цитированием в следующий том наверное будет облом. Тема-то закрыта. Хотя наверное можно издокториться, сделать чтобы работало. Скажем, недельку продавливать сообщения в следующий топик, а потом старый окончательно закрывать. В принципе это решаемо.

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

Boroda-msk
Vitaly:

Такая разбивка на размер не повязана. Я плохо понимаю, как такое автоматизировать.

На размер не повязана, но привязана к году, что проще для пользователей найти начало…
С точки зрения автоматизации - не вижу принципиальной разницы что бить сообщения по номерам топиков, что по дате создания последнего топика - и то и другое в базе есть…

aland

А вообще много таких тем? Насколько это критично?

Vitaly

Темы в основном во встречах-датах наверное. Они “бесконечные”. Сегодня попробую сделать выборку.

Критичность - когда-нибудь наступит полная жопа. Не хочу героически преодолевать сложности. Идей для подвигов хватает.

На форумах перелиcтывание страниц делается SQL-запросом с параметром LIMIT X,Y. А у него есть неприятная особенность, что он сначала выбирает ВСЕ записи темы, и потом отдает нужную часть. Соответственно, для больших тем каждый раз выбирается эдак по 5 тысяч строк (либо берется из кэша). Зависит от популярности темы. Как только больших и популярных тем станет много, или результаты запросов перестанут помещаться в кэш, наступит копец.

Если вовремя нарезать на части - таких проблем не будет.

AlexSr

Цитировать если надо, можно и “ручками” 😉. А то, “избаловались”.
Темы такие (больше 1000 постов) наверняка есть везде. Вот, на вскидку, из “вертолётов”: нумер раз и нумер два. Обе живые, но грузить каждый раз 70-т страниц …😮 в последней, нет явно никакой нужды.

Boroda-msk
AlexSr:

но грузить каждый раз 70-т страниц

Черт с ним…, пусть хоть по 10 грузятся, хоть по 5, только чтобы в загруженном присутствовал элемент навигации на другие страницы этой темы… IMHO

В “Магазинах” номер три.

Vitaly

Пока готовится список тем, собираю пожелания, как нарезать на части. В общем-то 2 вопроса:

  1. После скольки сообщений создавать новый том? Я бы хотел конечно “поменьше”. 1000 хватит?
  2. В каком формате метить продолжения?
  • дописывать “(том xx)”
  • дописывать “(часть xx)”
  • дописывать “. Том xx”
  • и т.д.

Что еще нужно?

AlexSr

Дурацкий вопрос , но всё же: А сквозной нумерации постов не может быть в “частях”? Было бы удобно.

Что дописывать наверно не принципиально, если это не повлияет на поиск/сортировку тем. Только что бы “бросалось в глаза” (разделители?), пожалуй и всё.

Vitaly

Сквозной нумерации постов быть не может. Проблема из то же серии, что разбивка на страницу.

Вот список тем, которые обновлялись за последние пол года и имеют более 1000 сообщений:

2710 rcopen.com/forum/f22/topic23025
6157 rcopen.com/forum/f22/topic26603
2786 rcopen.com/forum/f22/topic26779
1757 rcopen.com/forum/f22/topic27678
1675 rcopen.com/forum/f8/topic28745
1364 rcopen.com/forum/f22/topic32332
6110 rcopen.com/forum/f22/topic33015
1097 rcopen.com/forum/f81/topic34789
2971 rcopen.com/forum/f22/topic35630
3459 rcopen.com/forum/f22/topic37839
2113 rcopen.com/forum/f22/topic42458
1659 rcopen.com/forum/f22/topic43736
1377 rcopen.com/forum/f22/topic47681
2284 rcopen.com/forum/f59/topic52119
1896 rcopen.com/forum/f74/topic53001
2855 rcopen.com/forum/f22/topic53812
4698 rcopen.com/forum/f22/topic54784
3066 rcopen.com/forum/f22/topic54835
1076 rcopen.com/forum/f22/topic54980
1069 rcopen.com/forum/f27/topic55091
1180 rcopen.com/forum/f74/topic55652
1426 rcopen.com/forum/f98/topic59962
1423 rcopen.com/forum/f22/topic62858
1137 rcopen.com/forum/f74/topic64580
1370 rcopen.com/forum/f22/topic71210
1911 rcopen.com/forum/f90/topic72390
1654 rcopen.com/forum/f22/topic73547
1884 rcopen.com/forum/f27/topic76804
3765 rcopen.com/forum/f23/topic77123
1039 rcopen.com/forum/f22/topic79006
1357 rcopen.com/forum/f116/topic79668
2883 rcopen.com/forum/f116/topic81575
1009 rcopen.com/forum/f22/topic86157
1335 rcopen.com/forum/f27/topic86777
1014 rcopen.com/forum/f4/topic87597
1052 rcopen.com/forum/f59/topic95249
3367 rcopen.com/forum/f22/topic96618
1965 rcopen.com/forum/f66/topic98966
1011 rcopen.com/forum/f80/topic107010
1066 rcopen.com/forum/f90/topic108958
2096 rcopen.com/forum/f55/topic109767
1185 rcopen.com/forum/f27/topic115493
1440 rcopen.com/forum/f84/topic123299

Boroda-msk
Vitaly:

Сквозной нумерации постов быть не может.

Бог с ней, со сквозной нумерацией постов…
Можно-ли хотя бы вклячить в закрываемый том последним постом “продолжение темы” со ссылкой на начало нового тома и в новом томе первым постом “предыдущие обсуждения” со ссылкой на последний пост закрываемого тома?
Чтобы была хоть какая-либо “сквозная навигация” по теме …

Vitaly

Естественно. Я же об этом в самом первом сообщении написал.

Единственное, чего не обещаю НЕМЕДЛЕННО, это продавливание ответов из старой темы в новый том. Типа, галактеко опасности, есть очень срочные дела. Вроде понятия ленты новостей и приведения NNTP из задрипаного состояния в божеский вид. Но в течение несколько месяцев - вполне реально. Идея мне понравилась.

SAN
Boroda-msk:

Можно-ли хотя бы вклячить в закрываемый том последним постом “продолжение темы” со ссылкой на начало нового тома и в новом томе первым постом “предыдущие обсуждения” со ссылкой на последний пост закрываемого тома?

Может быть реализовать что-то вроде списка томов для перехода, аналогично списку страниц внизу обычных тем?

Boroda-msk
SAN:

аналогично списку страниц внизу обычных тем?

Можно и внизу - без разницы, как Виталию проще будет…
Только чтобы переход на том ниже был не в его начало, а в конец…

Vitaly
SAN:

Может быть реализовать что-то вроде списка томов для перехода, аналогично списку страниц внизу обычных тем?

Перед тем как что-то делать, надо решить один важный вопрос: “А нафига оно вообще нужно?”.

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

CrazyElk

форумах перелиcтывание страниц делается SQL-запросом с параметром LIMIT X,Y.

Виталий, а насколько реально отрефакторить БД? Добавив альтернативный композитный ключ посту threadId, PostNumberInThread.

Посты в таких темах в основной массе “не удаляемые” их номера в ветке не меняются. Ограничение Limit X, Y перейдет в Where как between X AND Y и кошмар “взять все и выкинуть ненужное” тихо отступит без переделки интерфейса + “сквозная нумерация” остается и т.д. - Ну то есть юзвери и не узнают, что проблема была .

WBR CrazyElk

P.S. Решать как удобнее что делать естественно Вам.

Vitaly

А вы не хотите сами забацать аддон, который композитные индексы бодренько лепит и апдейтит на большие топики? Я вам даже полный девелоперский доступ на все вобловские ресурсы организую.

SAN
Vitaly:

По одному тому отматывать ведь никто не запрещает.

В принципе - да. На практике все будет зависеть от степени востребованности старой информации.
Пример: пришел я год с лишним назад на форум Рено-Логановодов. Он существует уже неск. лет. По многим темам инфы набрались уже сотни страниц.
А прямого перехода на нужный номер страницы (как здесь) - нет. Только по шагам.
Это - КОШМАР, когда надо просмотреть наиболее актуальную информацию, скажем, за последний год…

Vitaly

Ну вперед-назад на больших темах это конечно жесть. Такого не предлагал.