AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Website DB-basiert versus Filebasiert
Thema durchsuchen
Ansicht
Themen-Optionen

Website DB-basiert versus Filebasiert

Ein Thema von Delbor · begonnen am 29. Nov 2014 · letzter Beitrag vom 1. Dez 2014
Antwort Antwort
Seite 1 von 2  1 2      
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Website DB-basiert versus Filebasiert

  Alt 29. Nov 2014, 13:17
Hi zusammen

Mich beschäftigt schon länger eine Konzeptfrage zur Umsetzung eines Webauftrittes.
Grundsätzlich sieht mein bisheriges Konzept eine vollkommen DB-basierte Lösung vor. Das heisst, alles, was irgendwie mit der Webseite zu tun hat, stammt aus einer Datenbank: HTML, CSS, Javascript ebenso wie Infos zu registrierten Usern etc.
Das Gegenstück wären dann mehr Filebasierte Websites, wie sie von den IIS unterstütz werden: HTML, CSS, Javascript und mediale Inhalte stammen aus Dateien, die auf dem gemieteten Wbspace abgelegt sind.

So oder so wird die Site auf meinem Rechner entwickelt und anschliessend die werden die benötigten Infos zum Server übertragen.
Die Frage ist: was ist schneller?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Website DB-basiert versus Filebasiert

  Alt 29. Nov 2014, 14:34
Hi zusammen

Inzwischen habe ich da was dazu gefunden.
Trotzdem - oder gerade deswegen? - würden mich eure Meinungen weiterhin interessieren!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Website DB-basiert versus Filebasiert

  Alt 29. Nov 2014, 15:10
Die Frage ist: was ist schneller?
Geht es nur um die Geschwindigkeit (Seitenaufbau) oder auch darum, was ist schneller realisierbar? Einfacher zu pflegen? Ich denke, da wird es jetzt auf die gleichen Antworten wie im og. Forum hinauslaufen. Hinzu kommt: ohne detaillierte Informationen über Seitenanzahl und Seitengröße (Datenumfang) bringt ein Vergleich sowieso nichts.

Ich persönlich habe filebasierte Sites im Einsatz und auch welche mit einer DB (Joomla und MySQL). Es sind relativ einfache Seiten, da merkt man überhaupt keinen Performance-Unterschied.

Wobei das auch wieder auf deinen Provider ankommt und wie viele User gleichzeitig auf den Seiten sind. Du gibst dir Mühe und optimierst alles, holst jede Millisekunde raus, aber nützen wird es dir nichts, wenn dein Provider mit seiner Bandbreite Oberkante Unterlippe fährt.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#4

AW: Website DB-basiert versus Filebasiert

  Alt 29. Nov 2014, 16:26
Ich benutzte quasi ein halbes DB-basiertes System, da die Seiteninhalte in der DB liegen und der Rest (Bilder usw.) im Dateisystem.

Im Grunde könnte man ein DB-basiertes System mit nur einer einzigen winzigen PHP-Datei erzeugen, welches Alles (HTML, Bilder, CSS, JS usw.) aus der DB zieht.

Der Vorteil bei einem reinen statischen dateibasierten System wäre, daß man eben keine DB brauch und praktisch keine Sicherheitslücke existiert, wenn im Webserver kein Code ausgeführt wird. (solange der FTP- und der HTTP-Server sicher sind)

Was man bei der Webseite erstmal betrachen sollte, ob CMS oder nicht.
Es gibt immernoch genügend Leute, welche auf dem PC die Webseite bearbeiten/generieren und dann via FTP hochladen,
während andere eben ein sich selbt bearbeitbares CMS bevorzugen.


Wie bereits erwähnt, kann man das Schneller nicht beantworten, ohne die genaue Webseite, deren Daten und auch den Server zu kennen.
Werden die Daten life generiert (bei jedem Zugriff) oder gibt es eine Cache, bzw. ein Zwischending, wo nur gewisse Teile vorgeneriert/gecached sind
oder sind alle Daten bereits fertig auslieferbar?
Bei Letzterem kommt es dann nur noch daauf an, wie schnell der Speicher (Dateisystem oder DB) die Daten liefern kann.

Man nehme nur mal das alte QC von Borland/Embarcadero, wo am anderen Ende kein "normaler" Webserver, sondern ein Delphiprogramm hängt.

PS: http://www.opensourcecms.com/
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Nov 2014 um 16:41 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Website DB-basiert versus Filebasiert

  Alt 29. Nov 2014, 16:54
