Ich habe eine Java-Webanwendung erhalten, die einige Echtzeitereignisse empfängt und sie an die Benutzeroberflächenebene weiterleitet. Ich möchte alle wahrgenommenen Ereignisse protokollieren und da die Informationsmenge sehr groß sein wird, bevorzuge ich die Verwendung einer NoSQL-Datenbank.Bewährte Verfahren zum Protokollieren von Echtzeitdaten in eine NoSQL-DB
Ich habe für diesen Zweck einen Mongodb eingerichtet, der ein Dokument pro Ereignis einfügt. Das Problem ist, dass dieser Ansatz (ein Festplattenzugriff pro Ereignis) den gesamten Prozess dramatisch verlangsamt.
Also, welche Ansätze kann ich in dieser Situation nehmen? Welche Optionen sind dafür in mongodb verfügbar (z. B. Masseneinfügung, asynchrone Einfügung, Zwischenspeicherung, ...)? würde der Wechsel zu einer anderen NoSQL db-Implementierung einen Unterschied machen? Was sind die besten Praktiken hier?
Es wäre gut, verkürzt sich einige weitere Details zu den erwarteten Leistungsbeschränkungen zu kennen. Wie groß ist der erwartete Durchsatz? 100/s? 10k/s? 1M/s? Durchschnittliche und mögliche Spitzen? Was ist die ungefähre Größe Ihrer Ereignisse bei der Serialisierung? 100 Bytes? 1 Megabyte? Müssen Sie Ihre vergangenen Ereignisse nur selten überprüfen, indem Sie sie möglicherweise für ein gegebenes Zeitfenster erneut wiedergeben, oder müssen Sie Ad-hoc-Abfragen zu ihnen durchführen? Wie lange brauchen Sie, um sie zu speichern - wird diese Datenbank zu Daten mit Jahren anwachsen, oder können Sie irgendeine Art von Säuberung/Archivierung zu Sekundärspeicher jede Woche oder so machen? –