Performance/Design Frage

Performance/Design Frage

am 08.09.2004 19:02:39 von Philipp Walther

Hallo Allerseits,

Könnte mir Jemand einen guten Rat zu meinem Problem geben?
Ich baue gerade ein kleines CMS.
Das CMS soll einfach erweiterbar sein.
Ich habe eine Content-Tabelle, in welcher Autor,
Zugriffsrechte etc. pro "Content-Eintrag" (z.b. eine
HTML Seite) gespeichert werden.

Zuerst wollte ich ein Feld namens "typ", wo stehen
würde was für ein content-typ es ist (also HTML, PHP, Bild etc.).
Diesen Inhalt (=Daten) würde dann je in einer Tabelle gespeichert
(content_html, content_php etc. oder ähnlich).

Nun bezweifle ich, dass ich dies in einer einzigen Abfrage tun
kann, sondern immer den typ holen muss, und dann eine query wie
$query = "SELECT * FROM ".$tabellenane_aus_result." WHERE .."
machen muss.

Meine alternative wäre: eine einzige, generische Tabelle, mit
einem Blob (Content) und einem Feld für den Content-Typ.
Und diesen Content dann je nach Typ mit PHP verarbeiten.

Welches ist die elegantere, welches die performantere Lösung?
(Ich habe gesehen, dass Typo3 letzeres anwendet....)

Dank und Gruss
Philipp

Re: Performance/Design Frage

am 09.09.2004 01:49:14 von Philipp Wagner

Philipp Walther schrieb:
> Hallo Allerseits,
>
> Könnte mir Jemand einen guten Rat zu meinem Problem geben?
> Ich baue gerade ein kleines CMS.
> Das CMS soll einfach erweiterbar sein.
> Ich habe eine Content-Tabelle, in welcher Autor,
> Zugriffsrechte etc. pro "Content-Eintrag" (z.b. eine
> HTML Seite) gespeichert werden.
>
> Zuerst wollte ich ein Feld namens "typ", wo stehen
> würde was für ein content-typ es ist (also HTML, PHP, Bild etc.).
> Diesen Inhalt (=Daten) würde dann je in einer Tabelle gespeichert
> (content_html, content_php etc. oder ähnlich).
>
> Nun bezweifle ich, dass ich dies in einer einzigen Abfrage tun
> kann, sondern immer den typ holen muss, und dann eine query wie
> $query = "SELECT * FROM ".$tabellenane_aus_result." WHERE .."
> machen muss.

MySQL kann JOINs, damit sollte auch das in einer Query gehen - abgesehen
davon, Queries in MySQL sind nicht soo langsam, und wenn's statt einer
Query jetzt zwei pro Seite sein sollten wäre das IMHO überhaupt kein
Problem.

>
> Meine alternative wäre: eine einzige, generische Tabelle, mit
> einem Blob (Content) und einem Feld für den Content-Typ.
> Und diesen Content dann je nach Typ mit PHP verarbeiten.

Von Daten wie Bildern und HTML-Seiten in Datenbanken halte ich
persönlich garnichts. Dafür gibt's das Dateisystem, zumal man ja eh bei
den meisten Webhostern mehr Speicherplatz hat als Datenbankplatz.
Pack die Zugriffsrechte in die Datenbank und die Daten selbst aufs
Filesytem, dann macht jeder was er am besten kann.

>
> Welches ist die elegantere, welches die performantere Lösung?
> (Ich habe gesehen, dass Typo3 letzeres anwendet....)

Ich weiß ja nicht, aber Typo3 würde ich durchaus als etwas
ressourcenhungrig bezeichnen - woran das genau liegt habe ich mir noch
nie genau angeschaut.

>
> Dank und Gruss
> Philipp

Philipp