- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
сейчас думаю над архитектурой еще одного дерева...
мне показалось что NestedSet не подойдет для него так как NestedSet все операции кроме SELECT ресурсоемкие!!
недостатки в Nested Set: если вы заметили, точно такая же рекурсия, только там идет UPDATE ресурсоемкий который все дерево изменяет (очень много записей) по этому я нашел решение где-то на opennet.ru на innodb с ускорением за счет внешних ключей и транзакции (чтобы дерево не развалилось во время изменение структуры). НО еще говорят что если innodb с большой базой, то грузит сильно сервер, неоднократно сталиквался, но в приципе мне все равно, тут не знаю... на выбор
про мое дерево долго рассказывать:
1)
щас нарисую
"Корень дерева" --> "разедел1"
````````````````` "разедел2"->>>"разедел1"
````````````````` "разедел3"````"разедел2"
````````````````` "разедел4"````"разедел3"->>>>>>"разедел1"
````````````````` "разедел5"````````````````````"разедел2"
````````````````` "разедел6"````````````````````"разедел3"
```````````````````````````````````````````````"разедел4"
из этого:
а) у кадого раздела может быть свой "подраздел(ы)"
б) у кадого раздела может быть "тема(ы) сообщения" как на этом форуме
б2) у темы есть коментарии
думаю все понятно?
2) нужно сделать:
перенос узла,
выборка всех родителей вверх,
просмотр
вывести дерево начиная от како-то элемента,
удаление/изменение атрибутов всего дерева со всеми подчиненными узлами
если ничего не забыл, может еще что-то
все дерево выносить не надо
===
при обычном parent_id:
id
parent_id
(можно еще level)
Преимущества дерева
1) перенос
2) Добавление
3) Нормальный SELECT и SELECT всех родителей (SELECT сразe 50-100 ступеней можно сделать,( т.е. ограничить) а лишние удалить, либо рекурсию) все остальное нормально
Недостатки:
1) удаление всего дерева затруднительно (рекурсию надо делать, или процедуру)
НО в условии, например присутствует, что пользователи не могут когда они захотят все удалить, литит удлаения должен быть (проблем не будет)
2) узменение атрибута узла и всего поддерева (например надо все дерево скрыть начиная с конкретного узла) (рекурсию надо делать, или триггер)
можно записывать level уровень, чтобы сделать еше быстрый SELECT всех родителей и в один НОРМАЛЬНЫЙ запрос
т.е. исходя их этого например при обычном NestedSET, пвсе запросы (почти все, удаление, добавление, перенос) ресурсоемкое, но кроме SELECT
в этом случае который я привел, грубо говоря, только удаление ресурсоемкое!
вообщем, как?
писал старался, хотел узнать может есть замечания какие-то?
я за нестед
bearman добавил 04.10.2009 в 18:48
в дереве хранить только каталоги и подкаталоги, а комментарии и посты в других таблицах. если я правильно понял то это тоже частью вопроса было)
за обычный, не за тот который с 2 таблицам и на innodb?
а условия такие были или другие?
в принципе все равно
Однозначно нестед!
При относительно небольшом количестве категорий, есть смысл использовать то, что сейчас модно называть materialized path.
Грубо говоря второй вариант + одно поле в котором будет 1|3|4|5| дерево вышестоящих категорий.
Благодаря такому доп.полю многие операции становятся предельно простыми, а на небольших объемах тормозов не будет... а очень даже может будет и ускорение.
До 1000 категорий имхо оптимальный способ.
я вот как раз хотел оптимизировать DELETE
Есть таблица составных деталей с "древесной" структурой, т.е. код/код предка/название, например:
Как в такой таблице красиво сделать рекурсивное удаление всех потомков при удалении записи (чтобы при удалении детали №4 удалились детали №5,6,7)? И можно ли это сделать через ХП?
вот я это нашел... http://forum.foxclub.ru/read.php?29,400359,400507
например на Visual Foxpro:
но как написать это на MySQL, например, на триггерах или процедурах?
не могу понять как это сделать вообще, путаюсь...
rtyug, используйте нестед или materialized paths(о чем я не стал упоминать, думая что людей слышавших про это здесь нет), ваша структура положит нахрен таблицы 100% еще больше чем нестед.
спасибо, использую, но для этого случая решил сделать проще, так как не нужны все возможности нестед...
я DELETE сделал на дополнительной временной таблице, просто не срочно надо, думал что кто-то поможет оптимизировать, я этого не понимаю...
====
что именно положит?
если нужно вывести всех родителей вверх, но поможет level очень просто красивый запрос, или в процедуре, или в триггре в цикле, все остальные запросы в 1-2 строки...
только DELETE очень не нравиться
для моего случая все дерево выводить не надо, т.к. оно не ограниченное
materialized paths попробуйте, может понравится
о чем я не стал упоминать, думая что людей слышавших про это здесь нет
Вы такого плохого мнения о всех программерах на SE? :)
Вы такого плохого мнения о всех программерах на SE? :)
я привык к глобальной тупости, жизнь научила. серч тут не причем + от общей картины на серче можно подумать что тут одни "не в теме" люди.
Тупицы.