ich bin gerade dabei ein kleinen Blog zu schreiben. Um dort komentare abzugeben oder sie zu lesen müssen sich user anmelden das ist kein problem. Da es sicher (und so soll es auch sein) nicht mehr als 50 user werden dachte ich mir ich nehme mir eine flatfile als datenbank. In die flatfile sollen je 4 informationen eines user gespeichert werden
- username 2. password 3. vorname 4. email (verschlüsselt) das ist auch kein Problem. Warum ich nicht mit einer mysql datenbank arbeite? Ich habe keine zur verfügung und möchte mir auch keine holen da ich eine flatfile möchte.
Ich rede bereits zu viel :D
Was ich eigentlich fragen möchte...
Welche nachteile hat eine flatfile?
Ein Flatfile an sich hat keinen Nachteil.
Die Datenstruktur, mit welcher du Daten-sätze Zeilenorientiert speicherst, kann Nachteile haben.
Speichere nicht nur Werte ab, sondern immer den Parameter zum Wert
Beispiel als XML
<parameter>Wert</parameter>
Beispiel als CSV Dataseparator = ",\t"
parameter=wert,\tparameter=wert,\t
Angenommen ich schreibe etwas wo ca. 5.000 oder mehr leute sich anmelden können kann sehr schnell etwas durcheinander kommen!
Chaos hat nichts mit der Anzahl der Daten zu tun, sondern mit schlechtem Design.
Datenzugriffe müssen natürlich ein Lockfile implementieren. Aber das hat nichts mit Flatfiles im speziellen zu tun.
In Perl gibt es Tie:File, ein Modul, welches mit grossen Files, oder Files mit unbekanntem Wachstumspotential fertig wird.
Was ich bisher (ausversehen oder mit absicht) beobachtet habe:
- wenn man für jeden user nicht jeweils eine zeile benutzt gerät alles durcheinander so sieht man zum beispiel bei nummer 4 meines beispieles (email) alle informationen des nächsten user und er ist auch nicht mehr zu erkennen da der user ja eigentlich die email des vorherigen ist
Das deutet an, dass deine In/Out Zugriffe falsch konzipiert sind und/oder eine unglückliche Datenstruktur vorliegt.
- wenn beispielsweise vorname leer bleibt verrutscht die email auf platz 3 also bräuchte man einen platzhalter für nummer 3
Leere Werte sind Werte. Warum speicherst du diese nicht? Warum liest du sie nicht als gültige Werte aus?
Speicher parameter, und du weist, wofür ein Wert steht, egal in welcher "Spalte" des Records er steht.
- im schlimmsten fall können fremde leute die flatfile in ihrem browser aufrufen und sie anzeigen lassen
Speichere das File ausserhalb von DocumentRoot.
mehr fällt mir gerade nicht ein. Natürlich kann man mit einigen abfragen und sicherheitsvorkehrungen die punkte 1-3 sichern. Aber ich kann mir nicht vorstellen dass es bei mehr als 5.000 usern noch efizient ist oder doch?
Doch, sehr sogar...
Wer hat damit schon erfahrungen gemacht? Wer weiss noch mehr nachteile einer Flatfile?
Ich zu genüge und bin vollauf zufrieden. Ich habe nicht 500 User, aber die Datenstruktur in Memberfiles und anderen Datenfiles ist grundsätzlich immer die Gleiche. Einige Datenfiles haben über 10000 Records.
mfg Beat;
--
Woran ich arbeite:
X-Torah
><o(((°> ><o(((°>
<°)))o>< ><o(((°>o