Hi mm1256

Danke für deine Antwort.
Der Provider stellt ADSL zur verfügung - zahlenmässig weiss ich jetzt gerade nicht auswendig, wie gross die Bandbreite ist, aber das dürfte wohl guter Durchschnitt sein (so in etwa 30 - 35 kb/s).

Zitat:
Geht es nur um die Geschwindigkeit (Seitenaufbau) oder auch darum, was ist schneller realisierbar? Einfacher zu pflegen?
Der Seitenaufbau ist sicher mal zentral. Aber auch die Pflege/Weiterentwicklung der Site ist wichtig, werden meine Webseiten doch dynamisch mit Webbroker erstellt.
Im ersten Schritt werden Fotogalerien verwirklicht. Deren HTMLseiten dürften erstmal (fast) alle gleich sein, wobei die Dinger Platzhalter aufweisen, an deren Stelle Webbroker die HTML- bzw. CSS-Texte für die Menues, bzw. die Fotos einfügt. Dabei müssen bei jeder neuen Seite sämtliche Menues upgedatet/ersetzt werden.
Bei Verwendung einer Datenbank würden diese Änderungen vorerst auf meinem Rechner vorgenommen und anschliessend die DB auf dem Server upgedatet. Bei Verwendung einer filebasierten Website müsste das Menuefile und das zugehörige CSS-File jeder schon vorhandenen Seite ausgewechselt werden, einmal, weil das Menue jeder Seite ein neues Item enthält, aber auch, weil das Menueitem der aktuell sichtbaren Seite keinen Klick auslösen darf.

Zitat:
...und wie viele User gleichzeitig auf den Seiten sind.
Mein Hoster stellt mir 25 Datenbanken zur Verfügung - ich werde ihn mal danach fragen müssen, aber ich gehe davon aus, dass es sich dabei um Instanzen handelt, so dass gleichzeitig 25 Sessions ablaufen können.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#6

AW: Website DB-basiert versus Filebasiert

  Alt 29. Nov 2014, 17:19
Ich glaub ja eher, daß du falsch rangehst.

Auch wenn das System dateibasiert ist, können Inhalte dynamisch sein.
Die Menüs könnten z.B. beim Auslesen generiert und an die jeweilige Seite angepasst werden. Dabei ist es egal ob die Daten dafür aus einer DB oder einer Datei kommen.



Die eigentliche Frage lautet doch:
Welche Systeme sind ausreichend genug, für mein Vorhaben, und was ist davon am effizientesten.

Und zusätzlich müsstst du dir noch andere Fragen stellen:
  • wie will ich lokal mene Daten verwalten
  • wie werden sie auf dem Server verwaltet
  • wie lässt es sich für mich am Einfachsten Besten verwalten
  • wie sieht es mit Backup und Co. aus
  • was für Techniken will und kann ich überhaupt benutzen
    • statisch und ohne Laufzeitcode im Server
    • vorgefertigte Inhalte nur noch um Menü usw. erweitern
    • Templates mit Inhalten und Menüs füllen
    • alles komplett selber zusammensetzen (IntraWeb, WebSnap, WebBroker, ...)

Der Vorteil bei rein Dateibasiert ist, daß du nur einen Übertragungskanal hast.
> nur Dateien (z.B. FTP)
Ansonsten müsste man ja Dateisystem und Datenbank mit Daten füttern,
außer die veränderlichen Daten sind ausschließlich in der Datenbank und im Dateisystem ist nur der statische Teil der Webseite.
> dann halt nur eine DB-Verbindung
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Nov 2014 um 17:24 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Website DB-basiert versus Filebasiert

  Alt 29. Nov 2014, 17:31
Hi himitsu
Was man bei der Webseite erstmal betrachen sollte, ob CMS oder nicht.
Es gibt immernoch genügend Leute, welche auf dem PC die Webseite bearbeiten/generieren und dann via FTP hochladen,
während andere eben ein sich selbt bearbeitbares CMS bevorzugen.
Das Webserverprogramm wird mit Delphis Webbrokertechnologie erstellt, wie ich oben schon geschrieben habe. Ich hab mir sagen lassen, dass das schon ein CMS ist. Da ich Typo3 halbwegs kenne, wollte ich es allerdings nicht so nennen.



