Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
1-51687
MystiX
2002-12-05 19:34
2002.12.16
Помогите!!!!!!!


1-51683
V-A-V
2002-12-04 15:30
2002.12.16
Нахатие клавиш


6-51862
Romych
2002-10-21 12:26
2002.12.16
Socket - Никак не пойму


6-51852
ULTRIX
2002-10-10 22:01
2002.12.16
Получение ресурсов к папке


1-51751
Torrin
2002-12-04 10:38
2002.12.16
Сервисы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский