Sup!
Die Datei als Lösung hat einige Nachteile:
- Bei zunehmender Datenmenge hast Du eine zunehmende Dateimenge und dann irgendwann ein Chaos von kryptisch benannten Dateien
- Das Einlesen der Daten dauert zunehmend länger, im schlimmsten Fall sind die gesuchten Daten im letzen Datensatz in der Datei - das belastet das Dateisystem, und auch das RAM, weil die ganze Datei geparst weren muß, und kostet natürlich auch Rechenzeit - irgendwann, bei ein paar hundert oder tausend Einträgen, kommt das zum Tragen
- Eine Datenbank garantiert einige Sachen:
Atomicity (Atomizität): Das Eintragen erfolgt ganz oder gar nicht - wenn Deine Dateien beim Aktualisieren z.B. halb geschrieben werden, und dann der Rechner abstürzt, dann sind einfach Daten weg.
Consistency (Konsistenz): Die Datenbank weigert sich, falsche Daten anzunehmen, dadurch sind die Daten immer konsistent und wieder auslesbar. Bei Dateien, die am Ende noch vom Benutzer editiert werden können, kann sonstwas drinstehen, und ggf. können kleine Fehler in der Datei das Skript verwirren oder - noch schlimmer - exploiten.
Isolation: Bei gleichzeitigem Zugriff von mehreren Transaktionen auf die Datenbank werden die Zugriffe von der Datenbank so gehandhabt, daß sie sich nicht in die Quere kommen. Bei Deinen Dateien könnten zwei Benutzer gleichzeitig eine Datei bearbeiten und dann hochladen, und die Änderungen des einen würden verloren gehen. Eine Datenbank würde den Zugriff auf die Daten, die bearbeitet werden, temporär sperren, so daß soetwas nicht vorkommen kann.
Durability: Die Datenbank führt Logs und speichert die Daten ggf. mehrfach, so daß ein Absturz die Daten nicht zerstört und der Zustand der Datenbank wiederhergestellt werden kann, auch wenn der Rechner mitten im Betrieb kaputt geht. Ein Dateisystem kann es schon mal zerbrezeln.
Nachteile der Datenbank:
- Bei ganz kleinen Datenmengen Overkill
- Ggf. teuer
- Zugriff etwas schwieriger als Zugriff auf in einer Datei gespeicherte Datenstrukturen - es sei denn, man hat eine objektorientierte Datenbank in Kombination mit persistenten Objekten in einer objektorientierten Sprache
Die Vorteile der Dateien sind natürlich:
- Einfach zu implementieren
- Geringe Kosten
- Hinreichend für kleines Projekt
Nachteile:
- Haben nicht die Vorteile der Datenbank...
Gruesse,
Bio