Werden die Daten life generiert (bei jedem Zugriff) oder gibt es eine Cache, bzw. ein Zwischending, wo nur gewisse Teile vorgeneriert/gecached sind
oder sind alle Daten bereits fertig auslieferbar?
Bei Letzterem kommt es dann nur noch daauf an, wie schnell der Speicher (Dateisystem oder DB) die Daten liefern kann.
Die Daten werden life per Stream generiert - entweder vom DB-BlobStream oder von einem Filestream an den Webbroker ContentStream übergeben. Dabei gibt es einen Stream, der die eigentliche Webseite liefert, einen HTML-MenueStream, einen CSS-MenueStream und je einen Stream für die anzuzeigenden Fotos.

Um meine Dateien auf den Server hochzuladen, habe ich WebMatrix zur Verfügung.

Gruss
Delbor

PS:
Zitat:
oder gibt es eine Cache, bzw. ein Zwischending, wo nur gewisse Teile vorgeneriert/gecached sind
Nein, bislang gibt es keinen Cache. In Bezug Caching werde ich mich noch genauer informieren müssen - Webbroker selbst cacht zwar auch, aber nur bis zur Auslieferung.
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (29. Nov 2014 um 17:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#8

AW: Website DB-basiert versus Filebasiert

  Alt 30. Nov 2014, 08:55
Aus Erfahrung (ich baue die letzten 5 Jahre ein CMS) kann ich sagen, alles, was Du aus Dateien ausliefern kannst, solltest Du auch auch Dateien ausliefern.

Zumindest, wenn das was Du auslieferst, auch einigermassen schnell sein soll.

Filebasiert hat viele Vorteile: Der Webserver und auch das Betriebssystem darunter haben viele Möglichkeiten das Zeug intern zu cachen.
Wenn Du Files da liegen hast, dann kann der Webserver zu Deinen Dateien die richtigen Cache-Header setzen (z.B. E-Tag, last Modified) und kann anhand der Fileangaben auch automatisch die richtigen Header zurücksenden (z.B. 304 Not Modified). Das ganze müsstest Du sonst für dynamischen Content alles selber bauen. Also sowohl das interne cacheing vor der Auslieferung als auch das korrekte Handling der Http Caches.

Statischer Content hat noch mehr Vorteile: Du kannst das, was statisch dort liegt, besser skalieren und ausfallsicher gestalten. Einfach das gleiche Zeug auf mehrere Webserver klatschen, ein Loadbalancer-Pärchen vorne dran, und gut ist. Wenn eine Kiste oder ein LB ausfällt übernimmt einfach ein anderer und gut ist.

Zudem braucht sowas natürlich deutlich weniger CPU und RAM, als wenn das alles zur Laufzeit berechnet werden muss. Das heisst man kann mit weniger Hardware eine deutlich größere Menge an Usern versorgen.

Lieferst Du dynamisch aus, musst Du zusätzlich noch dafür sorgen das auch die Datenbank ausfallsicher bereitgestellt wird. Denn fällt die DB aus, liefert Deine Anwendung sonst gar nichts mehr aus. Das erhöht die Komplexität der Systems um einiges. Und dann stellt sich die Frage: Kommt die Anwendung selber ohne Statushaltung aus? Wenn Du im Code sowas wie Sessions benutzt um den Zustand des Clients zu speichern, dann musst Du auch in der Lage sein, das irgendwo hin zu persistieren, für den Fall das ein Webserver ausfällt.

Das heisst natürlich nicht, das man zur Verwaltung hier keine DB nutzen sollte.
Aber ein Verfahren, das aus dem Inhalt in der DB den auszuliefernden Content (= die HTML-Generierung) nicht zur Laufzeit macht, sondern aus dem DB-Inhalt alles statisch vorgeneriert und dann lediglich ins Filesystem zur Auslieferung legt, ist der volldynamischen Generierung beim Request vorzuziehen.

Wie gesagt sowohl zur besseren Nutzung von Ressourcen (Hardware), zum besseren Handling von Skalierung und Ausfallsicherheit, als auch zur besseren Ausnutzung der eigentlich für die Auslieferung von statischem Content optimierten Webserver.

Man kann das natürlich auch mischen. Alles was geht, aus files, und wenn dann wirklich was dynamisch generiert werden muss, diesen Teil auf das nötigste beschränken. Ist letzten Endes immer ne Fallentscheidung, aber so als Richtlinie sollte man immer versuchen, Dateien den Vorzug zu geben.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Website DB-basiert versus Filebasiert

  Alt 30. Nov 2014, 12:00
Ein Dateisystem ist übrigens auch eine Datenbank und zwar handelt es sich um eine Key-Value Datenbank.
Der Key ist der Dateiname inklusive Pfad und der Value ist der Inhalt der Datei. Die API ist im Betriebssystem integriert und Managementtools sind auch schon an Bord.

Man benötigt nicht immer eine relationale Datenbank sondern gerade bei Webserver reicht meistens eine NoSQL Datenbank aus.

Wenn man z.B. MySQL nur dazu verwendet um statische Blobs (z.B. JPegs, Html, Javascriptdateien) zu speichern und die Features von SQL (Joins, Aggregatfunktionen, Views,...) nicht in Anspruch nimmt dann hat man das falsche Werkzeug benützt.
Möchte man ein Forum abbilden (mit User, Benutzerechten, Unterforen, Tags, Suchfunktion,...) dann ist eine relationale Datenbank natürlich sehr nützlich. Es kommt halt immer auf die Anwendung an.

PS: statische Inhalte - also Dateien die vom Entwickler der Webseite erstellt wurden - sollte man immer als Dateien und nicht in einer rel. Datenbank speichern.
fork me on Github

Geändert von sx2008 (30. Nov 2014 um 12:02 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Website DB-basiert versus Filebasiert

  Alt 1. Dez 2014, 10:28
Hi zusammen
Erst mal vielen Dank für eure ausführlichen Antworten. Sie enthalten interessantes Futter für meine grauen Zellen
Zitat:
Aus Erfahrung (ich baue die letzten 5 Jahre ein CMS) kann ich sagen, alles, was Du aus Dateien ausliefern kannst, solltest Du auch auch Dateien ausliefern.
Also fällt eine komplett DB-basierte Webserveranwendung aus. In einer DB wären allenfalls Angaben über registrierte Nutzer, ausgelieferte Cookies(?) etc abzulegen.
Ein Argument pro DB meinerseits war, dass die Daten da etwas besser vor Angriffen geschützt sein dürften.

Allerdings muss ich doch nochmal nachfragen; die Unklarheiten betreffen die Begriffe 'statisch' unhd 'dynamisch'. Unter statisch verstand ich bislang eine Webseite, die schon fix und fertig auf dem Server vorliegt, also mit dem kompletten HTML, CSS und allenfalls Javasript, bzw. verweisen im HTML zu Dateien, die CSS oder Javascript enthalten.
Unter 'dynamisch' verstand ich Webseiten, die zB. von Webbroker zusammengebaut werden. Hier kann ja die durch Platzhalter gekennzeichnete Stelle im HTML-String durch beliebige andere Inhalte ergänzt werden - einen CSS-String, der den Hintergrund rot färbt oder einen anderen, der grün färbt zum Beispiel.

So gesehen, wären meine Webseiten immer dynamisch, auch wenn Änderungen im Code nicht vorgesehen werden. Egal, ob die entsprechenden Inhalte aus einer Datei oder einer Datenbank (auf dem Server) stammen.

Zitat:
Das heisst natürlich nicht, das man zur Verwaltung hier keine DB nutzen sollte.
Aber ein Verfahren, das aus dem Inhalt in der DB den auszuliefernden Content (= die HTML-Generierung) nicht zur Laufzeit macht, sondern aus dem DB-Inhalt alles statisch vorgeneriert und dann lediglich ins Filesystem zur Auslieferung legt, ist der volldynamischen Generierung beim Request vorzuziehen.
Auf meinem Rechner läuft meine (Bild-)Datenbankapplikation(MySQL), mit deren Hilfe ich HTML-Seiten per Drag&Drop zusammmenstellen kann. Diese sollen dann per Webdav in meinem Webaccount auf dem Server abgelegt werden. Auf dem Server soll eine Webbroker-Anwendung laufen, die aus diesen Dateien die Webseiten zusammenbaut.
Konkret heisst das: es gibt eine TPageproducer, die Anhand des Requests eine bestimmte HTML-Seite lädt. An bestimmten Stellen des HTML-Strings sind Platzhalter eingefügt, die Webroker mit CSS, Bildaten etc ersetzt, indem er diese Daten per Filestream ausliest, wobei für HTML,CSS etc. jeweils eigene TPageproducers zuständig sind.
Wenn ich obiges Zitat richtig verstanden habe, plädierst du allerdings für ein Verfahren, das eine Datei vorsieht, die gleich nebst Html auch CSS und Javascript enthält und demnach nur noch die Bilder eingebunden werden müssen.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz