So funktioniert In Memory
Beim Studium der Dokumentationen zeigt sich, dass sämtliche In-Memory-Datenbanken im Grunde auf ähnlichen Prinzipien basieren. Vor allem bei komplexeren Produkten wie TimesTen oder SolidDB sind viele Gemeinsamkeiten festzustellen.
-
Datenhaltung: Beim Starten der Datenbank lädt das System den gesamten Datenbestand von der Festplatte in den Speicher, damit bei laufendem Betrieb keine Daten nachgeladen werden müssen.
-
Checkpoint Files/Snapshot Images: Geänderte Daten werden in regelmäßigen Abständen mit dem persistenten Speicher (Festplatte) abgeglichen.
-
Transaction Logs: Zwischen den einzelnen Checkpoint-Vorgängen werden laufende Änderungen in Transaction Logs geschrieben, um nach einem Crash ein Rollforward machen zu können.
-
AKID-Prinzip: Wie herkömmliche RDBMS können auch In-Memory-Datenbanken sämtliche Daten nach dem AKID-Prinzip (Atomarität, Konsistenz, Isoliertheit und Dauerhaftigkeit) verarbeiten.
-
Hochverfügbarkeit: In-Memory-Produkte wie IBM SolidDB oder Oracle TimesTen bieten Hochverfügbarkeit in Form von Datenbankreplikation an. Bei einem unerwarteten Crash kann ein Failover auf die verbleibende Instanz erfolgen.
-
Direct Connect: Die Applikation hat die Möglichkeit, die In-Memory-Datenbank direkt in ihren eigenen Adressbereich zu laden, um jeglichen Overhead - wie etwa sämtliche Netzprozesse - zu vermeiden.
Der größte Unterschied zwischen einem Disk-basierenden und einem In-Memory-System besteht in der Datenhaltung. Ein Disk-basiertes RDBMS lädt erst bei Bedarf die erforderlichen "Data Pages" von der Disk in den "Buffer Pool" nach, während etwa TimesTen beim Starten der Datenbank alle Daten aus dem Checkpoint-File in den Speicher liest. Dadurch vereinfachen sich die Zugriffsalgorithmen bei In-Memory-Systemen entscheidend, was in der Praxis zu einer besseren Anwendungs-Performance führt. Der "Query Optimizer" von TimesTen kann zudem direkt auf alle Daten im Hauptspeicher zugreifen, ohne zusätzlichen I/O-Traffic zu erzeugen.