Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Архитектура TreeView, Как работать с Деревом и БД? 
:(
    Опции темы
RadmiR
Дата 3.4.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Скажите пожалуйста, как я понимаю, при работе с БД и выводе данных в TreeView, эти данные необходимо хранить в массиве или промежуточном файле? Или организация хранения данных может быть иная?
PM MAIL   Вверх
_hunter
Дата 3.4.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



можно в массиве, можно и в файле... можно и другую органзицию использовать...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
aktuba
Дата 3.4.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



А зачем еще и отдельно хранить???  smile  И так в БД же храняться! Или я чего-то не понимаю?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Mephisto
Дата 3.4.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(RadmiR @  3.4.2007,  12:13 Найти цитируемый пост)
Скажите пожалуйста, как я понимаю, при работе с БД и выводе данных в TreeView, эти данные необходимо хранить в массиве или промежуточном файле? Или организация хранения данных может быть иная? 

Я лично делаю специально специфические контейнеры для хранения. Просто, быстро, удобно. Потом по ним строю дерево.  smile 
PM   Вверх
RadmiR
Дата 3.4.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Цитата

А зачем еще и отдельно хранить???    И так в БД же храняться! Или я чего-то не понимаю?


Просто хотелось бы, чтобы "из дерева" эти данные могли изменяться...

Цитата

можно в массиве, можно и в файле... можно и другую органзицию использовать...


А как удобнее и БЫСТРЕЕ?
PM MAIL   Вверх
aktuba
Дата 3.4.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Я лично делаю специально специфические контейнеры для хранения. Просто, быстро, удобно. Потом по ним строю дерево.


Т.е. ты считываешь данные из БД в контейнер, а потом уже строишь дерево. Верно? А зачем? Для чего такие потери скорости? Да и где "просто, быстро, удобно"??? Покажи!!!

Цитата

Просто хотелось бы, чтобы "из дерева" эти данные могли изменяться...


А что мешает это делать без использования левых массивов или файлов?

Цитата

А как удобнее и БЫСТРЕЕ? 


Непосредственно в БД.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
RadmiR
Дата 3.4.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



Цитата

Непосредственно в БД.


Насколько я понимаю, необходимо хранить id в каком-либо поле, например, в поле Дата узла дерева?
PM MAIL   Вверх
aktuba
Дата 3.4.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Насколько я понимаю, необходимо хранить id в каком-либо поле, например, в поле Дата узла дерева? 


Да, примерно так. А еще лучше - используй VirtualTreeView. Возможностей значительно больше + есть надстройка над VT именно для работы с БД.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
RadmiR
Дата 3.4.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 30.12.2006

Репутация: нет
Всего: нет



А что такое ВТВ? Это дополнительный компонент или стандартный?
PM MAIL   Вверх
VICTAR
Дата 3.4.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Дополнительный. Почитай вот это
PM MAIL   Вверх
Mephisto
Дата 4.4.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(aktuba @  3.4.2007,  14:01 Найти цитируемый пост)
Т.е. ты считываешь данные из БД в контейнер, а потом уже строишь дерево. Верно? А зачем? Для чего такие потери скорости? Да и где "просто, быстро, удобно"??? Покажи!!!

В зависимости от задачи! Если жизненный цикл твоих данных равен всему приложению, то как быть??? А как быть с BLOB полями? Все естественно зависит от задачи. Но большинство задач которые мне приходилось решать оптимально решались в две транзакции. Одна при старте, другая при закрытии. 
А про потери в скорости лучше не говори. Зависит от задачи. Иногда поиск по контейнеру (если организовать как хэш) на порядки быстрее будет проходить чем обход по БД.

П.с. В специфике моей работы время затраченное на открытие и закрытие транзакции неприемлемо. Приблизительно в 5 раз превышает норму.

Так что RadmiR все зависит от того что нужно тебе! А организовать можно как тебе угодно.  smile 

Это сообщение отредактировал(а) Mephisto - 4.4.2007, 09:44
PM   Вверх
aktuba
Дата 4.4.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

В зависимости от задачи! Если жизненный цикл твоих данных равен всему приложению, то как быть??? А как быть с BLOB полями? Все естественно зависит от задачи. Но большинство задач которые мне приходилось решать оптимально решались в две транзакции. Одна при старте, другая при закрытии. 
А про потери в скорости лучше не говори. Зависит от задачи. Иногда поиск по контейнеру (если организовать как хэш) на порядки быстрее будет проходить чем обход по БД.

Так что RadmiR все зависит от того что нужно тебе! А организовать можно как тебе угодно.  smile  


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


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Mephisto
Дата 4.4.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(aktuba @  4.4.2007,  11:23 Найти цитируемый пост)
при нескольких пользователях, использующие одну базу - такой подход в принципе не правильный

Согласен. Слушай, а ты это из первого поста понял что именно так и происходит?
Там написано что дерево строится. smile Если с этой деревяхой нужно буит дальше всякие шаманские действа проводить, то ИМХО контейнер рулит. Особенно в случае VirtualTreeView. 

Да и вообще динамическая деревяха это сильно. 
PM   Вверх
aktuba
Дата 4.4.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



 smile  Не согласен...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Mephisto
Дата 4.4.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(aktuba @  4.4.2007,  12:57 Найти цитируемый пост)
Не согласен... 

Т.е. ты считаешь что лучше написать обертку вокруг самой деревяхи?  smile 
Мне лично проще написать поведение для самого элемента дерева в отдельности. ИМХО верное решение. Не люблю процедурный подход к дереву!  smile 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.