2 Stimmen

Wie speichert man Benutzerprotokolle auf einem großen Server?

Aus meiner Erfahrung kann ich folgendes berichten.

Ich speichere derzeit Benutzer und statistische Klassen in der MongoDb und alles funktioniert gut.

Aber wie speichere ich das Protokoll, das jeder Benutzer erstellt?

Ich dachte an die Verwendung des LogBack SiftingAppender und delegieren Sie die Protokollinformationen
zur Trennung von MongoDb Collections . Wie jede MongoDb Collection die ID des Benutzers haben.
Auf diese Weise muss ich keine erweiterten Mapreduce-Abfragen erstellen, da die Protokolle ordentlich gestapelt sind.

Oder verwenden Sie SiftingAppender mit einem FileAppender, damit jeder Benutzer eine eigene Protokolldatei hat.

Ich gibt es ein Problem mit diesem, wenn die MongoDB eine Million Log-Sammlungen haben, die jeweils mit der User-ID benannt (ist es überhaupt möglich btw)

Wenn alles in der MongoDb gespeichert ist, macht die MongoDb Master-Slave-Replikation es einfach, wenn ein Master-Knoten stirbt.

Was ist mit dem FileAppender-Ansatz? Es scheint, als gäbe es eine ganze Menge von Protokolldateien zu verwalten. Man könnte sie vielleicht in Ordnern nach dem Alphabet speichern. Ordner A für Benutzer/Kennungen, deren Namen/Kennungen mit A beginnen.

Welche anderen Möglichkeiten gibt es, damit dies funktioniert?

2voto

Bei Ihrer Frage nach 1 Mio. Sammlungen ist die Standard-Namespace-Datei für eine Datenbank 16 MB groß, was etwa 24000 Namespaces ermöglicht (12000 Sammlungen + ihre _id-Indizes). Mehr Infos auf dieser Website

Und Sie können die maximale .ns (Namespace)-Dateigröße mit der Option --nssize auf 2GB setzen, was wahrscheinlich 3072000 Namespaces erlaubt.

1voto

j_mcnally Punkte 6844

Verwenden Sie eingebettete Dokumente und haben Sie ein Dokument für jeden Benutzer mit einer Reihe von eingebetteten Dokumenten, die Protokolldateien enthalten. Wenn die Sammlungen groß werden, können Sie auch von Sharding profitieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X