Henryk Plötz: Problem: Script braucht zu viel Arbeitsspeicher. Bräuchte Tips.

Beitrag lesen

Moin

Ich will die in der relationalen Datenbank vorhandenen Daten in einer Baumstruktur darstellen, so daß ich
wie (wie beim Win-Explorer) durch das Auf- und Zuklappen von Zweigen an die entsprechenden Datensätze komme. Dazu hole ich nur einige Kopfdaten für die benötigten Datensätze (ID, Name) aus der Datenbank. Das ist also nicht so viel. Ich brauche aber die Baumstruktur für die Darstellung. Und ich brauche auch die relationalen Verknüpfungen irgendwie im Script abgebildet.

Beispiel CD-Datenbank:
[snip]

Du willst also nur einen klitzekleinen Bruchteil der Daten die du aus der Datenbank liest tatsächlich darstellen. Da bietet es sich doch an, nur die Daten die du wirklich brauchst zu lesen und im Speicher zu halten, und schwups sollte das Skript laufen wie geschmiert.

Das ist _natürlich_ einfacher gesagt als getan :)  Denn da muss man dann wohl doch sehr stark am Algorithmus rumfummeln.

Das kommt jetzt darauf an, wie du die Daten vom Client kriegst, aber generell würde ich das so machen:

Alle Datensätze die direkt unter der Wurzel liegen auslesen

für jeden davon:
  rekursiv aufrufen:
    bestimmen, ob er kinddatensätze hat (damit ein + dargestellt werden kann)
    wenn er kinddatensätze hat, schauen ob er ausgeklappt werden soll
       wenn er ausgeklappt werden soll, ein Minuszeichen darstellen, alle kinddatensätze lesen und zum rekursiven Aufruf gehen
       wenn er nicht ausgeklappt werden soll, ein Pluszeichen darstellen

So oder so ähnlich sollte das zu machen sein. Das sendet zwar viele Anfragen an die Datenbank, hält aber nur die wirklich wichtigen Informationen im Speicher.

--
Henryk Plötz
Grüße aus Berlin