Sabine: Chatter-Daten in einer TXT-File /// Wird die mal zu groß ?

Hallo liebe Leser

Schon seit geraumer Zeit programmiere ich an einem Chat in Perl,
er ist noch sehr schlecht,
aber er funktioniert.

Meine Frage ist folgende:
Ich muss ja die Chatterdaten irgendwo speichern.
Im Moment sind es 3 Daten die ich bei einem Nick speichere,

  • Nickname
  • Passwort
  • Schrift-Farbe

Das ganze speichere ich in einer TXT-File ab.
Das geht ja super bei 10 Usern,
auch bei 120 User geht es Super (Bis dahin habe ich das schon ausprobiert)

aber ich denke ja weiter,
wenn der Chat balöd mal toll funktioniert und da voll viele Chatter sind,
angenommen da sind mal UR-Viele,
10.000 oder gar 100.000  User
(Bitte nicht lachen,  ist ja nur mal Theorie)
sprengt es mir doch über kurz oder lang meine "Datenbank"
die in meinem Fall eine TXT-File ist, oder ?

Weil wenn sich da ein User einloggen will und der sucht aus einer
50 MB TXT File zum Beispiel die Daten raus,
das kann doch nicht gutgehen.

DIese Ängste haben mir einige Leute eingeredet,
aber die konnten mir leider auch keine bessere Lösung sagen as die TXT-File.....

Ich meine TXT oder DIZ oder was weiß ich,
ist ja im Prinzip egal,
das Problem ist die Datenmenge.

Wie speichere ich die Am besten ?
Und es sollte Unbedingt einfach (!!) sein.

Man sagte mir mal in PHP gibt es MySQL
aber davon habe ich keine Ahnung.

Ausserdem ist mein Chat in CGI bzw. Perl.

Bitte um Hilfe,
Vielen Dank,
Sabine

  1. Hi!

    Wie speichere ich die Am besten ?
    Man sagte mir mal in PHP gibt es MySQL
    aber davon habe ich keine Ahnung.

    MySQL-Datenbanken kann man auch ohne PHP, also z.B. mit Perl benutzen. Dazu braucht man die Module DBI und DBD::mysql. Ich denke mal, bei großen Datenbanken ist eine MySQL-Datenbank auf alle Fälle eine bessere Lösung als eine .txt Datei.

    Und es sollte Unbedingt einfach (!!) sein.

    Hm. Ob MySQL einfach ist... Darüber läßt sich wohl streiten. :)

    http://www2.rent-a-database.de/mysql/
    Könnte ganz hilfreich sein.

    Ich hoffe, ich konnte etwas helfen.

    CU
    ArneB

  2. Hi,

    programmiere ich an einem Chat in Perl,
    Ich muss ja die Chatterdaten irgendwo speichern.
    Weil wenn sich da ein User einloggen will und der sucht aus einer
    50 MB TXT File zum Beispiel die Daten raus, das kann doch nicht gutgehen.

    Die Indexdatei der Acrchivsuche ist ungefähr 50 MB groß - da kannst Du die entsprechenden Antwortzeiten testen.

    Wie speichere ich die Am besten ?
    Und es sollte Unbedingt einfach (!!) sein.

    Bis zu ein paar hundert Anwendern würde ich mir an Deiner Stelle keine Sorgen machen.

    Sollten es wirklich deutlich mehr werden, dann kannst Du Dir eine Indexstruktur aufbauen. Das geht auch mit relativ einfachen Mitteln.
    Nur mal so als Skizze: Trenne die beiden ersten Zeichen der Benutzerkennung ab und benutze diese als Name der Benutzerdatei! Innerhalb dieser mußt Du dann - wie bisher - sequentiell suchen, aber bei 26 Buchstaben hast Du auf diese Weise bis zu 576 Dateien (in einem entsprechenden Benutzerverzeichnis), auf die sich Deine Benutzer verteilen.

    Sollten es noch mehr Benutzer werden, dann kannst Du mehr abtrennen ... aber nicht zuviel, weil das Dateisystem alle Dateien innerhalb eines Verzeichnisses eventuell ebenfalls sequentiell nach Deiner Datei durchsuchen muß.
    Alternative: Ein Verzeichnisbaum! Dabei würde der Benutzer "Sabine" in der Datei "s/a/b/i/ne" abgespeichert werden - und Du brauchst genau *einen* Dateizugriff, um eine Datei mit genau *einer* Zeile einzulesen ... es werden dann halt irgendwann *sehr* viele Dateien, und die belegen zwar nicht viel Platz auf der Platte, aber viele inodes (Verzeichniseinträge).

    mfG - Michael

    P.S.: Ich baue auf dieser Basis gerade eine Suchmaschine ... und bei mit sind es *viele* hunderttausend Einträge ...