Frage von pfuffi, 71

Macht es Sinn, eine ganze Webseite in eine Datenbank zu schreiben?

Hallo liebe GF-Community!

Ich frage mich schon seit längerem, ob es Sinn macht, meine zukünftige Community-Webseite samt HTML/PHP-Struktur in eine Datenbank zu schreiben und somit praktisch nur noch wenig PHP-Code und die SQL-Querys im Index-File abgefragt werden. Ist die benötigte Leistung für die Datenbank überhaupt für eine Privatperson wie mich realisierbar bzw. macht es Sinn, das Ganze überhaupt in eine Datenbank zu schreiben und falls nein, gibt es da andere angemessene Lösungen, um die Webseitenstruktur so dynamisch wie möglich zu gestalten?

Ich bedanke mich im Voraus

Freundliche Grüsse

Pfuffi

Antwort
von MonkeyKing, 32

Es gibt bessere Möglichkeiten, eine Webseite strukturierter zu gestalten. Mach dich mal mit dem Model View Controller Prinzip vertraut oder schau dir gleich ein PHP Framework wie Yii oder CakePHP an.

Antwort
von n3kn2dhr, 37

Also von der Leistungsfähigkeit dürfte das für eine Private Webseite machbar sein. Die Datenbank wird vermutlich schnell genug sein, die Daten plus den Sourcecode für ein paar wenige hundert Aufrufe pro Tag aus der Datenbank zu servieren.

Allerdings ist es sehr unüblich den Quellcode ebenfalls in die Datenbank zu schreiben. Warum auch.

Diese Architektur skaliert auch nur schlecht. Um eine Webseite auszuliefern, musst Du den Bootstrapper-Code ausführen. Diese holt den eigentlichen Webseiten-Quellcode aus der Datenbank und führt diesen aus. Dieser Code wiederum holt dann erst die eigentlichen Nutzdaten aus der Datenbank und erzeugt die eigentliche HTML-Seite. Du brauchst also Code, um weiteren Code zu holen und auszuführen. Dieser Code ist eigentlich unnötig. Auch unnötiger Code muss geschrieben werden, gegebenenfalls mal geändert werden, er kann Fehler enthalten und er kann Angriffspunkt für einen Hacker sein.

Den restlichen Code brauchst Du in jedem Fall. Dann macht das also eigentlich keinen Sinn, das in die DB zu schreiben.

Zumindest der Bootstrapper-Code muss sowieso aussen bleiben. Denn es muss irgendein Fitzelchen Code geben, das den Quellcode von der Datenbank abfragt und dann beginnt diesen auszuführen.

Wenn Du also neben der Datenbank ohnehin auch noch Code ausliefern musst, dann kannst Du dich auch gleich den gesamten Code komplett von der DB getrennt ausliefern.

Kommentar von grtgrt ,

Genauer:

Jede Datenbank ist selbst eine Datei - eine i.A. recht große.

Solltest du deine PHP-Sourcen dort aufbewahren, muss dieses Fitzelchen Code, von dem oben gesprochen wird, den PHP-Code der aufgerufenen Seite erst mal in der Datenbank suchen und von dort herauskopieren in eine Datei. Erst die wird der PHP-Interpreter deines Webservers akzeptieren.

Dieser aufwendige Umweg entfällt, wenn du deine PHP-Seiten gleich als eigene Dateien auf den Server stellst.

Antwort
von wotan38, 2

Wenn ich z.B. die Texte 'Name: Müller' und 'Name: Schulze' habe, so ist der erste Teil "Name: " eine Konstante, die man normalerweise nicht speichert, weil es einerseits Resourcen verbraucht und anderseits unnötig ist. In Deinem Fall würde man bei jeder Seite eine Menge Konstante speichern, obwohl man sie nur einmal benötigt.

Es könnte aber sein, dass nicht alle Seiten formal gleich sind, dass es verschiedene Varianten davon gibt, z.B. unterschiedliche Ausgabestände. Dann wäre es schon nach den allgemeinen Regeln für eine Datenbank sinnvoll, den Seitenaufbau in einer eigenen Tabelle zu speichern und in der Haupttabelle nur auf deren id zu verweisen.

