Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
capscom
Member

Откуда:
Сообщений: 140
Вечер добрый!

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

Нагрузки планируются огромные и количество связей неограниченно. Задача подразумевает много вставок/изменений/удалений узлов. По началу - это просто будет тестовый локальный проект, который планируется перевести потихоньку в рабочий веб-проект.

Порылся в сети, и сложилось мнение что реляционные БД не совсем подходят для работы с иерархическими структурами.

Как грамотнее поступить:

1) Остановиться на реляционной БД (OracleXE или MySQL) и искать и тестировать различные подходы для представления иерархических структур, а затем выбрать подходящий подход.

2) Или есть другие типы БД, которые эффективнее реляционных в данном случае???
29 сен 09, 20:55    [7722331]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54789

capscom

Нагрузки планируются огромные и количество связей неограниченно. Задача
подразумевает много вставок/изменений/удалений узлов.

"Неограниченное количество связей" это десятки или сотни?
"Огромные нагрузки" это десятки или сотни запросов в секунду?

Не смешите людей. Лучше подумайте откуда возьмётся такое количество
данных и такая нагрузка.

Posted via ActualForum NNTP Server 1.4

29 сен 09, 21:34    [7722414]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
NextMan
Member

Откуда:
Сообщений: 9744
capscom
...
...разработать методику, позволяющую максимально быстро

Максимально быстро - это как? За минуту? Полчаса?
capscom

выбирать всех

Проектирование приложения, извлекающего из базы "всех" - есть дурной тон. Особенно если этих "всех" много. Что Вы с "ними" собираетесь делать?
capscom
...
Нагрузки планируются огромные и количество связей неограниченно. Задача подразумевает много вставок/изменений/удалений узлов.

Перед проектированием следует выяснить конкретные значения. Сделайте хотя бы грубую оценку.
capscom
...Порылся в сети, и сложилось мнение что реляционные БД не совсем подходят для работы с иерархическими структурами.

Было с чем сравнить, чтобы сделать такой вывод?

Почитайте.
И еще.
capscom
2) Или есть другие типы БД, которые эффективнее реляционных в данном случае???
Если
capscom
Задача подразумевает много вставок/изменений/удалений узлов.
, то другие типы БД лучше не использовать. Тем более что их ("других") почти не осталось в дикой природе.
29 сен 09, 23:30    [7722607]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Видимо, у кого-то не задалась дырявая война на тему "пост-реляционные СУБД против всех остальных".

-------------------------
There’s no silver bullet!
30 сен 09, 00:27    [7722685]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
capscom
Как грамотнее поступить:

Грамотнее - для начала чётко определить критерии оптимальности, потом провести исследование и оценить эффективность реляционных и нереляционных СУБД для требуемых операций, потом углублённо проработать перспективный вариант. Это если речь идёт о грамотном дипломе.
30 сен 09, 08:56    [7722957]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Favn
Member

Откуда:
Сообщений: 585
capscom
Структура - ациклический направленный граф.
Нагрузки планируются огромные и количество связей неограниченно. Задача подразумевает много вставок/изменений/удалений узлов.
Порылся в сети, и сложилось мнение что реляционные БД не совсем подходят для работы с иерархическими структурами.

Подходят действительно не очень, но степень этого "не очень" сильно зависит от РСУБД.
Главные требования, на мой взгляд - рекурсивный SQL c хорошим оптимизатором и эффективное числовое индексирование. Думаю, стоит посмотреть в сторону Oracle или DB2 (в последнем range clustered indexes сильно ускоряют работу с числовыми "ID" записей), для начала разобравшись со степенью "огромности" нагрузок.
Альтернатива - СУБД сетевой модели, такие как RDM, Titanium и т.д. Но они все сильно платные и не сильно удобные, т.к. предполагают навигационную (без языка запросов) модель эффективного использования.
Еще стоит определиться - у Вас действительно граф или дерево (лес). Если можно обойтись лесом - рассмотрите XML СУБД, а лучше РСУБД c нативным XML. Кажется, лучше всех тут DB2. Плюсы подхода - все достоинства РСУБД + язык XQuery (кстати, включенный в SQL-2006). Естественно, XML должен быть индексирован и строго типизирован схемами.
30 сен 09, 13:23    [7724442]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
capscom
Member

