Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: CL | DM;

Вниз

Проблемы с большим деревом   Найти похожие ветки 

 
Diouzshev   (2002-11-26 13:29) [0]

Добрый день многоуважаемый All!
Суть проблемы такая:
Есть достаточно большое дерево (связь ID->IDParent) порядка 20к-25к узлов, для отображения используется dxDBTreeList, в итоге, после загрузки дерева прога занимает в памяти 30-35мб, что более-менее терпимо
Дальше жизнь дает трещину:
1. Любые обновления дерева (не каскадные) 20 сек (Celeron 400 256Mb), а надо бы еще и каскадные :(
2. Через SQL - быстро, но надо перечитывать дерево (те же 20 сек, а то и больше)
3. Есть замечательная весчь( http://ibase.ru/devinfo/treedb.htm), но как в такой штуке устраивать поиск (все таки 20 килонодов, простой навигацией не отделаешься)
4. И что больше всего смущает Regedit делает все это быстро и памяти не жрет %(

Что можете посоветовать для решения проблем?
( Уточняю:
1.Память
2.Скорость работы
3.Скорость обновления
4.Скорость поиска)


 
exit   (2002-11-26 13:36) [1]

1. Читай только ветви текущего уровня, а подчиненные в OnExpand


 
Diouzshev   (2002-11-26 13:51) [2]

To exit (26.11.02 13:36)
но как сделать тогда, чтобы это не конфликтовало с п. 4. (Поиск)?


 
exit   (2002-11-26 13:57) [3]

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


 
Diouzshev   (2002-11-26 14:24) [4]

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

Возможно я хочу пальнув в небо из берданки истребить род зайцев :(, но регедит как-то это делает ведь %(


 
MMF ©   (2002-11-26 14:28) [5]

Я работаю с компонентой MetaTree - проекция дерева на параболическую поверхность, очень удобно для сложного дерева. По сравнению с обычным TreeView намного быстрее в построении. У меня на Cel950 дерево из 20000 узлов строится примерно секунду-две. Но сортировки в этой компоненте нет. Хотя можно сохранить дерево в поток и отсортировать, а потом загрузить из потока


 
Diouzshev   (2002-11-26 14:43) [6]

Для MMF © (26.11.02 14:28)
Интересная штука, и ей можно найти массу применений :)
но для иерархического справочника, имхо, не очень подходит...
Но все равно классная :)))


 
Delphin2002 ©   (2002-11-26 15:01) [7]

неверно поставлена задача
для скорости ты должен хранить данные как в реестре
то есть ключ типа

ID | Value
----------------------------------------------|-------------
Parent0\Parent1\Parent2\Parent3\Parent4\Key | zzzzz

а не связку
ID | Parent | Value
-----------------------------
Key | Parent4
Parent4 | Parent3
Parent3 | Parent2
Parent2 | Parent1
Parent1 | Parent0





 
Diouzshev   (2002-11-26 17:38) [8]

Для Delphin2002 © (26.11.02 15:01)
В последнее время я все больше склоняюсь к такому типу хранения данных, но тут тоже есть проблемы, например, перемещение узлов в дереве...


 
Delphin2002 ©   (2002-11-26 19:26) [9]

Это решается простым SQL-em
"update ttt set id=newparent||""\""||name
where upper(id) like upper("oldparent%")"



Страницы: 1 вся ветка

Текущий архив: 2002.12.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
14-51904
Mixir
2002-11-24 10:33
2002.12.16
Как вынуть пароль и логин из соеденения?


3-51629
ALX1
2002-11-28 11:28
2002.12.16
---|Ветка была без названия|---


6-51866
izhalex
2002-10-12 12:05
2002.12.16
глюки с ActiveConnections


1-51744
Tundra
2002-12-06 15:46
2002.12.16
не работает Canvas для Jpeg


1-51692
Romaizdurdoma
2002-12-05 22:10
2002.12.16
Массив в качестве параметра