Sollen beliebige Seiten und nicht vorhersehbare Seiten gespeichert werden, so muss zwangsläufig der Seitenaufbau jedes mal gespeichert werden.

Die einfache Grundüberlegung lautet: Wieviele Seiten habe ich insgesamt zu speichern und wieviele verschiedene Arten davon es hinsichtlich Seitenaufbau gibt. Entsprechend kann ich entscheiden, was wohin gehört. Wenn es nur einen Seitenaufbau gibt, kann ich diesen auch im Programm hinterlegen und muss ihn überhaupt nicht speichern. 

Antwort
von LeonardM, 8

Ich würde nur das nötigste (inkl extras) in die datenbank eintragen.. klaut dir ja wertvolle zeit und ressourcen

Antwort
von kingbongo, 18

Man schreibt keine Anwendungslogik in die Datenbank. Wäre auch hochgradig unsicher und "eval" war schon immer evil.

Was du aber machen kannst, und was bei grossen Seiten auch gemacht wird (zB bei Fratzenbuch oder GF), ist den HTML Output (also das was der User in seinen Browser als HTTP Antwort) nach dem ersten Abarbeitungsprozess in die DB zu schreiben und somit zu cachen. Beim zweiten Seitenaufruf brauchst du nur noch dieses HTML aus der DB zu ziehen und sparst dir den (Rechen-)aufwand um das Markup zu erzeugen. Je nachdem wie dynamisch deine Seite ist, wie groß die Seite ist und die überprüfung was alles gecached werden kann, kann dieses Vorgehen bei einer kleine privaten Homepage allerdings den Rahmen sprengen.


Antwort
von CarolaA, 31

Hallihallo.

Ich habe die erste Version der Schützenvereinswebseite mit HTML/PHP gemacht.

Ich habe Menü, Footer und Banner in eigene PHP-Dateien gepackt und für jedes Thema wie Verein, Mannschaft, auch eine eigene Datei, wobei ich hier das Menü per "include datei.php" hinzugefügt habe, damit ich diese nur an einer Stelle ändern muss.

In der Datenbank war bei mir dann nur das Gästebuch und die Chronik enthalten. Aber auch die Daten für die Artikelnavigation.

Liebe Grüße, CarolaA.

Antwort
von voxymo, 32

Das macht eigentlich keinen Sinn. Nur die Inhalte kommen in die Datenbank und die Templates liegen als Datei vor. So machen es die meistens CMS, zu denen ich dir auch rate (anstatt irgendwas selbst zu programmieren).

Kommentar von mrauscher ,

Was voxymo schreibt, ist die einzig richtige Antwort. Ein CMS-System speichtert alle Daten der Website in die Datenbank und die Namen der Bilder ebenfalls. PHP-Code gehört nur in den seltensten Fälle dort hin und ebenfalls JavaScript nicht. Das CMS-System stellt quasi den "Rohbau" des Portals zur Verfügung und erspart einem mehr als 90% der Programmierarbeit. Die Gestaltung der Homepage steht somit im Vordergrund und auch hier bietet das CMS viel Hilfe durch Templates. Der Besitzer einer Homepage, basierend auf einem CMS-System, braucht für Änderungen an den Inhalten wenig oder gar keine HTML, PHP und MySQL Kenntnisse. Aber es ist ratsam, wenn er jemanden zur Hilfe bittet, um das Portal zu erstellen. Ich selbst verwende openEngine 2.0 für die Erstellung von CMS-Systemen. Meine Kunden können, sobald das Portal fertig ist, ihre Seiten selbst verändern und weitergestalten, ohne HTML- und PHP/MySQL-Kenntnisse. So kommt der Kunde günstig an eine Homepage, ist aber künftig dann unabhängig von mir, weil er alle Änderungen selbst vornehmen kann.

Antwort
von eddiepoole, 9

Mag komisch klingen, aber so lange du die Frage nicht selbst beantworten kannst, würde ich sagen, dass es sich nicht lohnt.

Keine passende Antwort gefunden?

Fragen Sie die Community