Forum Webscript.Ru

Программирование => Теория, алгоритмы и стандарты => Тема начата: Xander от 23 Июля 2003, 23:29:47

Название: А вот еще про деревья нашлось
Отправлено: Xander от 23 Июля 2003, 23:29:47
http://db-maker.narod.ru/forum.htm

Убейте мессагу, если такое уже было.
Название: А вот еще про деревья нашлось
Отправлено: ThE0ReTiC от 24 Июля 2003, 10:40:12
хм... интересно...
соображение 1:
при выборке запросов-то два,
тока при вставке....
соображение 2:
малопонятно, зачем используется mysql_fetch_object
он немного нерационально расходует память,
к тому же,
если верить комментариям
[p]mysql_fetch_object[/p]
вот это:

while($thread=mysql_fetch_object()) ...

порождает жуткое количество объектов
это на первый взгляд...
Название: А вот еще про деревья нашлось
Отправлено: Xander от 24 Июля 2003, 12:43:40
Ну, конкретный код по-моему предлагается только как пример.
Название: А вот еще про деревья нашлось
Отправлено: Xander от 24 Июля 2003, 13:02:25
ThE0ReTiC
И еще: мне жарко, я туплю...но чему равен MAXINT?

Насколько я понимаю, количество мессаг в треде, которые можно вставить без их перенумерации пропорционально логарифму этого самого MAXINT, и для сравнительно небольшого числа 65536 составляет 16. Так что на реальном форуме потребность в ней будет возникать нечасто...

Поправьте, коли что не так.
Название: А вот еще про деревья нашлось
Отправлено: Xander от 24 Июля 2003, 13:10:41
...а для поля типа BIGINT UNSIGNED перенумеровывать придется ветку с более чем 64-мя сообщениями.

Вот только тут уже непонятно, не затормозит ли работа с такими числами все вставки?
Название: А вот еще про деревья нашлось
Отправлено: Макс от 24 Июля 2003, 14:13:07
если вас смущают торомоза при вставке, то можно форум разделить на 2 таблицы - в одной хранить дерево, во  второй - данные.
Вставка в первую таблицу будет происходить быстро

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

ЗЫ
кстати помнится был разговор о том что алгоритм Nested Set неудобен для форумов. Это было неудобно для класса, который я тут везде рекламировал (http://dev.e-taller.net/dbtree) потому как он может хранить лишь одно дерево в таблице и при большом форуме будет тормозить вставка.
Класс Pear:: DB :: NestedSet - позволяет хранить много деревьев в таблице, поєтому если создавать для каждого треда свое дерева, вставка сообщений заметно тормозить не должна.
Название: А вот еще про деревья нашлось
Отправлено: Xander от 25 Июля 2003, 17:03:49
Мда, алгоритм-то я реализовал. А вот сделать так, чтобы ответы в ветке шли сверху вниз, по дате добавления не могу. Третий день мучаюсь.

Может кто-нибудь подскажет, как это сделать?
Название: А вот еще про деревья нашлось
Отправлено: Макс от 26 Июля 2003, 13:47:33
Xander
а можно примерчик, в чем проблема ?
Название: А вот еще про деревья нашлось
Отправлено: Xander от 26 Июля 2003, 20:23:08
Как только найду халявный хостинг с MySQL - так сразу выложу, и покажу в чем именно проблема...