| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Архитектура TreeView |
| Автор: RadmiR 3.4.2007, 11:13 |
| Скажите пожалуйста, как я понимаю, при работе с БД и выводе данных в TreeView, эти данные необходимо хранить в массиве или промежуточном файле? Или организация хранения данных может быть иная? |
| Автор: _hunter 3.4.2007, 11:27 |
| можно в массиве, можно и в файле... можно и другую органзицию использовать... |
| Автор: aktuba 3.4.2007, 11:39 |
| А зачем еще и отдельно хранить??? |
| Автор: RadmiR 3.4.2007, 12:07 | ||||
Просто хотелось бы, чтобы "из дерева" эти данные могли изменяться...
А как удобнее и БЫСТРЕЕ? |
| Автор: aktuba 3.4.2007, 13:01 | ||||||
Т.е. ты считываешь данные из БД в контейнер, а потом уже строишь дерево. Верно? А зачем? Для чего такие потери скорости? Да и где "просто, быстро, удобно"??? Покажи!!!
А что мешает это делать без использования левых массивов или файлов?
Непосредственно в БД. |
| Автор: RadmiR 3.4.2007, 13:39 | ||
Насколько я понимаю, необходимо хранить id в каком-либо поле, например, в поле Дата узла дерева? |
| Автор: aktuba 3.4.2007, 14:36 | ||
Да, примерно так. А еще лучше - используй VirtualTreeView. Возможностей значительно больше + есть надстройка над VT именно для работы с БД. |
| Автор: RadmiR 3.4.2007, 15:03 |
| А что такое ВТВ? Это дополнительный компонент или стандартный? |
| Автор: VICTAR 3.4.2007, 15:59 |
| Дополнительный. Почитай вот http://forum.vingrad.ru/topic-97620/view-all.html |
| Автор: Mephisto 4.4.2007, 09:33 | ||
В зависимости от задачи! Если жизненный цикл твоих данных равен всему приложению, то как быть??? А как быть с BLOB полями? Все естественно зависит от задачи. Но большинство задач которые мне приходилось решать оптимально решались в две транзакции. Одна при старте, другая при закрытии. А про потери в скорости лучше не говори. Зависит от задачи. Иногда поиск по контейнеру (если организовать как хэш) на порядки быстрее будет проходить чем обход по БД. П.с. В специфике моей работы время затраченное на открытие и закрытие транзакции неприемлемо. Приблизительно в 5 раз превышает норму. Так что RadmiR все зависит от того что нужно тебе! А организовать можно как тебе угодно. |
| Автор: aktuba 4.4.2007, 10:23 | ||
Такой подход полезен, когда база используется только как хранение инфы (т.е, замена обычным файлам). При использовании частого изменения данных в базе, при нескольких пользователях, использующие одну базу - такой подход в принципе не правильный, т.к. получаются огромные затраты на считывание и запись данных. Самое оптимальное - прямое использование базы. А насчет поиска - хеш обычно организовывается в самой базе в отдельной таблице. Вот тебе и вопрос - где будет быстрее, в контейнере, который еще и организовать надо или в отдельной таблице непосредственно в базе... |
| Автор: Mephisto 4.4.2007, 10:34 | ||
Согласен. Слушай, а ты это из первого поста понял что именно так и происходит? Там написано что дерево строится. Да и вообще динамическая деревяха это сильно. |
| Автор: aktuba 4.4.2007, 11:57 |
| |
| Автор: Mephisto 4.4.2007, 12:05 |
Т.е. ты считаешь что лучше написать обертку вокруг самой деревяхи? Мне лично проще написать поведение для самого элемента дерева в отдельности. ИМХО верное решение. Не люблю процедурный подход к дереву! |
| Автор: aktuba 4.4.2007, 12:54 |
| Не согласен, что твой вывод правильный, насчет первого поста. У меня сложилось ощущение, что человек просто не знал, как вообще это организовать. А насчет обертки - она будет в любом случае, но это не значит, что необходимо забирать данные из базы и хранить во время работы программы отдельно от самой базы... |
| Автор: Mephisto 4.4.2007, 13:10 | ||
Все зависит от жизненного цикла этих данных и сложностю манипуляций с ними. Процедурный метод я б и сам использовал, но только в том случае если это дерево только для просмотра. Если с данными нужно делать какие-то операции - процедурный подход ИМХО фтопку. Хотя конечо все зависит от количества данных, скорости изменения, сложности данных (есть БЛОБ, нет) и.т.п. |