Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Auslagerungsdatei pagefile.sys als Zwischenspeicher nutzen

  Alt 19. Feb 2015, 02:22
Vielleicht war das auch nur eine Beschreibung von Memory Mapped Files. Denn da wäre das genau so wie beschrieben, mit dem Unterschied, dass es nicht die PageFile ist sondern jede X-beliebige Datei.
Würde ich auch vermuten. Um tatsächlich nach dem Absturz konsistente Daten zu haben braucht etwas mehr Aufwand (-> Transaktionen), aber im Prinzip ist das gut möglich.
Das mit den konsistenten Daten ist kein Problem und eine (Datenbank-)Transaktion pfuscht mir da auch nicht rein, im Gegenteil, die sorgt eben genau für die Konsistenz auch in diesem Fall.

Es gibt einfach zwei Arten von Transaktionen:
  1. Datenbank-Transaktion
  2. Business-Transaktion
(siehe Martin Fowler - Pessimistic Offline Lock oder Martin Fowler - Optimistic Offline Lock)

Der Zaubertrick ist jetzt eine Sicherung jedes Schritts der Business-Transaktion in einer Datei (wie auch immer geartet). Bei einem Absturz kann dann die Business-Transaktion daraus einfach wiederhergestellt werden. Zum Abschluss der Business-Transaktion wird natürlich der Datenbank-Server benötigt. Die Business-Transaktion spult nun alles an den DB-Server (in einer DB-Transaktion) rüber. Ist das erfolgreich abgeschlossen worden, wird auch die Business-Transaktion abgeschlossen.

Bricht jetzt die Verbindung zum DB-Server zusammen, dann ist einfach die Business-Transaktion noch offen. Der DB-Server wird nach einem Timeout einfach die Session und damit auch die DB-Transaktion killen und es ist nichts passiert. Bei der nächsten Verbindung zur DB wird das ganze Spiel wiederholt.

Diese Datei mit der Business-Transaktion kann man auch gut und gerne als Auslagerungsdatei bezeichnen, und schon wissen wir woher dieser (Aber)glaube mit der pagefile.sys kommt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat