Tach!
Ich würde dedlfix recht geben, dass es leichter mit einer Datenbank ist, da diese ja mit Standard Abfrage-Methoden daherkommt und dir das grundsätzliche Locking abnimmt.
Wie denn genau? Ein praktisches Beispiel würde mich erhellen?
Nehmen wir Inserts. Du brauchst bei der Datenbank kein Locking, um das anfangs dargestellte 4-Punkte-Szenario abzusichern. Du musst keine Sorge haben, dass jemand an die Stelle schreibt, an die du auch gerade schreiben wolltest oder deine Änderungen an der Datei überschreibt.
Update ist etwas komplexer, weil der Vorgang sich auf mehrere Requests aufteilt. Da hilft aber kein File-Lock sondern du muss anhand des Datensatzinhaltes feststellen, ob du schreiben möchtest oder nicht, weil sich der Timestamp oder die RowVersion zwischenzeitlich geändert hat. Du machst dann File-Locking zusätzlich zum Concurrency Locking aus Datensicht. Mit der Datenbank hast du zumindest bei Optimistic Locking nur ein Update WHERE RowVersion=alter_wert. Und während in Villarriba …
Und dann haben wir noch nicht mal über Transkationen gesprochen, um komplexe Szenarien mit Beteiligung von mehrern Tabellen so anzusichern, dass bei einem eventuellen Abbruch keine Inkonsistenzen zurückbleiben.
dedlfix.