Ich muss kontinuierlichen Block der variablen Größe 16 ... 128 MB zu einer Datei ohne Gefahr setzen, Dateistruktur in inkonsistentem Zustand (im Falle eines Stromausfalls oder Prozess Tod) zu verlassen.Wie schreibt man 128 MB atomar in eine Datei?
Durch den konsistenten Zustand der Datei meine ich die Garantie, dass die alten Daten verfügbar sind und jeder Speicherplatz, der von fehlgeschlagenen Schreibvorgängen verbraucht wird, wiederverwendet werden kann. Mit anderen Worten, jedes Teil der Datei muss zu irgendeinem Zeitpunkt zwischen den Kategorien "gute Daten" und "Müll" unterschieden werden können, ungeachtet irgendwelcher Software-Schreibfehler (wir gehen davon aus, dass die Platteneinheit in Ordnung ist).
Welche einfachste Datenstruktur in der Datei und welchen Algorithmus könnte man anbieten?
In Verbindung stehende Frage: wie ein DBMS (diejenigen, die auf Dateisystem (MySQL InnoDB, MongoDB, Redis usw.) arbeiten, nicht jene oben auf roher HDD (Oracle)), die mit den ähnlichen Problemen beschäftigen?
Dies ist abhängig vom Betriebssystem und/oder der zugrunde liegenden Dateisystem: und Sie können eine Antwort am Ende mit, die einfach ist „Sie können nicht“, oder „es ist nicht einfach“ – inetknght
Schreiben Sie es auf eine temporäre Datei und benennen Sie es an das Ende, um die vorherige Datei zu überschreiben. –
Alle [Journaling-Dateisysteme] (https://en.wikipedia.org/wiki/Journaling_file_system) haben diese Funktion eingebaut. Sie müssen nichts tun, wenn Sie ein Journaling-Dateisystem verwenden. – IInspectable