Welche gängigen Techniken können Sie anwenden, um Ihre In-Memory-Datenstrukturen haltbar zu machen (d. h., wenn der Prozess abstürzt, können Sie alle zuvor ausgeführten Operationen auf dieser Datenstruktur beibehalten)?
Wenn es sich bei meiner Datenstruktur nur um eine Liste von Tupeln handelt, dann würde ich sie einfach in einer SQL-DB speichern, und das würde mir kostenlos Haltbarkeit geben. Was aber, wenn meine Datenstruktur ein Graph oder ein Baum ist?
Das Einzige, was mir einfällt, ist, alle Operationen explizit auf der Festplatte zu protokollieren (Append-Only-Protokoll) und im Falle eines Absturzes das Protokoll erneut abzuspielen, um den vorherigen Zustand zu erhalten. Wenn das Protokoll zu groß wird, gibt es einen Verdichtungsschritt. Ich nehme an, dass eine Datenbank-Engine dies intern tut, um die Haltbarkeit zu gewährleisten (Checkpointing nennt sich dieser Prozess)?
Beachten Sie übrigens, dass dies kein Szenario ist, bei dem der gesamte Datensatz nicht in den Speicher passt.