|
|
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
Доброй ночи! Помогите, пожалуйста, студенту разобраться вот с такой темой (задачей) для дипломной работы. ----------------------------------------------------------------------------------------------------- Постановка задачи. Разработать методику, позволяющую максимально быстро выбирать всех потомков (или предков) заданной записи или группы записей, в том числе и потомков (или предков) удаленных от заданной записи на заданное число шагов или вплоть до низа(конца) иерархической лестницы. Дополнение. Другими словами, например, есть работник по имени John, и необходимо вывести его подчиненных, подчиненных его подчиненных и так далее, до тех пор, пока не дойдем до низа иерархической лестницы(или заданной вложенности). Вся соль в том, что у работника Johnа может быть большое число подчиненных(т.е. без ограничения), так же и у его подчиненных может быть большое число подчиненных (т.е. без ограничения) и т.д. до конца иерархической цепочки. Кроме того, если работник John уволился из организации, необходимо модифицировать связи. Замечания. В качестве инструментария рекомендовано использовать бесплатную (условно бесплатную) реляционную базу данных, например MySQL. ----------------------------------------------------------------------------------------------------- Как я понимаю, иерархия представляет собой - ацикличный ориентированный граф (возможно ошибаюсь). Порылся в поиске, нашел некоторые решения, но возможно, сейчас существую иные, более эффективные решения поставленной задачи. В сети, нашел метод основанный на “Карте Путей”, т.е. создается таблица RelationMap, хранящая все пути между любыми связанными записями, и так же нет информации о его эффективности. Подскажите, пожалуйста, в какую сторону копать, чтобы меньше топтаться по граблям, “изобретая велосипед”. Возможно есть какая-то литература по данной теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2009, 00:32 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
capscom, есть подозрение, что то, как идеологически правильно, и то что нужно для эффективной работы в конкретном случае это зачастую разные вещи. Как вариант - таблица NxN для N сотрудников. Где пересечение строки и столбца показывает силу связи между сотрудниками. 1- непосредственное подчинение, 2 - через одного, -1 - обратное подчинение. Дорого по объему данных, но должно быть достаточно эффективно выбирать указанную иерархию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2009, 01:27 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
capscom, невнимательно читал ваше исходное сообщение, видимо это и есть эта самая карта путей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2009, 01:32 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
А вот если не упираться в реляционные базы данных, то какие бы типы БД было бы верно использовать под такую задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2009, 20:20 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
Просто планируются большие нагрузки и множество связей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2009, 20:31 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
capscomПросто планируются большие нагрузки и множество связей.это вам пожалуй в раздел "сравнение СУБД" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 00:38 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
capscomРазработать методику, позволяющую максимально быстро выбирать всех потомков (или предков) заданной записи или группы записей, в том числе и потомков (или предков) удаленных от заданной записи на заданное число шагов или вплоть до низа(конца) иерархической лестницы. Графы хорошо обрабатываются рекурсивными функциями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 10:10 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
Почитайте про nested sets и еще вот тут . Nested sets идеально подходят для быстрых выборок, но если задача подразумевает много вставок/изменений/удалений узлов, то могут возникнуть проблемы. ---- Think twice before you press F5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 12:27 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
Ap0k, спасибо!!! - возьму алгоритм на заметку. _мод, а рекурсивность на уровне бд (если, например, речь идет об Oracle XE) как сказывается на производительности на большом графе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2009, 20:25 |
|
||
|
Эффекстивная выборка по иерархии записей в РБД и задание самой иерархии
|
|||
|---|---|---|---|
|
#18+
capscom а рекурсивность на уровне бд (если, например, речь идет об Oracle XE) как сказывается на производительности на большом графе? Я имел ввиду рекурсию на программном уровне - обход графа. На уровне СУБД Oracle имеет иерархические запросы - вполне производительные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2009, 09:29 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36221694&tid=1543055]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 494ms |

| 0 / 0 |
