php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.06.2008, 18:52  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard Nested Sets oder Rekursion?

Hallo Leute!

Mich würde mal eins interessieren und das brennend,da man darüber immer wieder auseinandergehende Aussagen auffindet!

Wann würdet ihr für das erstellen eines Kategoriebaums das Nested Sets Modell anwenden und wann das der Rekursion?

Ich habe gelesen auf meinen Kreuzzügen durch das www das Nested Sets nur dann Sinn machen wenn eine Tiefe der baumstrucktur wenig bis gar nicht vorgenommen wird,weil ja dort jedes child zwei bezugspunkte hat soll das sehr kompliziert und sehr aufwendig in der Sql programmierung sein und nicht wirklich effektiv sein!
Wenn eine feste Struktur bestehen bleibt dann ist das Nested Sets Modell wieder sehr empfehlenswert weil es die DB performance sehr schonend behandelt und man nur eine Sql Abfrage braucht in der alles geregelt ist!

Bei einer Rekursion wiederum ruft sich ja immer wieder eine Funktion von selbst auf bis es zu einer Abruchbedingung kommt. Das heist aber auch bei einer tiefen Baumstrucktur wenn dann noch viele darauf zugreifen soll es wohl passieren können das die performance schlapp macht und die DB zusammenbricht!

Eure Meinungen und Hilfreichen Beiträge würden mich interessieren und freuen!

mfg der Litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.06.2008, 19:32  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Mich würde mal eins interessieren und das brennend,da man darüber immer wieder auseinandergehende Aussagen auffindet!
Und was läßt Dich denken, dass es hier anders ist? Auch alles nur persönliche Meinungen. Soviel sei gesagt: Ich würde Nested Sets nur anwenden, wenn ich auch eine geeignetes Backend besitze, das meine Menüpunkte verwaltet. In der Datenbank-Verwaltung selbst sind N.S. schlecht zu handle'n.
Da erschließt sich das Konzept mit parent ID's besser, allerdings ist das für häufige
Änderungen der Menüstruktur nicht so geeignet.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 05.06.2008, 19:37  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Ich will halt verschiedene Meinungen und darüber diskutieren!

Ich bin der Meinung hat man zum Beispiel ein Shopscript da legt man sich ein haufen kategorien an,lässt man die bestehen ohne Anderungen und Verschiebungen machen zu wollen wäre nested Sets das richtige Modell halt wegen der performance. Macht man aber viele Verschiebungen und Änderungen wäre das eben nicht mehr so einfach zu realisieren und da würde wieder eine Rekurion sehr viel besser geeignet sein!

Wann würde es denn wenn eine Rekursion benutzt wird die Performance so arg ins leiden kommen das die DB zusammenbricht?
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 06.06.2008, 00:43  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

Zitat:
Wann würde es denn wenn eine Rekursion benutzt wird die Performance so arg ins leiden kommen das die DB zusammenbricht?
Ich habe ein Baum-Menü mit dem Parent-ID-Konzept umgesetzt und die Tabelle hat mittlererweile ~400 Einträge. Da ich konsequent nur diejenigen Bereiche selektiere, die ich auch aufgeklappt habe, ist Performance IMHO kein Problem. Wichtig ist nur, dass die Tabelle sauber indiziert ist.

Nested Sets sehe ich genau wie nikosch nur dann, wenn du auch ein Backend hast, denn ohne ist das nicht wirklich sinnvoll zu handeln.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 06.06.2008, 05:34  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Rekursion, grade bei SQL ist halt so einer der wenigen richtig ueblen Performance-Killer. Entweder man beschraenkt sich wirklich auf einen sichtbaren Ausschnitt, wie dr.e. schon sagte, oder man nimmt fuer die groesseren Baeume wirklich Nested Set.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 06.06.2008, 08:40  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Nunja,gehen wir mal davon aus wir haben eine Shopnavi. Wenn ich da auf einen Kategorielink klicke öffnet er die dazugehörigen Unterkategorien und das eben immer wieder ja nach dem wie tief fie Baumstrucktur ist!

