Ich habe eine ConcurrentHashMap, die ID und Zeitstempel speichert, wenn diese ID aktualisiert wurde. Diese Daten müssen persistent sein, da der Neustart der Anwendung den vorherigen Zustand der Daten beim Herunterfahren kennen sollte. Ich bin derzeit Serialisierung der Karte in eine Datei beim Herunterfahren und Laden zurück, wenn die Anwendung neu gestartet wird.Serialize die Karte bei jeder Iteration
Ich kann jedoch voraussehen, dass die Serialisierung beim Herunterfahren fehlschlagen würde, wenn die Festplatte voll ist. Und das würde Datenverluste bedeuten, die nicht akzeptabel sind. Ich dachte an eine DB zu verwenden, um die Daten zu speichern, aber dann würde es Netzwerkgewicht bei jedem Update hinzufügen.
Das einzige, was mir gerade in den Sinn kommt, ist, die Karte bei jedem Update zu serialisieren. Dies würde sicherstellen, dass die meisten Daten auch bei einem unerwarteten Herunterfahren persistent sind.
Ich bin mir bewusst, dass dies eine schwere Operation ist und bin offen für alternative Lösungen.
Auch beachten Sie, diese Karte über 1200K Einträge aufnehmen kann ...
Vielen Dank im Voraus
Mit einem (lokalen) DB scheint sicherlich besser als Serialisierung 1200k Einträge bei jedem Schreiben. – Marvin
Der einfachste Weg wäre die Verwendung einer (lokalen) Datenbank. DBs führen ein Transaktionsprotokoll, um sicherzustellen, dass keine Daten verloren gehen, selbst wenn etwas schief geht. Das Serialisieren der Karte würde nur versuchen, diesen Mechanismus auf eine schlechte und kaputte Art zu imitieren. Natürlich müssen Sie von der Verwendung einer gleichzeitigen Karte zu einer Datenbank wechseln, aber das ist wahrscheinlich nur eine Verbesserung. – Kayaman
Statt die gesamte Karte bei jedem Update zu behalten, warum beharrst du nicht einfach die Updates? – Thomas