9 Stimmen

Hinzufügen von Dauerhaftigkeit zu In-Memory-Datenstrukturen

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.

0voto

Jeff C Punkte 435

Jede Antwort auf Ihre Frage erfordert eine ähnliche Vorgehensweise wie bei einem ACID-Datenbanksystem. Ich würde also sagen, dass Sie am besten ein RDBMS verwenden, um den Zustand Ihrer Anwendung zu speichern, das immer dann aktualisiert wird, wenn Sie eine (Anwendungs-)Transaktion haben, die nicht verloren gehen darf.

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