Persistenz

Objekte dauerhaft speichern

In vielen Systemen ist es notwendig, dass Objekte unabhängig von der Laufzeit des Programms dauerhaft (persistent) gespeichert werden. Daraus ergeben sich, unabhängig von der Art der Speicherung, zusätzliche Anforderungen und Möglichkeiten.

  • Objekte sind außerhalb des Programmspeichers → Explizites Speichern und Löschen notwendig
    • Unabhängige Existenz der Objekte
      • im Programm-Speicher
      • in der Datenbank
      • eindeutige Identifikation der Objekte notwendig (ObjectId)
    • Objekte zwischen Datenbank und Programm-Speicher bewegen (CRUD)
      • Explizites Laden (DB → Memory)
        Viele Programme greifen gleichzeitig auf ein Speichermedium mit den Objekten zu
        Konkurrierende Zugriffe auf persistente Objekte
      • Speichern (Memory → DB)
      • Löschen (in DB)
  • Viele Programme können gleichzeitig auf den Objektspeicher zugreifen → Konkurrierender Zugriff auf persistente Objekte
    • Ergibt zusätzliche Anforderungen
      • Konsistenz
      • Performanz
      • Sicherheit
    • Implementierung von Transaktionen und Locking
      • Atomare Lese/Schreiboperationen sicherstellen → Transaktionen sichern die Konsistenz (ACID)
      • Konkurrierende Zugriffe verhindern → Locking reserviert exklusiven Zugriff auf Objekte
  • Persistente Speicherung in Datenbanken → mächtige Suchfunktionen stehen zur Verfügung