|
|
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Вечер добрый! Стоит задача для дипломной работы - разработать методику, позволяющую максимально быстро выбирать всех потомков (или предков) заданной записи или группы записей, в том числе и потомков (или предков) удаленных от заданной записи на заданное число шагов или вплоть до низа(конца) иерархической лестницы. Структура - ациклический направленный граф. Нагрузки планируются огромные и количество связей неограниченно. Задача подразумевает много вставок/изменений/удалений узлов. По началу - это просто будет тестовый локальный проект, который планируется перевести потихоньку в рабочий веб-проект. Порылся в сети, и сложилось мнение что реляционные БД не совсем подходят для работы с иерархическими структурами. Как грамотнее поступить: 1) Остановиться на реляционной БД (OracleXE или MySQL) и искать и тестировать различные подходы для представления иерархических структур, а затем выбрать подходящий подход. 2) Или есть другие типы БД, которые эффективнее реляционных в данном случае??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 20:55 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscom Нагрузки планируются огромные и количество связей неограниченно. Задача подразумевает много вставок/изменений/удалений узлов. "Неограниченное количество связей" это десятки или сотни? "Огромные нагрузки" это десятки или сотни запросов в секунду? Не смешите людей. Лучше подумайте откуда возьмётся такое количество данных и такая нагрузка. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 21:34 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscom... ...разработать методику, позволяющую максимально быстро Максимально быстро - это как? За минуту? Полчаса? capscom выбирать всех Проектирование приложения, извлекающего из базы "всех" - есть дурной тон. Особенно если этих "всех" много. Что Вы с "ними" собираетесь делать? capscom... Нагрузки планируются огромные и количество связей неограниченно. Задача подразумевает много вставок/изменений/удалений узлов. Перед проектированием следует выяснить конкретные значения. Сделайте хотя бы грубую оценку. capscom...Порылся в сети, и сложилось мнение что реляционные БД не совсем подходят для работы с иерархическими структурами. Было с чем сравнить, чтобы сделать такой вывод? Почитайте. И еще . capscom2) Или есть другие типы БД, которые эффективнее реляционных в данном случае??? Если capscomЗадача подразумевает много вставок/изменений/удалений узлов., то другие типы БД лучше не использовать. Тем более что их ("других") почти не осталось в дикой природе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 23:30 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Видимо, у кого-то не задалась дырявая война на тему "пост-реляционные СУБД против всех остальных". ------------------------- There’s no silver bullet! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 00:27 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscomКак грамотнее поступить: Грамотнее - для начала чётко определить критерии оптимальности, потом провести исследование и оценить эффективность реляционных и нереляционных СУБД для требуемых операций, потом углублённо проработать перспективный вариант. Это если речь идёт о грамотном дипломе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 08:56 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscomСтруктура - ациклический направленный граф. Нагрузки планируются огромные и количество связей неограниченно. Задача подразумевает много вставок/изменений/удалений узлов. Порылся в сети, и сложилось мнение что реляционные БД не совсем подходят для работы с иерархическими структурами. Подходят действительно не очень, но степень этого "не очень" сильно зависит от РСУБД. Главные требования, на мой взгляд - рекурсивный SQL c хорошим оптимизатором и эффективное числовое индексирование. Думаю, стоит посмотреть в сторону Oracle или DB2 (в последнем range clustered indexes сильно ускоряют работу с числовыми "ID" записей), для начала разобравшись со степенью "огромности" нагрузок. Альтернатива - СУБД сетевой модели, такие как RDM, Titanium и т.д. Но они все сильно платные и не сильно удобные, т.к. предполагают навигационную (без языка запросов) модель эффективного использования. Еще стоит определиться - у Вас действительно граф или дерево (лес). Если можно обойтись лесом - рассмотрите XML СУБД, а лучше РСУБД c нативным XML. Кажется, лучше всех тут DB2. Плюсы подхода - все достоинства РСУБД + язык XQuery (кстати, включенный в SQL-2006). Естественно, XML должен быть индексирован и строго типизирован схемами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 13:23 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Необходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента). Неограниченные связей подразумевались, потому что на факультете – сотни человек, а слушателей курса может быть несколько десятков. Данные – это собственно база университета. Изначально проект тестироваться будет – на локальной машине, поэтому запросов будет менее десятка, но затем доступен будет в сети, для всех пользователей(могут быть и сотни запросов в секунду). Связи могут постоянно изменяться, кого-то отчислили или добавился новый курс – добавляются и новые слушатели. NextMan Для веб-проекта , оптимально, наверное, секунды. В идеале, чем быстрее, тем лучше. автор Было с чем сравнить, чтобы сделать такой вывод? По совету старших товарищей и руководителя, которые рекомендовали – смотреть в сторону не только реляционных баз данных. авторПроектирование приложения, извлекающего из базы "всех" - есть дурной тон Извлекать ветку иерархии, от конкретного ученика до верхов – необходимо. locky Я не воевать пришел, а спросить совета у грамотных людей. softwarer Согласен, но проверить все возможные подходы на каждом типе БД просто не успею. Кроме того, существуют подходы применимые только к конкретным СУБД (Например Oracle поддерживает иерархические запросы, а MySQL нет). Хотелось бы выбрать несколько актуальных решений задачи, а над ними уже проводить исследование. Вот и спрашиваю совета, ведь у кого-то уже был опыт создания таких, или подобных систем. Favn Спасибо большое, буду гуглить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 14:09 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscom (Например Oracle поддерживает иерархические запросы, а MySQL нет). Вот и берите Оракула и не парьтесь. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 14:23 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscom Dimitry Sibiryakov Необходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента). Это совсем не огромная :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 16:06 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Это совсем не огромная :) Возможно, в современных университетах преподают следующий способ устного счёта: "один, два, много, куча, тьма". Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 16:08 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscomНеобходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента). И где здесь иерархия ? Стр-ра любой организации в т.ч. универа не сводится к дереву ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 16:35 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Реляционные СУБД удобно и быстро работают со структурами с небольшим количеством измерений: 3-4. 1е измерение = это имя таблицы, 2е и 3е- собственно сама таблица. 4е и далее искусственно привязывается через отношения 1:М. Чем дальше, тем неудобнее потом работать. Потому, если правильно проектированная структура БД (или даже необходимая ее часть для работы каждого программного модуля) помещается в 4 измерения - достаточно РСУБД. Иначе - пытаться выбрать многомерные, сетевые, объектные модели - что подойдет лучше. А уж для дипломного проекта эксперименты - самое то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 17:00 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Siemargl, следуя этой мысли CASHE - наше фсё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 17:01 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Siemargl 1е измерение = это имя таблицы, 2е и 3е- собственно сама таблица. Все тот-же Бред ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 17:12 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscom Dimitry Sibiryakov Необходимо реализовать иерархическую структуру университета (от ректора и до конкретного студента). Неограниченные связей подразумевались, потому что на факультете – сотни человек, а слушателей курса может быть несколько десятков. Данные – это собственно база университета. Изначально проект тестироваться будет – на локальной машине, поэтому запросов будет менее десятка, но затем доступен будет в сети, для всех пользователей(могут быть и сотни запросов в секунду). Связи могут постоянно изменяться, кого-то отчислили или добавился новый курс – добавляются и новые слушатели.Состав среднего российского вуза: Профессорско-преподавательский состав: менее менее 1000 человек (это с запасом) Количество студентов: не более 10000 человек (тоже с запасом). Под древовидную структуру подпадают только преподаватели (у каждого работника есть только один непосредственный начальник), студенты выпадают из иерархии подчинения. И чего тогда огород городите про "ациклический направленный граф"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 17:26 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
SiemarglРеляционные СУБД удобно и быстро работают со структурами с небольшим количеством измерений: 3-4. 1е измерение = это имя таблицы, 2е и 3е- собственно сама таблица. 4е и далее искусственно привязывается через отношения 1:М. Чем дальше, тем неудобнее потом работать. Потому, если правильно проектированная структура БД (или даже необходимая ее часть для работы каждого программного модуля) помещается в 4 измерения - достаточно РСУБД. Иначе - пытаться выбрать многомерные, сетевые, объектные модели - что подойдет лучше. А уж для дипломного проекта эксперименты - самое то.экспериментируйте но простая задача подсчитать общее количество студентов всю эту дурь из головы быстро выбьет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 18:07 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
SergSuperно простая задача подсчитать общее количество студентов всю эту дурь из головы быстро выбьет Не выбьет. Простейший рекурсивный скрипт на полтора десятка операций - и суперглобали решат эту задачу гораздо быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 18:38 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
в той среде что я работаю работа с иерархическим справочником (таблица с полем элемента и полем его родителя) проверка на "вхождение" в ту или иную группу рекурсивными или циклическими методами внутри основных запросов оооочень сильно увеличивает время и приблизительно равно времени отработки запроса на соединениях с предварительно подготовленной таблицой иерархий и элементов вобщем если кто понял чего я тут наговорил :) то такое хранение данных (ссылка_элемент-ссылка_непосредственный_родитель) даже в одной таблице влечёт за собой существенную потерю производительности можно конечно предопределённо добавить кол-во родителей разных уровней в ту же таблицу но это очень весело отслеживать при измении подчинения структурного элемента в подчинении... а если кол-во уровней иерархии изменяется то становится вообще очень забавно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 19:33 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
_мод авторИ где здесь иерархия ? Стр-ра любой организации в т.ч. универа не сводится к дереву А к чему она тогда сводится? Senya_L Студенты же привязаны к преподавателю..Поэтому ацеклический граф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 20:06 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
capscom Студенты же привязаны к преподавателю..Поэтому ацеклический граф. Гладко было на бумаге... А есть студенты, подрабатывающие лаборантами. А есть переходы между группами, потоками и специальностями. А есть студенты, привязанные к нескольким преподавателям, как и совсем отвязанные. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 20:22 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
А БД точно нужна ? Может быть пойдет wiki + админ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 20:27 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Ооо...Тема то что надо!!!! Подобный граф закладываю в основы для социальной сети и тоже не знаю на какой СУБД остановиться. Нужно будет выводить своих друзей, друзей моих друзей и так до конца иерархии. Извращение, но хочу попробовать. Граф динамический потому что связи у кого-то добавляются, а кого-то могут удаляться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 20:31 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
Еще ж забыл, что и поиск по связям нужен. В сети нашел http://ko-online.com.ua/node/42760 Кто-нить использовал проекты: Voldemort, СУБД Neo4j, CouchDB ?????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 20:36 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
RWRНужно будет выводить своих друзей, друзей моих друзей и так до конца иерархии. Извращение, но хочу попробовать. О, вот как раз для такого запроса реляционные СУБД подходят идеально. Он очень прост: select * from people. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2009, 00:06 |
|
||
|
СУБД для эффективной работы с иерахической струторой(большие нагрузки, множество связей)
|
|||
|---|---|---|---|
|
#18+
softwarerSergSuperно простая задача подсчитать общее количество студентов всю эту дурь из головы быстро выбьет Не выбьет. Простейший рекурсивный скрипт на полтора десятка операций - и суперглобали решат эту задачу гораздо быстрее Это не КашеВей !!! Надо создать поле счетчик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2009, 08:12 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36226037&tid=1552886]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 402ms |

| 0 / 0 |
