Stefan Hett: XML und Mehrbenutzerproblematik

Beitrag lesen

Kurz gesagt:

Datenbanken können nicht eingesetzt werden. Deshalb liegt eine Realisierung über XML-Dateien nahe. Problem: Fehlende Mehrbenutzermöglichkeit von XML.

Spontan fallen mir jetzt 3 mögl. Lösungswege ein und wollte mich im Netz mal informieren, wie andere die Thematik angegangen sind. Leider ohne viel Erfolg (weder diverse Foren noch Googel spuckte was sinnvolles aus).

Wenn jmd mir ein paar Quellen geben könnte, die sich mit dem Thema beschäftigen wäre ich sehr dankbar.

----

lange Version:

Ein paar Statements zu diesen Lösungswegen würden mich sehr freuen (vor allem Probleme, die auftreten können und ich im Moment noch nicht sehe):

Noch einige Infos:
Es wird davon ausgegangen, dass auf einem Server eine große XML-Datei liegt, in der sämtliche Daten gespeichert sind. Tägl. finden < 100 Zugriffe darauf statt (primär Lesezugriffe) - also wenige Kollissionen.
Die Performance ist vorerst nur zweitrangig.

Lösungsweg 1:
Auf dem Server wird ein Daemon (Service) installiert.
Lese-/Schreibzugriffe finden über diesen Service statt.
Szenario 1:
User 1 liest Datensatz x
User 2 liest Datensatz x
User 2 speichert geänderten Datensatz x
User 1 wird über die Änderungen am Datensatz informiert
Problem: Lösung über Service nur ungern, da oft nur "DAU"-Anwender da sind.

Lösungsweg 2:
Überprüfung findet Clientseitig statt.
Szenario 1:

  • User 1 liest Datensatz x - Client setzt Flag: Datensatz wird von User 1 gelesen
  • User 2 liest Datensatz x - Client setzt Flag: Datensatz wird von User 2 gelesen
  • User 2 will Datensatz x speichern - Client setzt Flag: Möchte gerne Datensatz speichern
  • User 1 will Datensatz x speichern - Client sieht Flag von User 2: Möchte gerne Datensatz speichern - setzt Flag: User 2 darf Datensatz speichern
  • User 2 sieht granted-Flag von User 1, speichert Daten und löscht Flag
  • User 1 sieht das User 2 fertig ist und sonst keiner mehr liest und speichert Daten
    Problem: Clients müssen andauernd überprüfen, ob die von ihnen gelesenen Datensätze einen Schreibwunsch haben.
    Einfachere Lösungen ohne dieses geflagge können zu Problemen führen afair ist das die gleiche Lösung die beim Linux-Kernel eingesetzt wird um das Problem des gleichzeitigen Zugriffes auf Ressourcen zu lösen. Hoffe das war so richtig übertragen, nicht dass da jetzt noch ein Prob auftreten kann. :)

Lösungsweg 3:
Schreibzugriffe führen nicht zum Überschreiben alter Datensätze sondern nur die Änderungen werden "geloggt".
Problem: Sehr kompliziert alle mögl. Fälle (die durch gleichzeitiges Speichern entstehen können) zu implementieren und die XML-Datei wird unnötig groß.