Andreas Korthaus: Warengruppenstruktur - in XML oder RDBMS speichern?

Beitrag lesen

Hallo!

Ich will eine maximal 5-Stufige Warengruppenstruktur speichern. Das sieht dann z.B. so aus:

Lebensmittel
  Getränke
  Molkereiprodukte
    Milchprodukte
      1 Liter Frische Vollmilch
      1 Liter fettarme Milch
      0,5 Liter frische Vollmilch
    Quarkprodukte
  Backwaren

Nur mal so als Beispiel. Wie gesagt, maximal 5 Ebenen, aber nicht überall 5 Ebenen, in der einen Gruppe sind es 3 in der nächsten 5... kommt halt auf die Komplexität der Warengruppe an. Jetzt überlege ich, wie ich das speichere. Ich greife hierauf mit PHP zu, das heißt ich muss zum einen ein Interface schaffen um Daten einzugeben und zu bearbeiten, und auf der anderen Seite die Warengruppenstruktur in einem Baum (wie im Windows-Explorer) auf einer Homepage mit HTML oder Javascript ausgeben.

Jetzt überlege ich wie ich dies am besten implementiere. Das Problem,  die Warengruppenstruktur kann unterschiedlich groß sein, das ist halt nicht festgelegt. Das können 100 Produkte sein, aber auch 100.000. Gut, das ist vielleicht eher unwahrscheinlich, aber 10.000 ist durchaus nicht selten. Am Ende soll es so sein dass man sich durch diesen Baum mit der Warengruppenstruktur klickt und auf der untersten Ebene dann die Produkte in dieser Warengruppe auswählen kann. Nur wenn ich jetzt Struktur und Produkte getrennt speichere, habe ich bei der Erstellung des Baums das Problem dass ich mir die Informationen aus den beiden Datenquellen zusammensuchen muss. Unter Performance - GEsichtspunkten sieht es eher schlecht aus für XML, denn dann muss man immer die komplette Datei parsen(wegen PHP), trotzdem ist XML ja eigentlich das geeignetere Format um so eine Struktur abzubilden.

Zu den Produkten sollen noch einige Informationen wie Titel, Beschreibung, Spezifikation, Bild(Link).

<?xml version="1.0" encoding="ISO-8859-1"?>
<Warengruppen>
  <Lebensmittel>
    <Getränke>
    </Getränke>
      <Molkereiprodukte>
        <Milchprodukte>
          <Artikel title="1 Liter Frische Vollmilch">
            <Beschreibung>1 Liter frische Vollmilch vom Biobauren im Tetra-Pack... </Beschreibung>
            <Spezifikation>DIN ISO 12345; Kuhmilchverordnung $123</Spezifikation>
            <bild>schoene_milch_12345.jpg</bild>
          </Artikel>
          <Artikel tilte="1 Liter fettarme Milch">
            <Beschreibung>1 Liter fettarme Milch vom Biobauren im Tetra-Pack... </Beschreibung>
            <Spezifikation>DIN ISO 12346; Kuhmilchverordnung $123</Spezifikation>
            <bild>schoene_milch_12346.jpg</bild>
          </Artikel>
          <Artikel title="0,5 Liter frische Vollmilch">
            <Beschreibung>0,5 Liter frische Vollmilch vom Biobauren im Tetra-Pack... </Beschreibung>
            <Spezifikation>DIN ISO 12347; Kuhmilchverordnung $123</Spezifikation>
            <bild>schoene_milch_12347.jpg</bild>
          </Artikel>
        </Milchprodukte>
        <Quarkprodukte>
        </Quarkprodukte>
      </Molkereiprodukte>
    <Backwaren>
    </Backwaren>
  </Lebensmittel>
</Warengruppen>

Oder würdet Ihr so eine XML-Datei anders aufbauen? So wie jetzt würden die Produkte den mit Abstand größten Teil in Anspruch nehmen, vielleicht sollte ich tatsächlich nur die Struktur in XML speichern, und alles was ich jetzt in den "Artikel"-Tags habe in eine DB-Tabelle verlagern. Der Performance zuliebe würde ich denke ich noch in PHP mit Hilfe von var_export als PHP-Array speichern, ich denke das geht erheblich schneller bei Zugriffen als jedesmal den XML-Parser anzuwerfen. Oder würdet Ihr eher serialize verwenden?

Viele Grüße
Andreas