Dateizugriff oder Datenbank, was ist besser?
hawkmaster
- php
0 LX- programmiertechnik
0 Christian Kruse0 LX
0 ChrisB0 hawkmaster
0 hotti
Hallo zusammen,
Folgendes Szenario.
Eine Webseite auf einem Apache Webserver unter Win XP aktualisiert sich alle 10 Sekunden.
Ein externes Programm schreibt ein Flag in eine MySQL Datenbank mit Username und zusätzlichen Infos. Das Php Script schaut nach ob für den angemeldeten User ein Eintrag da ist und öffnet dann das Hauptfenster.
Die andere Möglichkeit wäre das das externe Programm eine Datei mit dem Usernamen erstellt oder das jeder User ein eigenes Verzeichnis bekommt.
Mir geht es darum zu wissen was von der Performance oder Auslastung des Apache Servers besser ist. Bisher ging ich von Variante A mit der Datenbank aus, da ich Annahm das Datenbank Zugriffe schneller und besser sind als Dateizugriffe.
Nun hat mir aber jemand gesagt das es besser wäre auf Datei und Verzeichnis-Ebene zu arbeiten, weil alle großen Foren es so machen würden.
Jetzt bin ich etwas verunsichert.
Was meint ihr?
vielen Dank und viele Grüße
hawk
Hallo!
Ja und nein. In unterschiedlichen Szenarien ist mal das eine, mal das andere besser (im Sinne von performanter bzw. einfacher zu implementieren).
Datenbanken sind lediglich Programme, die dem Entwickler die Arbeit abnehmen, sich Gedanken machen zu müssen, wohin er seine Daten schreibt und wieder ausliest.
Daraus läßt sich LX' erster Satz der Datenspeicherung ableiten:
Wenn Du genau weißt, wo und wie Du Deine Daten speichern kannst, brauchst Du keine Datenbank (es sei denn, Du würdest die Limitierungen des Dateisystems überschreiten).
P.S.: weiter mit vollständiger Induktion.
Gruß, LX
你好 LX,
Wenn Du genau weißt, wo und wie Du Deine Daten speichern kannst, brauchst Du keine Datenbank (es sei denn, Du würdest die Limitierungen des Dateisystems überschreiten).
Ich weiss genau, dass ich meine Daten auf der Festplatte in einer relationalen Struktur mit einem Index auf den Primärschlüssel speichern möchte. Ich übersteige die Limitierungen des Dateisystems dabei nicht. Jetzt nehme ich also keine Datenbank? ;>
再见,
克里斯蒂安
Ich weiss genau, dass ich meine Daten auf der Festplatte in einer relationalen Struktur mit einem Index auf den Primärschlüssel speichern möchte. Ich übersteige die Limitierungen des Dateisystems dabei nicht. Jetzt nehme ich also keine Datenbank? ;>
Dein "Wissen" ist an dieser Stelle etwas zu allgemein gehalten. Würdest Du es so genau wissen, dass Du auf eine Datenbank verzichten kannst, liefe es in diesem Fall darauf hinaus, eine Datenbank zu programmieren.
Gruß, LX
你好 LX,
Ich weiss genau, dass ich meine Daten auf der Festplatte in einer relationalen Struktur mit einem Index auf den Primärschlüssel speichern möchte. Ich übersteige die Limitierungen des Dateisystems dabei nicht. Jetzt nehme ich also keine Datenbank? ;>
Dein "Wissen" ist an dieser Stelle etwas zu allgemein gehalten.
Ganz im Gegenteil, ich bin sehr speziell geworden :)
Würdest Du es so genau wissen, dass Du auf eine Datenbank verzichten kannst, liefe es in diesem Fall darauf hinaus, eine Datenbank zu programmieren.
Darauf wollte ich hinaus. So simpel ist die Wahl der Mittel halt doch nicht.
再见,
克里斯蒂安
Hi,
Datenbanken sind lediglich Programme, die dem Entwickler die Arbeit abnehmen, sich Gedanken machen zu müssen, wohin er seine Daten schreibt und wieder ausliest.
Das ist ein "Dateisystem" letztendlich auch - ich muss mir keine Gedanken drueber machen, wo die einzelnen Bytes auf der Platte landen.
Datenbank - Festplatte, Tabelle - Verzeichnis, Datensatz-ID - Dateiname ... ist doch irgendwie alles das gleiche in Gruen.
MfG ChrisB
Eine Datenbank unterscheidet sich von einem Dateisystem in der zusätzlichen Strukturierung der Daten (Indizes, Views, etc.). Insofern ist es tatsächlich korrekt, ein Dateisystem als reduzierte Datenbank zu betrachten.
Das entspricht jedoch nur dem von mir aufgestellten Satz: die Ergänzungen, die eine Datenbank im Vergleich zum Dateisystem hat, dienen dem Entwickler, damit er sich weniger Gedanken über die Strukturen seiner Daten machen muss.
Gruß, LX
Hi,
Eine Datenbank unterscheidet sich von einem Dateisystem in der zusätzlichen Strukturierung der Daten (Indizes, Views, etc.). Insofern ist es tatsächlich korrekt, ein Dateisystem als reduzierte Datenbank zu betrachten.
Oder umgekehrt, die Datenbank als eine Weiterentwicklung des Dateisystems :-)
Das entspricht jedoch nur dem von mir aufgestellten Satz: die Ergänzungen, die eine Datenbank im Vergleich zum Dateisystem hat, dienen dem Entwickler, damit er sich weniger Gedanken über die Strukturen seiner Daten machen muss.
Die Gedanken, die man sich ueber die Struktur, die man seinen Daten beim Ablegen in einer Datenbank geben will, machen muss, werden bei der Nutzung dieser nicht unbedingt "weniger".
Beide sind Abstraktionsschichten, welche die eigentliche Speicherung der Daten (wenn wir bis auf die physische Ebene hinunter gehen wollen) kapseln und komfortabler gestalten - in unterschiedlichem Umfang, und mit unterschiedlichen "Zusatzfeatures".
Natuerlich sind beide auf verschiedene Anwendungsfaelle hin mehr oder weniger optimiert worden - die Abwaegung, welche unter welchen Gesichtspunkten "besser" ist, muss also, wie immer eigentlich, am konkreten Einzelfall erfolgen.
MfG ChrisB
Hallo,
ich störe ja nur ungern eure Gedankengänge :-)
Mir ging es eigentlich nur grundsätzlich was für den Apache oder PHP, besser oder Ressourcen schonender ist, wenn man annimmt das 100 Anwender gleichzeitig solch eine Aktion ausführen.
vielen Dank und viele Grüße
hawk
Moin!
Mir ging es eigentlich nur grundsätzlich was für den Apache oder PHP, besser oder Ressourcen schonender ist, wenn man annimmt das 100 Anwender gleichzeitig solch eine Aktion ausführen.
Das kann man grundsätzlich nicht sagen, weil es von sehr vielen Faktoren abhängt.
Auf Dateisystemseite gibt es zu viele schlechte und gute Dateisysteme, die benutzt werden könnten. Schlechte Dateisysteme haben beim Zugriff auf Verzeichnisse miese Performance, fragmentieren außerdem gern, und sind insgesamt lahm. Gute Dateisysteme lösen einige der Probleme schlechter Dateisysteme exzellent, und andere nur mittelmäßig. Aber welches potentielle Problem wirft denn jetzt die Datenspeicherung in Dateien in diesem konkreten Anwendungsfall auf, bzw. was ist das für diesen Fall ideale Dateisystem?
Auf Datenbankseite gibt es ebenfalls viele höchst unterschiedliche Systeme, die hinsichtlich der Performance teils große Unterschiede aufweisen. Manche Datenbank bietet extrem gute Leseperformance, hat deshalb aber Einschränkungen beim Schreiben. Andere Datenbanken bieten Features wie Transaktionen, haben deshalb aber grundsätzlich keinen sehr schnellen Lese- und Schreibmodus. Der Einsatz von Indices ist natürlich auch eine Sache: Je mehr man davon hat, desto langsamer das Schreiben, aber desto schneller das gezielte Lesen (sofern der Index wirklich benutzt wird).
Aus allen diesen Überlegungen heraus kann man deine Frage mit Sicherheit so beantworten: "Es hängt davon ab."
- Sven Rautenberg
Hallo an alle,
vielen Dank Euch für die Hilfe.
Wenn Du genau weißt, wo und wie Du Deine Daten speichern kannst, brauchst Du keine Datenbank (es sei denn, Du würdest die Limitierungen des Dateisystems überschreiten).
Ich habe bzw. brauche eh eine MySQL DB für andere Dinge.
Es geht mir darum:
Angenommen es haben sich 100 User gleichzeitig eingeloggt und das Script aktualisiert sich alle 10 sekunden.
Ist dann der APache mehr ausgelastet wenn das Script einen DB Zugriff macht oder einen Dateizugriff für jeden User oder ist es im Prinzip egal?
vielen Dank und viele Grüße
hawk
hi,
Nun hat mir aber jemand gesagt das es besser wäre auf Datei und Verzeichnis-Ebene zu arbeiten, weil alle großen Foren es so machen würden.
Jetzt bin ich etwas verunsichert.
Ich jezt auch. Wer hatn das gesagt, weiter oben das da?
Hotte
Hallo,
Ich jezt auch. Wer hatn das gesagt, weiter oben das da?
Ein Trainer der einen Apache Kurs gab :-)
viele Grüße
hawk