Откуда:
Сообщений: 140
Dimitry Sibiryakov
Необходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента). Неограниченные связей подразумевались, потому что на факультете – сотни человек, а слушателей курса может быть несколько десятков. Данные – это собственно база университета. Изначально проект тестироваться будет – на локальной машине, поэтому запросов будет менее десятка, но затем доступен будет в сети, для всех пользователей(могут быть и сотни запросов в секунду). Связи могут постоянно изменяться, кого-то отчислили или добавился новый курс – добавляются и новые слушатели.

NextMan
Для веб-проекта , оптимально, наверное, секунды. В идеале, чем быстрее, тем лучше.
автор

Было с чем сравнить, чтобы сделать такой вывод?

По совету старших товарищей и руководителя, которые рекомендовали – смотреть в сторону не только реляционных баз данных.

автор
Проектирование приложения, извлекающего из базы "всех" - есть дурной тон

Извлекать ветку иерархии, от конкретного ученика до верхов – необходимо.

locky
Я не воевать пришел, а спросить совета у грамотных людей.

softwarer
Согласен, но проверить все возможные подходы на каждом типе БД просто не успею. Кроме того, существуют подходы применимые только к конкретным СУБД (Например Oracle поддерживает иерархические запросы, а MySQL нет).
Хотелось бы выбрать несколько актуальных решений задачи, а над ними уже проводить исследование. Вот и спрашиваю совета, ведь у кого-то уже был опыт создания таких, или подобных систем.

Favn
Спасибо большое, буду гуглить.
30 сен 09, 14:09    [7724763]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54789

capscom

(Например Oracle поддерживает иерархические запросы, а MySQL нет).

Вот и берите Оракула и не парьтесь.

Posted via ActualForum NNTP Server 1.4

30 сен 09, 14:23    [7724841]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
capscom
Dimitry Sibiryakov
Необходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента).


Это совсем не огромная :)
30 сен 09, 16:06    [7725578]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54789

Gluk (Kazan)
Это совсем не огромная :)

Возможно, в современных университетах преподают следующий способ устного
счёта: "один, два, много, куча, тьма".

Posted via ActualForum NNTP Server 1.4

30 сен 09, 16:08    [7725598]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
_мод
Guest
capscom
Необходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента).

И где здесь иерархия ? Стр-ра любой организации в т.ч. универа не сводится к дереву
30 сен 09, 16:35    [7725820]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6637
Реляционные СУБД удобно и быстро работают со структурами с небольшим количеством измерений: 3-4.
1е измерение = это имя таблицы, 2е и 3е- собственно сама таблица.

4е и далее искусственно привязывается через отношения 1:М. Чем дальше, тем неудобнее потом работать.

Потому, если правильно проектированная структура БД (или даже необходимая ее часть для работы каждого программного модуля) помещается в 4 измерения - достаточно РСУБД.

Иначе - пытаться выбрать многомерные, сетевые, объектные модели - что подойдет лучше.

А уж для дипломного проекта эксперименты - самое то.
30 сен 09, 17:00    [7726047]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
ОКТОГЕН
Member

Откуда:
Сообщений: 2498
Siemargl, следуя этой мысли CASHE - наше фсё.
30 сен 09, 17:01    [7726057]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Siemargl

1е измерение = это имя таблицы, 2е и 3е- собственно сама таблица.


Все тот-же Бред
30 сен 09, 17:12    [7726116]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
capscom
Dimitry Sibiryakov
Необходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента). Неограниченные связей подразумевались, потому что на факультете – сотни человек, а слушателей курса может быть несколько десятков. Данные – это собственно база университета. Изначально проект тестироваться будет – на локальной машине, поэтому запросов будет менее десятка, но затем доступен будет в сети, для всех пользователей(могут быть и сотни запросов в секунду). Связи могут постоянно изменяться, кого-то отчислили или добавился новый курс – добавляются и новые слушатели.
Состав среднего российского вуза:
Профессорско-преподавательский состав: менее менее 1000 человек (это с запасом)
Количество студентов: не более 10000 человек (тоже с запасом).

Под древовидную структуру подпадают только преподаватели (у каждого работника есть только один непосредственный начальник), студенты выпадают из иерархии подчинения. И чего тогда огород городите про "ациклический направленный граф"?
30 сен 09, 17:26    [7726217]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Siemargl
Реляционные СУБД удобно и быстро работают со структурами с небольшим количеством измерений: 3-4.
1е измерение = это имя таблицы, 2е и 3е- собственно сама таблица.

4е и далее искусственно привязывается через отношения 1:М. Чем дальше, тем неудобнее потом работать.

Потому, если правильно проектированная структура БД (или даже необходимая ее часть для работы каждого программного модуля) помещается в 4 измерения - достаточно РСУБД.

Иначе - пытаться выбрать многомерные, сетевые, объектные модели - что подойдет лучше.

А уж для дипломного проекта эксперименты - самое то.
экспериментируйте
но простая задача подсчитать общее количество студентов всю эту дурь из головы быстро выбьет
30 сен 09, 18:07    [7726610]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
SergSuper
но простая задача подсчитать общее количество студентов всю эту дурь из головы быстро выбьет

Не выбьет. Простейший рекурсивный скрипт на полтора десятка операций - и суперглобали решат эту задачу гораздо быстрее
30 сен 09, 18:38    [7726773]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Last1Cmen
Member

Откуда:
Сообщений: 30210
в той среде что я работаю работа с иерархическим справочником (таблица с полем элемента и полем его родителя) проверка на "вхождение" в ту или иную группу рекурсивными или циклическими методами внутри основных запросов оооочень сильно увеличивает время и приблизительно равно времени отработки запроса на соединениях с предварительно подготовленной таблицой иерархий и элементов

вобщем если кто понял чего я тут наговорил :) то такое хранение данных (ссылка_элемент-ссылка_непосредственный_родитель) даже в одной таблице влечёт за собой существенную потерю производительности

можно конечно предопределённо добавить кол-во родителей разных уровней в ту же таблицу но это очень весело отслеживать при измении подчинения структурного элемента в подчинении... а если кол-во уровней иерархии изменяется то становится вообще очень забавно
30 сен 09, 19:33    [7726982]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
capscom
Member

Откуда:
Сообщений: 140
_мод
автор
И где здесь иерархия ? Стр-ра любой организации в т.ч. универа не сводится к дереву


А к чему она тогда сводится?

Senya_L

Студенты же привязаны к преподавателю..Поэтому ацеклический граф.
30 сен 09, 20:06    [7727100]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54789

capscom

Студенты же привязаны к преподавателю..Поэтому ацеклический граф.

Гладко было на бумаге... А есть студенты, подрабатывающие лаборантами. А
есть переходы между группами, потоками и специальностями. А есть
студенты, привязанные к нескольким преподавателям, как и совсем отвязанные.

Posted via ActualForum NNTP Server 1.4

30 сен 09, 20:22    [7727157]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9993
А БД точно нужна ? Может быть пойдет wiki + админ ?
30 сен 09, 20:27    [7727164]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
RWR
Member

Откуда:
Сообщений: 18
Ооо...Тема то что надо!!!!

Подобный граф закладываю в основы для социальной сети и тоже не знаю на какой СУБД остановиться.
Нужно будет выводить своих друзей, друзей моих друзей и так до конца иерархии. Извращение, но хочу попробовать.

Граф динамический потому что связи у кого-то добавляются, а кого-то могут удаляться.
30 сен 09, 20:31    [7727178]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
RWR
Member

Откуда:
Сообщений: 18
Еще ж забыл, что и поиск по связям нужен.

В сети нашел http://ko-online.com.ua/node/42760

Кто-нить использовал проекты: Voldemort, СУБД Neo4j, CouchDB ??????
30 сен 09, 20:36    [7727185]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
RWR
Нужно будет выводить своих друзей, друзей моих друзей и так до конца иерархии. Извращение, но хочу попробовать.

О, вот как раз для такого запроса реляционные СУБД подходят идеально. Он очень прост: select * from people.
1 окт 09, 00:06    [7727663]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
softwarer
SergSuper
но простая задача подсчитать общее количество студентов всю эту дурь из головы быстро выбьет

Не выбьет. Простейший рекурсивный скрипт на полтора десятка операций - и суперглобали решат эту задачу гораздо быстрее


Это не КашеВей !!! Надо создать поле счетчик
1 окт 09, 08:12    [7727883]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить