|
|
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Господа, из-за достаточно накладных расходов при вставке, удалении, перемещении и прочее элементов в дерево, используя эту технологию, я решил попробовать произвести некую оптимизацию своего дерева 1. вместо дерева использую лес 2. разрешил появлению нескольких корневых элементов внутри одного дерева. 3. добавил поле с ИД непосредственного предка то есть, было: Код: plaintext 1. 2. 3. 4. 5. стало: Код: plaintext 1. 2. 3. 4. 5. 6. 7. впринципе, регулируя факт создания нового дерева бизнес-логикой приложения, можно добить того, что максимальная вложенность (согла предметной области задачи разумеется) элементов, не будет превышать 100 элементов (level < 100 то есть), что вполне устраивает. Однако, теперь появляется возможность иметь относительно одного дерева несколько корневых нод, то есть : Код: plaintext 1. 2. 3. 4. 5. чисто технически это тоже работает, однако насколько подобная структура будет идеологически верной, с точки зрения теории Nested Sets ? Следует ли убрать такую возможность (в одном дереве несколько корневых нод), либо же правильнее будет оставить только одну корневую ноду, а все остальные будут являться её потомками. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 16:22 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
DDL создания индексов, ессно присутствует, но убран в целях минимизации места занимаемого постом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 17:07 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
Что-то не так с вопросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 22:55 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
Манго-МангоЧто-то не так с вопросом?А какой ответ Вам ждете ? Вы решили расширить метод "вложенных множеств" под конкретную ситуацию, добавив несколько "фенечек". Все работает ? Ну и слава Богу. Проблема-то в чем ? P.S. IMHO, метод Nested Sets одним из самых неудачных способов реализации иерархических связей. Но это уже совсем другая тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2008, 23:24 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
ChA P.S. IMHO, метод Nested Sets одним из самых неудачных способов реализации иерархических связей. Но это уже совсем другая тема. хм, ну почему же, даже очень интересно... давайте её разовьём! собственно Гугль на вопросы, подобные "сравнение Netsted и Adjacency List" (Материализованные пути... и т.д. в таком духе), выдаёт множество ссылок, следую по которым, можно прочетать, что Nested Sets всех даже очень и устраивают, если производить некие оптимизации (например, как сделал я, или же, например, такое извращение, как AL + NS ну и прочее). Скажите пожалуйсат, Вам известен "самый удачный" способ хранения (у управление разумеется - добавление, удаление и перемещение) иерархических структур в реляционных БД? Если да, то поделитесь пожалуйста просто названием этого метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 12:35 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
Манго-МангоСкажите пожалуйсат, Вам известен "самый удачный" способ хранения (у управление разумеется - добавление, удаление и перемещение) иерархических структур в реляционных БД? Для начала различим иерархические связи между разными сущностями и иерархию внутри одной сущности - методы разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 13:35 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
не вдаваясь в дальнейший анализ словоформ вытекающих из обсуждаемых абстракций, давайте ограничемся случаем, рассмотренным в этом треде. то есть: "самый удачный способ" для реализации иерархических связей, по сравнению с Nested Sets зы: при определённой степени абстрагирования, разные сущности можно трактовать как иерархически зависимые объекты внутри одной сущности, чем свести эти понятия к одному методу хранения, однако, этого не требуется (мы не рассматриваем здесь EAV-модели) сабжем этого треда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 14:23 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
Манго-Манго Варианта всего 3: 1. Иерархия типа дерево внутри одной сущности - таблица со ссылкой родителя. 2. Граф: две таблицы: вершины и дуги с двумя ссылками на две вершины. 3. Иерархия между разными сущностями : одна таблица корневая + вложенные таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 14:31 |
|
||
|
Nested Sets: Несколько корневых элементов
|
|||
|---|---|---|---|
|
#18+
Манго-Манго ChAP.S. IMHO, метод Nested Sets одним из самых неудачных способов реализации иерархических связей. Но это уже совсем другая тема. хм, ну почему же, даже очень интересно... давайте её разовьём!А смысл ? Поиском Вы и без меня пользоватся умеете, сравнивать, надеюсь, тоже. Да и статей со сравнениями навалом. Собственно из первого поста Манго-Мангоиз-за достаточно накладных расходов при вставке, удалении, перемещении и прочее элементов в дерево. Это и есть основной недостаток Nested Sets, только в нем добавление или удаление элемента может вызвать обновление LR-значений практически всех остальных элементов дерева, хотя остроту проблемы и можно несколько сгладить непоследовательной нумерацией пути обхода. Собственно, как эта, так и другие проблемы этого метода описаны во множестве статей, нет смысла их цитировать здесь. * Когда-то тоже прельстился этим методом, но после некоторой практики отказался от него и, боюсь, навсегда. В частности, для многопользовательской работы он мало подходит, ну разве только для полностью статических "деревьев". Манго-Мангособственно Гугль на вопросы, подобные "сравнение Netsted и Adjacency List" (Материализованные пути... и т.д. в таком духе), выдаёт множество ссылок, следую по которым, можно прочетать, что Nested Sets всех даже очень и устраивают, если производить некие оптимизации (например, как сделал я, или же, например, такое извращение, как AL + NS ну и прочее).Могу только повторить: устраивает, ради Бога, никто Вам не запрещает. Я высказал своё частное мнение, подкреплённое собственной же практикой. Если желаете холливар, то это не ко мне. Гораздо полезнее, IMHO, поиграть со всеми методами хранения, включая типовые запросы, в том числе и модификации иерархии, с изучением статистики выполнения. Для меня это уже пройденный этап, выводы для себя я уже сделал. Манго-Манго ChAP.S. IMHO, метод Nested Sets одним из самых неудачных способов реализации иерархических связей. Но это уже совсем другая тема.Скажите пожалуйсат, Вам известен "самый удачный" способ хранения (у управление разумеется - добавление, удаление и перемещение) иерархических структур в реляционных БД? Если да, то поделитесь пожалуйста просто названием этого метода.Из "одним из самых неудачных способов" вовсе не следует, что есть "самый удачный". Мой личный выбор - разворачивание иерархии, т.е., хранение для каждого элемента всех его предков в отдельной таблице, для определенных задач - с указанием уровня. Запросы на получение всех предков или потомков узла можно получить простейшим запросом. При этом вовсе не исключаю, что в определённых ситуациях откажусь от него в пользу, например, построения полного пути("материализации"). Кроме того, в большинстве СУБД уже есть поддержка иерархические(рекурсивных) запросов, при небольшой глубине иерархии это тоже вполне вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2008, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=101&tid=1543788]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 334ms |

| 0 / 0 |
