Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Древовидная структура данных в БД. / 15 сообщений из 15, страница 1 из 1
10.12.2009, 21:47
    #36360031
skmdeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
Пишу одну программу. Хочется чтобы все данные, в том числе формы GUI загружались с сервера БД. Сейчас это у меня просто - в таблицах в полях c типом text (PostgreSQL) хранится настоящий XML. Потом он грузится и разбирается парсером, сразу же создавая по его данным форму со всеми элементами управления.
Потом подумал. Может лучше хранить данные в таблице, где каждое поле это узел. Структура полей примерно такая:
1. Уникальный числовой идентификатор (тип serial)
2. Идентификатор родительского элемента.
3. Имя узла
4. Данные (если есть)

Реализовать не проблема. Но есть впрос. Чтобы открыть форму придется яделать десятки запросов к БД. У меня нет большого обыта. Не будет ли это неоптимальным с точчки зрения нагрузки на сервер. Или есть другие варианты хранения древовидной структуры данных в БД?
...
Рейтинг: 0 / 0
10.12.2009, 22:18
    #36360074
Old Nick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
Какова цель сего действа?
...
Рейтинг: 0 / 0
10.12.2009, 23:25
    #36360141
vill_ager
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
не хватает идентификатора набора данных (у тебя это - имя формы)
ты хочешь построить форму:
читаешь сразу все записи, относящиеся к твоей форме, а потом строишь что надо, не обращаясь к БД
...
Рейтинг: 0 / 0
11.12.2009, 00:37
    #36360192
trdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
skmdeveloperРеализовать не проблема. Но есть впрос. Чтобы открыть форму придется делать десятки запросов к БД. У меня нет большого обыта. Не будет ли это неоптимальным с точчки зрения нагрузки на сервер.
не будет особой нагрузки из=за десятка вопросов. тем более число форм конечно и если сделать кешь на клиенте в формате того же xml можно последущие запросы просто исключить пользуясь данными клиента.

skmdeveloperИли есть другие варианты хранения древовидной структуры данных в БД?
я тебе уже говорил, доверься моим наброскам, я с БД уже работаю не один десяток лет.
...
Рейтинг: 0 / 0
11.12.2009, 07:30
    #36360300
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
Old Nick,

+1
Для построения окон на лету есть HTML.
Для хранения на сервере есть EXE - на сервер.
...
Рейтинг: 0 / 0
11.12.2009, 09:17
    #36360441
skmdeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
Petro123Old Nick,

+1
Для построения окон на лету есть HTML.
Для хранения на сервере есть EXE - на сервер.

Программа будет с GUI, а не c web-интерфейсом.
ПО многоплатформенное - подразумевается одновременная работа клиентов с разных ОС.
Пишется на Qt.

Как я понял, все будет нормально. Спасибо за идею о кэшировании. Это я упустил, поправлю.
...
Рейтинг: 0 / 0
16.12.2009, 23:08
    #36370501
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
skmdeveloperПотом подумал. Может лучше хранить данные в таблице, где каждое поле это узел. Структура полей примерно такая:
1. Уникальный числовой идентификатор (тип serial)
2. Идентификатор родительского элемента.
3. Имя узла
4. Данные (если есть)


Зачем так делать? Концептуально, единицей первичного учёта у тебя является GUI форма, а не узел. Сам по себе узел не имеет никакого смысла для приложения, так зачем его вырывать из контекста, писать код, который будет собирать кусочки формы воедино, бороться с провалом производительности, поддерживать целостность данных? Зачем?

Исторически БД поддерживали только простые типы данных - строки, числа, даты и т.п.. Чтобы реализовать модель сложного объекта в реляционной БД, приходилось выполнять его декомпозицию. Например, чтобы строить индексы по некоторым атрибутам объекта, иметь удобный доступ к их значениям как в выражениях, так и в построителях GUI, навешивать ограничения целостности. Сейчас многие системы понимают XML, так что в некоторых случаях объекты можно хранить единым XML документом. При необходимости СУБД может делать декомпозицию этого XML документа на несколько таблиц.
...
Рейтинг: 0 / 0
17.12.2009, 19:00
    #36372449
skmdeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
mcureenab, У меня cейчас так и работает. С XML в базе данных.
...
Рейтинг: 0 / 0
17.12.2009, 20:34
    #36372558
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
skmdeveloper,
если хорошо работает, то пусть так и работает. Пока не вижу смысла менять. Для работы XML есть много API, в том числе и в SQL. Про PostgreSQL не знаю, в ORACLE для хранения XML можно прозрачно для SQL запросов создать структурированное хранилище сообразно новым потребностям приложений БД.

Может быть у тебя ещё какие то тайные требования есть?
...
Рейтинг: 0 / 0
18.12.2009, 10:29
    #36373095
skmdeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
mcureenab, С XML проблем нет, все хорошо работает. В Qt есть классы для его разборки, ничего со стороны использовать не приходится.
В общем решил пока ничего не трогать. Пусть работает как есть. Просто добавлю слой абстракции и кэширование, чтобы лишний раз не считывать одни и те же данные и будет ОК.

Спасибо.
...
Рейтинг: 0 / 0
18.12.2009, 17:54
    #36374555
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
skmdeveloperВ Qt есть классы для его разборки, ничего со стороны использовать не приходится.

Я бы удивился обратному. В продвижение XML столько бабла вбухали, что теперь он поддерживается везде и всюду.
...
Рейтинг: 0 / 0
18.12.2009, 18:51
    #36374710
trdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
mcureenabskmdeveloperВ Qt есть классы для его разборки, ничего со стороны использовать не приходится.Я бы удивился обратному. В продвижение XML столько бабла вбухали, что теперь он поддерживается везде и всюду. угу. его теперь используют везде где ни попадя. И попадают, извините за каламбур.
Самое клевое "попадание" с ним в 1Сv8. Там через него делается обмен. Очень часто наблюдаю на 1С-ных форумах темы типа:
- Ахтунг, при выгрузке сообщение не хватает памяти, подскажите что делать.
тынц
...
Рейтинг: 0 / 0
18.12.2009, 19:54
    #36374808
skmdeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
Придумывать собственный формат глупо. Поэтому используют XML. Есть конкурент YAML. Лишен многих недостатков XML. Есть библиотеки, чтобы работать с ним. В Ruby вообще встроен. В Вики используется именно YAML-подобныя язык разметки.
...
Рейтинг: 0 / 0
18.12.2009, 20:31
    #36374860
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
skmdeveloperПридумывать собственный формат глупо.

А всё равно придумывают. Тут вона в БД поле BER кодированное (стандарт OSI). Оно конечно места поменьше занимает чем XML, что в данном случае крайне существенно, но парсер хороший уже два года как сделать не могут.
...
Рейтинг: 0 / 0
18.12.2009, 21:04
    #36374891
skmdeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Древовидная структура данных в БД.
YAML как раз занимает значительно меньше места, чем XML.
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Древовидная структура данных в БД. / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]