Avanti-W: Registereintraege verschwinden nicht
Sibylle Koczian
Sibylle.Koczian at bibliothek.uni-augsburg.de
Mo Jun 10 09:15:15 CEST 2002
Lieber Herr Eversberg,
At 14:20 07.06.02 +0200, you wrote:
>Denn: avanti muss, bevor der Satz bearbeitet wird, ihn ausdruecklich sperren.
>Das macht "set lock" und das macht auch "get edit". Dabei werden die
>derzeit gueltigen Schluessel ermittelt! Nur dann koennen beim Speichern
>die nicht mehr gueltigen erkannt und geloescht werden.
Aha! Dann ist aber dieser Text ein bisschen irrefuehrend (aus der
Online-Hilfe fuer Avanti, zu haben von "put" aus beim Stichwort
Synchronisation):
"Synchronisation der Schreibvorgänge:
Beim Ändern von Datensätzen im Netzwerk entscheidet der Synchronisation
aller gleichzeitigen Schreibvorgänge über die Konformität der Datenbank.
Avanti bietet hier zwei Arbeitsweisen an:
1. Der Server kann zwar Sätze, die bearbeitet werden sollen, expliziet
sperren (get edit) und nach Abspeicherung wieder freigeben. In einem
Client/Server-Betrieb ist das aber nicht unbedingt die beste Lösung. Es ist
ja ganz ungewiß, ob ein Satz, der einem Client zum Ändern übergeben wurde,
überhaupt jemals zurück kommt! (Unter PRESTO ist das kein Problem, denn der
Editor ist ja ins Programm eingebaut, so daß es immer genau weiß, wann der
Satz wieder freigegeben werden kann.)
2. Zusätzlich wurde für den Server noch ein interner Mechanismus
realisiert. Dieser beruht auf dem Änderungs-Zeitstempel, der mit dem Befehl
ce in der CFG definiert wird. Das Änderungsdatum muß mit dem Parameter
D17 (=Länge 17 Zeichen) in der CFG um die Uhrzeit erweitert werden. Die
Überprüfung erfolgt automatisch:
· Der Server übergibt einen Satz an einen Client zum Bearbeiten,
sperrt den Satz aber nicht.
· Das Clientprogramm darf dem Nutzer alle Änderungen erlauben, bis
auf die Kategorie mit dem Änderungsdatum.
· Der Satz wird zurückgeschickt, und zwar mit unverändertem
Änderungszeitstempel.
· Der Server vergleicht diesen mit dem im Originalsatz enthaltenen.
Ist der Zeitstempel im geänderten Satz nicht älter als im Originalsatz,
darf gespeichert werden. Ist dagegen die Zeit im Originalsatz jünger, heißt
dies, daß inzwischen jemand anders den Satz geändert hat - er war ja nicht
gesperrt! Dann wird der Änderungsantrag zurückgewiesen, der Client darüber
informiert ("Sorry, record nnn was changed by somebody else"). Erst beim
Abspeichern aktualisiert der Server den Zeitstempel. Gesperrt wird der Satz
nur während dieser Vergleichsaktion, damit nicht etwa ein gleichzeitig
zugreifendes PRESTO sich in dem Moment den Satz greift und ihn hinterher
mit anderen Änderungen zurückspeichert."
Ich habe das immer so interpretiert, als sei "get edit" nicht mehr noetig.
Und dass die Aenderungen ja gespeichert werden, hat mich in dieser falschen
Annahme bestaerkt (war urspruenglich ohne das "edit" ja nicht der Fall).
Darauf, dass ohne explizites Sperren im Job zwar Aenderungen gespeichert,
nicht aber Schluessel korrigiert werden, kommt man nicht so ohne weiteres
von allein.
Ich hoffe, eine Korrektur der Hilfe faellt unter M 1 (uebrigens ist die
Mail zu den M-Stufen und H-Faktoren widerspruechlich: oben faengt es mit M
1 an, unten ist von M 0 die Rede).
Vielen Dank und beste Gruesse, Koczian
Dr. Sibylle Koczian
Universitaetsbibliothek , Abt. Naturwiss.
D-86135 Augsburg
Tel.: (0821) 598-2400, Fax : (0821) 598-2410
e-mail : Sibylle.Koczian at Bibliothek.Uni-Augsburg.DE
Mehr Informationen über die Mailingliste Allegro