Demzufolge beschränke ich mich ja nur auf das was ich brauche oder habe ich das falsch verstanden?

Bitte entschuldigt die aber was ist mit dem Begriff Backend gemeint?
mfg der Litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 06.06.2008, 08:56  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.069
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Wenn du wirklich _alle_ Unterpunkte brauchst kannst du ja selbst ausrechnen, wie aufwendig das mit rekursiven SQL-Abfragen ist. Pro Knoten eine Abfrage.

Natuerlich kannst du das mit PHP optimieren. Es kann sich lohnen einfach alle Eintraege auszulesen und das ganze dort zusammenzubauen.

Nested Set ist halt von Vorteil, wenn du alle Untermenuepunkte unabhaengig von Tiefe oder Anzahl der Knoten haben willst, weil du einfach nur Links/Rechts angeben musst - alles was dazwischen liegt ist ein Untermenue.

Mit Backend ist hier vermutlich eine Abstraktion der SQL-Operationen gemeint, die du benoetigst um Knoten zu verschieben, anzuhaengen oder zu entfernen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 06.06.2008, 09:32  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Mit Backend ist hier vermutlich eine Abstraktion der SQL-Operationen gemeint, die du benoetigst um Knoten zu verschieben, anzuhaengen oder zu entfernen.
Exakt, denn sonst wird das Statement-Schreiben aufwändig.

Fall du dich für ein Beispiel interessierst, habe ich hier was für dich: http://adventure-php-framework.org/f...umstruktur.zip das ist eine Umsetzung der Rekursionsmethode. Der Cod eist zwar schon steinalt, aber er zeigt, wie das prinzipiell funktioniert. Caching und Optimierungen kann man dann immer noch drüberlegen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 06.06.2008, 16:57  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Danke recht schön ich werde mir das auf alle Fälle mal anschauen.

Ich habe ja auch schon über Nested Sets gelesen und Beispiel Code aber das war irgendwie sehr kompliziert zu verstehen!
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nested Sets und viele Fragen... BartTheDevil89 Datenbanken 7 13.08.2008 10:18
nested set dbmodell subtrees verschieben raffnix Datenbanken 12 08.06.2008 13:27
Nested Sets in ein Mehrdimensionales Array Simon9990 PHP-Fortgeschrittene 2 29.10.2007 17:38
rekursion ist nicht mein freund.... ;-) Promaetheus PHP Tipps 2008 6 11.10.2007 18:49
Nested Sets Query GSJLink Datenbanken 12 08.09.2007 10:55
menü, nested set oder ähnliches? Promaetheus PHP Tipps 2007 13 15.02.2007 22:37
SQL Warnung: 4 result set(s) not freed. daki Datenbanken 10 28.03.2006 17:00
Nested Sets und Silbings nightfreak Datenbanken 10 06.01.2006 13:58
Nested Sets History Sirke PHP-Fortgeschrittene 1 21.10.2005 08:50
erklärung gesucht: nested set query! Sirke Datenbanken 0 19.09.2005 17:24
Alternative zu Nested Sets fantast Datenbanken 1 16.08.2005 01:14
hilfe nested sets zapate Datenbanken 6 02.08.2005 02:58
Nested Sets mit Berechtigungen? daniel987 Datenbanken 3 07.06.2005 22:18
[Erledigt] Frage zu nested sets... PHP-Fortgeschrittene 2 04.03.2005 09:57
NESTED SETS dieses Thema sollte abgehakt werden PHP Tipps 2004 0 12.10.2004 18:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
nested sets entity framework, baum durchsuchen rekursion, nested sets sql, nested sets php beispiele, nested sets indizierung, sql nested sets, nested sets rekursiv, nested set aus entities, rekrusive nested, rekursive sets, rekursiv nested sets, nested set anwendung, rekursives netsted set, nestedset beispiel, rekursiv nested set, rekursion nested sets, \nested set\ \entity framework\, nested sets beispiel, nested sets tiefe beispiel, nested set rekursiv laden

Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum