Netzaufbau
Anando Eger
anando at aneg-dv.de
Fr Feb 16 10:41:36 CET 2001
Hallo Herr Fischer,
Sie fragten auf meine Aussage hin
> >UNIX/LINUX-Systeme sind als Dateiserver für allegro/a99 nicht geeignet,
> >als Basissystem für AVANTI dagegen sehr gut.
>
> Koennen sie uns bitte noch etwas zu diesem Thema wissen lassen, da diese
> Konfiguration aus Kostengruenden von etlichen Admins durchaus angestrebt /
> realisiert wird.
Ja, das ist für mich als LINUX-Fan auch sehr betrüblich. Ich war zuerst auch davon
ausgegangen, dass das SAMBA-System, das ja recht erfolgreich einen WinNT-PC
nachbildet, auch für allegro-Dateien geeignet sein müsste. Nachdem ich in der
Praxis mit einer derartigen Netzwerkinstallation Schiffbruch erlitten und sehr viel
Zeit (fehl-)investiert hatte, habe ich mich mit dem Dateizugriffs- und Locking-Mechanismen
unter Allegro beschäftigt. Ergebnis: Ich verstehe nicht, wie das Datei-Locking unter
DOS/Win-Umgebungen überhaupt funktionieren kann, Fehler in der Praxis ließen sich
jedoch durch mich nie reproduzieren - unter LINUX/SAMBA als auch mit echtem
NFS-Clienten dagegen ja. Ich denke, dass die zeitlichen Abläufe im DOS oder Windows
zufällig günstig ausfallen.
Das Thema wurde in der Liste ja unter dem Betreff "Vermischte Datensätzte" schon
einmal andiskutiert.
Praktische Auswirkung: Wenn Sie ein Allegro-Dateisystem auf einem LINUX-Server
installieren und von mehreren DOS/Win-Clienten gleichzeitig zugreifen (Daten einmischen,
editieren, Ausleihen/Rückbuchen) entsteht signifikant häufig Datenmüll. Konkret waren
das in einer öffentlichen Bibliothek mit Ausleihe ca. 10 defekte (vermischte) Datensätze bei
ca. 500 ... 1000 Buchungen/Rückbuchungen pro Tag, wobei gleichzeitig von anderen PC's
aus Daten erfasst wurden.
Zitate aus alten Mails:
---------- Herr Berger: -----------------------------------------------------------
B. Eversberg wrote:
> > Aeltere Versionen von NFS unterstuetzen kein File-Locking,
> > aeltere (=alle?) allegro-X-Programme daher wohl auch nicht.
> > Damit ist es dann theoretisch unmoeglich ein Programm zu
> > haben, das im Netzwerkbetrieb korrekt funktioniert.
>
> Dem hatten wir eigentlich vorgebeugt mit der Methodik, uns nicht auf
> das betriebssystemeigene Locking zu verlassen, sondern mit einem
> direkt in die TBL bzw. in den Datensatz geschriebenen Byte ein Flag
> zu setzen. Nur in Situationen, wo zwei Personen wirklich im Abstand
> von Sekundenbruchteilen speichern, koennte diese Sperre noch
> durchbrochen werden (sog. "race condition"). bei NT und bei Novell
> allerdings nicht, weil da auch noch ein normales File-Locking
> zusaetzlich gemacht wird, etwa seit V15a.
So ist es auch richtig, alle Sicherheitsmechanismen
greifen Hand in Hand:
Makroskopisch:
- "Signalfile" cat.sgf: Kein Bearbeiter darf mehr
mit der Bearbeitung der Datenbank beginnen
(wg anstehender Reorganisation etc.), noch aktive
Bearbeiter werden mit dem Telefon aus der
Datenbank herauskomplimentiert (Termin fuer
automatische Telefonfunktion von a99?)
- Datensaetze in Bearbeitung sind individuell
gesperrt. Das schuetzt vor gleichzeitiger
Bearbeitung durch andere, auch waehrend
der Mittagspause (obwohl man hier erziehend
auf die Kollegen einwirken sollte, die
Bearbeitungszeiten auf ein Minimum zu
reduzieren).
Stuerzt der Rechner waehrend der Bearbeitung
ab (Stromausfall, Fenster zugeklickt, Fenster
in der Taskleiste verbuddelt, nach Hause gegangen),
so ist dieser Satz fuer immer gesperrt, und kann
durch den Administrator bzw. Benutzer, die die
entsprechende Stelle im Handbuch gelesen haben,
durch eine spezielle Tastenkombination "entsperrt"
werden. Vorher ist allerdings zu klaeren, dass
dieser Satz wirklich nicht mehr in Bearbeitung
ist, sonst koennen Inkonsistenzen entstehen
(das ist hoffentlich klar).
Mikroskopisch:
- Beim Abspeichern eines neuen oder modifizierten
Datensatzes wird die .TBL-Datei durch allegro
"gesperrt", damit exklusiver Schreibzugriff
auf .TBL-, und Indexdatei sowie das *aktuelle*
Ende der .LOG- und ggfls. der betroffenen
.cLD-Datei (umspeichern!) gewaehrleistet ist.
Je nach Anzahl der auszutragenden und einzumischenden
Schluessel und Langsamkeit des Netzes / Groesse
der Datenbank / Anzahl der Leersaetze bei "//"
muss diese Exklusivitaet fuer einige hundert
Millisekunden bis zu mehreren Sekunden aufrecht
erhalten werden, bis das Speichern halt abgeschlossen
ist.
Versuchen andere Arbeitsplaetze waehrend dieser
Zeit, ebenfalls zu speichern, so erscheint
unten auf dem Schirm ".TBL-Datei gesperrt",
und es wird 60 Sekunden lang automatisch
versucht, ob das Speichern moeglich geworden
ist. Dies ist ueppig dimensioniert, nur bei
globalen Ersetzungen, globalen Manipulationen,
Turbo-Updates etc. kann es dazu kommen, dass
hier der urspruengliche Arbeitsplatz mit vielen
Schreiboperationen in unmittelbarer Folge
die Datenbank fuer andere Bearbeiter "dicht
macht".
Stuerzt das urspruengliche PRESTO waehrend
des Speicherns ab (Stromausfall, Netzwerkaussetzer,
korrupte Datensetze, pathologisch lange
Datensaetze, Fehler in der Parametrierung,
Bugs in PRESTO, ...), so ist die Satztabelle
dann "auf ewig" gesperrt. Der Systemverwalter
muss in diesem Fall die Situation klaeren und
entscheiden, ob der die Satztabelle manuell
freigibt: Ueber den entsprechenden Menupunkt
im Cockpit bzw. mittels Sniffer (aeltere Cockpit-
Versionen koennen in Microsoft-Netzwerken die .TBL
nicht freigeben, wenn die Datenbank in Benutzung
ist, die neueren Cockpit-Versionen sowie alle
Versionen von SNIFFER koennen es).
"Nanoskopisch":
- In Mutlti-Tasking Umgebungen (Windows, jedes
Netzwerk) sind die Zustaends*uebergaenge* bei
den oben genannten Schutzmechanismen kritisch.
Es ist beweisbar, dass hier 100%ige Sicherheit
nur dann gegeben ist, wenn das zugrundeliegende
Betriebssystem hier Mechanismen bereitstellt.
Am verbreitetsten und dem Problem hier auch
am angemessensten ist das File oder Record
locking, das hier etwa gewaehrleistet, dass
es nie zwei PRESTOs gleichzeitig die Satztabelle
fuer sich sperren. Wegen der langen Dauer der
Schreiboperationen waere es kein guter Stil,
das Sperren der Satztabelle oder gar das der
einzelnen Datensaetze ueber das Betriebssystem-
Locking zu realisieren: Das Betriebssystem
stellt nur die sogenannten atomaren Operationen
zur Verfuegung, die allegro (und alle Anwendungen,
die auf gemeinsame Dateien zugreifen) fuer den
Aufbau eigener Sicherheitsmechanismen unbedingt
benoetigt.
a99 uebrigens benutzt, da hier ja tendenziell
hunderte von Saetzen gleichzeitig bearbeitet werden
und Sitzungen "aufbewahrt" werden koennen, auf der
makroskopischen Ebene nicht das Sperren von Datensaetzen,
sondern den Vergleich der Aenderungsdaten als
Anhaltspunkt dafuer, dass keine Gleichzeitige
Bearbeitung eines Satzes stattgefunden hat. Dies
ist eine Heuristik und einige Sachen sollten
beherzigt werden:
- Man sollte bearbeitete Saetze moeglichst sofort
abspeichern (sonst sieht man die Bearbeitungen
ja auch nicht im Index)
- Man sollte bearbeitete und nicht gespeicherte
Saetze nach Moeglichkeit nicht ueber die aktuelle
Sitzung hinaus aufbewahren
- Man sollte die Datenbank moeglichst nicht
reorganisieren oder entlueften, wenn irgendein
Bearbeiter noch nichtgespeicherte, bearbeitete
Saetze hortet.
Derzeit ist vermutlich noch niemandem (hoechstens
Frau Tews?) klar, wie man als Datenbankadministrator
hier steuernd und organistatorisch eingreifen kann.
Gerade beim Neueinstieg auf a99 stelle ich mir
aber vor, dass es auch fuer die Bearbeiter angenehmer
ist, in der .ini-Datei fuer a99 die Einstellungen
so zu setzen, dass das "Elefantengedaechtnis" von
a99 etwas zurueckgedraengt wird und ein Neustart
von a99 auch moeglichst eine "frische" Sitzung
praesentiert.
viele Gruesse
Thomas Berger
----------- Ende Zitat --------------------------------------------------------------
Ich hatte dann eine Vermutung über das verwendete Locking-Verfahren
geäußert, die von Herrn Eversberg korrigiert und dann von Herrn Berger
meiner Meinung nach recht treffend kommentiert wurde:
---------- Zitat Herr Berger: ------------------------------------------------------
Lieber Herr Eger, lieber Herr Eversberg,
Zu Herrn Eversbergs Anmerkungen noch einige von mir.
> Die Vermutungen von Herrn Eger sind nicht ganz zutreffend.
> Ich habe angemerkt, wo es nicht stimmt:
>
> A -------------------------------------------------------
> Nutzer:
> - Satz zum Editieren oeffnen (z.B. presto "E")
> System:
> - .TBL lock NEIN
> - neu einlesen
> - wenn Satz frei, Sperrkennzeichen setzen
> sonst Meldung: Satz gesperrt
> - .TBL unlock NEIN
>
> Hier waere das Locking ueberfluessig. Es wird ja keine kritische
> Schreibaktion durchgefuehrt. Die Satzsperre wird von a99 und
> avanti nicht gesetzt, nur von den DOS-Programmen
Das Sperren eines Satzes ist eine ueberaus kritische
Schreiboperation. Die Wahrscheinlichkeit, dass zwei
Personen denselben Datensatz in etwa gleichzeitig
bearbeiten wollen, ist natuerlich gering, so dass
die Wahrscheinlichkeit von "kritisch gleichzeitig"
evtl. wirklich zu vernachlaessigen ist. (Dies hier
nicht zu verwechseln mit dem Szenario "irgendjemand
schreibt irgendwo", was ja durchaus haeufiger ist).
Also: Locking ist mitnichten ueberfluessig, man
kann aber vermutlich verantworten, dass es nicht
stattfindet.
JEDOCH: Denkt man an Bestellnummerngeneratoren etc.
von ORDER, so sieht man, dass es in einzelnen
Anwendungen durchaus Datensaetze geben kann, die
staendig aktualisiert werden, hier muss also
(hoffentlich bereits in ORDER eingebaut) mehr
Sorgfalt walten. Typisch hier ist aber, dass
der Satz sofort nach dem Lesen automatisch
modifziert und weggeschrieben wird, evtl. ist
hier die Satzsperre ueberfluessig, weil es aus
allegro-Sicht ein "aufgebesserter" Schreibvorgang
ist. (Das ist nicht in ORDER eingebaut, das weiss
ich: es gibt haeufig Aerger mit gesperrten
Bestellnummerngeneratorsaetzen :-(
...
-------------- Ende Zitat --------------------------------------------
Ich habe als Programmierer von Echtzeitsystemen früh gelernt:
jeder Fall ist zu berücksichtigen, auch der unwarscheinlichste.
Wir haben es bei den heutigen, hochkomplexen Systemen
immer mit Warscheinlichkeiten von Ereignissen zu tun, die sich mit der
Weiterentwicklung der Soft- und Hardware in ihrem zahlenmäßigen
Wert auch schnell mal drastisch ändern können....
Also: "unwarscheinlich" oder "kommt nur äußerst selten vor" heißt:
ES KOMMT VOR!!!!
Abschließend: Wenn ich die Meinung vertrete, dass ein Linux/UNIX-Server
nicht für Allegro geeignet ist, meine ich damit konkret, daß unter diesem
System DIE FEHLERHÄUFIGKEIT einer Allegro-Anwendung derzeit
für die Praxis ZU GROSS ist.
Mir liegt das Thema am Herzen, weil ich quasi jeden Tag um die Stabilität
von Allegro kämpfe - deshalb die ausführliche Antwort.
Viele Grüße
Anando Eger
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : anando.vcf
Dateityp : text/x-vcard
Dateigröße : 296 bytes
Beschreibung: Visitenkarte f?r Anando Eger
URL : <http://bibservices.biblio.etc.tu-bs.de/pipermail/allegro/attachments/20010216/0e107777/attachment.vcf>
Mehr Informationen über die Mailingliste Allegro