Hi,
Datenbanken können nicht eingesetzt werden. Deshalb liegt eine Realisierung über XML-Dateien nahe. Problem: Fehlende Mehrbenutzermöglichkeit von XML.
XML ist ein Datenformat. Es hat keinerlei Probleme mit unendlich vielen unendlich diversen Zugriffen in unendlich kurzer Zeit über unendlich lange Zeiträume. Ich kann daher nur raten: Redest Du von parallelen _Datei_zugriffen?
Spontan fallen mir jetzt 3 mögl. Lösungswege ein
Vielleicht solltest Du erst mal das Problem nennen, bevor Du Dich an Lösungen versuchst. Dateizugriffe an sich lassen sich leicht regulieren.
Es wird davon ausgegangen, dass auf einem Server
Welcher Art?
Tägl. finden < 100 Zugriffe darauf statt (primär Lesezugriffe) - also wenige Kollissionen.
Lesezugriffe können pro Sekunde zig Tausend stattfinden, das ist problemfrei.
User 2 speichert geänderten Datensatz x
User 1 wird über die Änderungen am Datensatz informiert´
Mit welchem Protokoll arbeitest Du? Warum ist eine Benachrichtigung des Clients wichtig?
Überprüfung findet Clientseitig statt.
Bei serverseitig gespeicherten Daten ist das, nun, suboptimal.
- User 1 liest Datensatz x - Client setzt Flag: Datensatz wird von User 1 gelesen
Der Client braucht sich kein Flag zu setzen, er weiß selbst, was er macht. Oder meinst Du "Server setzt Flag"?
- User 1 will Datensatz x speichern - Client sieht Flag von User 2: Möchte gerne Datensatz speichern - setzt Flag: User 2 darf Datensatz speichern
Server stellt fest, dass Daten gespeichert werden, die sich seit dem vom Client mitgesandten Zeitpunkt/der ID des Datenlesens verändert haben, und gibt eine Warnung/Fehlermeldung zurück.
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ß.
Lösung: Ein System einsetzen, welches dem Versionsmanagement dient, z.B. CVS oder SVN.
Cheatah
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes