Cheers!
Da ext2 ab ca. 20000 Dateien pro Verzeichnis beginnt, ziemlich langsam zu werden, muss ich das ganze jetzt wohl oder übel auf eine Datenbank umstellen.
Warum kommst Du nicht einfach mit mehreren Verzeichnissen, z.B. einem fuer Nutzer, deren Namen mit A beginnt, u.s.w.?
Die Frage ist: Wie speichere ist das am besten und efizientesten in einer Datenbank? Eine große 3-spaltige Tabelle, in die ich alle Nachrichten aller Benutzer reinschreibe (empfaengername, absender, text)? Die Nachrichten eines bestimmten Benutzers müsste ich dann bei jedem Zugriff über "SELECT text, absender WHERE empfaenger=einuser" raussuchen. Ist das halbwegs effizient oder gibt es eine bessere Möglichkeit?
Die allerschlechteste Variante, die auch bereits an den Begrenzungen Deines RDBMS scheitern duerfte, waere die "fuer jeden Nutzer eine Tabelle"-Variante. Es scheint ueberfluessig das hier zu schreiben, aber auf Dateiebene hast Du ja genau das bereits ganz trocken umgesetzt.
Eine weitere schlechte Variante besteht in der von Dir skizzierten Eintabellenloesung. Weniger wegen der von Dir vermuteteten Performanceeinbruechen, sondern aus Gruenden der Handhabbarkeit der Daten. (ein kleines Beispiel: ein Nutzer, z.b. 'Lude' moechte seinen Namen aendern, was zu einer Datenaenderung an vielleicht 2000 Stellen fuehrt. Zudem sind die Briefpartner ueberrascht, dass sie auf einmal Post im Briefkasten haben von Jemandem, den sie scheinbar gar nicht kennen.)
Es geht also darum die Entitaeten zu identifizieren und diesen jeweils eine Tabelle zu spendieren. Wen oder was haben wir also da? 1.) den Nutzer 2.) die Nachricht (3.)die Sitzung 4.)das Rechtelevel 5.)den Briefkasten(falls mehr als einer reinschauen duerfen soll)...)
Diese Tabellen sind dann noch moeglichst naturgetrue zu verknuepfen (wie auch bereits von einigen Forumsteilnehmern skizziert) und das Rundumhappypaket steht bereit.
Gruss,
Lude
"ALDI-Bier ist guut."