Doppelter Schreibzugriff verhindern

Hallo!
Ich arbeite in einem Verein, in dem mehrere Mitarbeiter mit dem Programm „Quickverein“ arbeiten. Dieses ist nicht Netzwerkfähig, darum habe ich den „Datenorder“(da sind die Mitgliedsdaten drin, an denen ständig gearbeitet wird) auf einen Server gelegt und bei jedem PC eingestellt, dass sie nicht mehr alle ihren eigenen „Datenorder“ haben, sondern diesen gemeinsamen „Datenorder“ auf dem Server nutzen sollen.

Schnell kam aber folgendes Problem auf: Alle können gleichzeitig das Programm starten und die Daten auslesen, sobald aber zwei Personen gleichzeitig etwas verändern und abspeichern, ist die gesamte Datenbank defekt (oder nur die eine datei auf die zwei Mal gleichzeitig zugegriffen wurde, aber das Programm lässt sich trotzdem nicht mehr starten).

Die Datenbank besteht aus vielen einzelnen Dateien und in jeder werden andere Infos gespeichert.

Nun zur Frage: Gibt es ein Programm oder irgendetwas, was das gleichzeitige Schreiben von mehreren PC’s auf diese Daten (oder das gleichzeitige Schreiben von mehreren PC’s auf EINE Datei) verhindert und nach dem Schreiben wieder freigibt?
Oder was besser wäre, den Schreibzugriff abfängt, buffert und nach dem ersten Schreibvorgang ausführt?

Falls mein Problem jemand versteht und eine völlig andere Lösung parat hat, nur raus damit :smile:

Für Hilfe wäre ich wirklich sehr sehr dankbar, da das Problem wirklich schwerwiegend ist.

MfG
David S.

Hallo David,

Nun zur Frage: Gibt es ein Programm oder irgendetwas, was das
gleichzeitige Schreiben von mehreren PC’s auf diese Daten
(oder das gleichzeitige Schreiben von mehreren PC’s auf EINE
Datei) verhindert und nach dem Schreiben wieder freigibt?

nein

Oder was besser wäre, den Schreibzugriff abfängt, buffert und
nach dem ersten Schreibvorgang ausführt?

nein

Falls mein Problem jemand versteht und eine völlig andere
Lösung parat hat, nur raus damit :smile:

kauf dir eine netzwerkfähige Vereinsverwaltung, oder lasse immer nur eine Person ans Programm.

Für Hilfe wäre ich wirklich sehr sehr dankbar, da das Problem
wirklich schwerwiegend ist.

überlege doch mal: warum gibt es von Programmen immer eine Einzelplatz und eine Netzwerkversion?
Das wäre doch nicht nötig, wenn man das von außen regeln könnte!?

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Vielfachen Schreibzugriff verhindern
Moin, David,

alle installierten Programme müssten ihre Schreibbefehle an eine übergeordnete Instanz schicken, die dann entscheidet, wer dran ist und wer zu warten hat. Genau das verbirgt sich hinter dem Wort „netzwerkfähig“. Der Aufwand ist beträchtlich, deshalb sind diese Versionen um einiges teurer als die Einzelplatzversionen.

Gruß Ralf

hallo

du vergisst was wesentliches, wenn es um netzwerkfähigkeit von programmen geht:

angenommen, benutzer a öffnet eine datei. wenn das programm davon ausgeht, dass nur ein benutzer die datei offen hat, kann es einen teil der datei im hauptspeicher cachen. auch kann es beim speichern einfach den inhalt des speichers wieder in die datei reinklatschen, da der inhalt der datei genau gleich sein muss wie zum zeitpunkt des einlesens.

was aber, wenn benutzer b dazwischen eine änderung an der datei vorgenommen hat?

benutzer a überschreibt also die änderungen von benutzer b, ohne dass das zuerst auffällt.

schlimm wird es, wenn die beiden benutzer teilweise auf unterschiedliche bereiche der datei, teilweise auf gemeinsam benutzte zugreifen. bei einem db-system wird es eine art data-dictionary geben bzw. eine art tabelle mit den referenzen auf die jeweils verwendeten datenblöcke. konkurierende zugriffe auf diese beide bereiche ohne schutz durch einen „verwalter“ führen unweigerlich zu inkonsitenzen und meist auch zur zerstörung der datei.

sowas zu lösen erfordert kräftig hirnschmalz und bei weitem mehr aufwand. für einzelplatzlösungen zahlt sich dieser aufwand nicht aus, und da er das programm unweigerlich langsamer macht, wird das einfach weggelassen. daher sind diese programme auch bei weitem billiger.

sobald mehr als eine person mit der anwendung GLEICHZEITIG arbeiten soll, brauchst du eine intelligente datenverwaltung im hintergrund. am besten mit einem db-server - es geht aber auch anders (siehe ms access). das erhöht die komplexität der software um ein vielfaches und auch den programmieraufwand. du brauchst ja auch eine art benutzerverwaltung, ev. sogar mit zugriffsrechten und so. klar, dass so eine software locker mal das doppelte und noch mehr kostet.

lg
erwin

Hilft Dir vielleicht etwas in Richtung SVN
http://de.wikipedia.org/wiki/Subversion_(Software)
weiter?