AW: [Allegro] Mysteriöse Variable

Fischer, Thomas fischer at sub.uni-goettingen.de
Mi Mai 2 12:28:04 CEST 2012


Hallo Herr Eversberg,

> > ich glaube, dass es hier ein ernsthaftes Problem gibt, dass nämlich 
> > die neueste Version von avanti/acon für den Windows-Server 
> nach einem 
> > find-Befehl für jeden Treffer die Indexparameterdatei aufruft.
> 
> Es ist ganz einfach so: Das Programm weiß nicht und kann 
> nicht irgendwie erschließen, was nach dem "find" geschehen 
> wird. Z.B. kann es sein, daß mit einem "insert ..." etwas 
> eingefügt und dann sofort der Satz mit "put" wieder 
> gespeichert wird. Neuerdings muß man nicht mehr, und das ist 
> den Notwendigkeiten und dem Trickreichtum des Locking zu 
> verdanken, erst nach dem  find  noch  "set lock" sagen, 
> wodurch u.a. das Berechnen der Schlüssel erfolgt, was 
> notwendig ist, damit nach der Änderung durch "insert ..." 
> feststellbar wird, ob und welche Schlüssel sich verändert 
> haben. Dies wird also abgefangen und damit ist auch eine 
> berüchtigte Falle entfallen, in die jeder hoffnungsfrohe 
> FLEX-Novize unweigerlich tappte.

Das heißt, dass bei einem find-Befehl mit etlichen hundert Treffern für jeden Datensatz zusätzlich die Indexparameterdatei durchlaufen wird, obwohl überhaupt nichts geändert werden soll? Das kann ich mir nicht als effizient vorstellen.

> Abhilfe brächte nur, weil wir auf die genannte Funktionsweise 
> nicht leichterdings wieder verzichten können, ein separater, 
> anders heißender "find"-Befehl, der das besagte 
> Schlüsselberechnen dann eben nicht durchführte. 

Da die neue Methode die vorherige teilweise völlig über den Haufen wirft (alle möglichen Variablen können auftauchen, die vorher nicht oder anders besetzt waren), wäre ich für einen anderen find-Befehl, wenn die Berechnungen *durchgeführt* werden. Denn in typischen Datenbanken dürfte der Normalfall das Suchen und der seltene Fall die Änderung sein.
Alternativ könnte auch ein Zusatzbefehl (wie "set lock") die Auswertung der Indexparameterdatei auslösen, es muss dabei ja nichts gesperrt werden, und "set lock" könnte sogar als Verweis auf den neuen Befehl benutzt werden (wie xport -> export).

> Der FLEXperte 
> hätte dies dann zu wissen und anzuwenden, um an dieser Stelle 
> nicht der Ihnen aufgefallenen Problematik aufzusitzen und ein 
> Quentchen mehr Performanz zu erzielen.
> 
> >
> > Dieses Verhalten stört einige meiner Skripte erheblich und sollte 
> > schnellstmöglich behoben werden (ich müsste sonst zu einer früheren 
> > Version avanti-Version zurückgehen...)

Ich kann und werde jedenfalls für meinen Hauptserver nicht auf die aktuelle acon-Version umsteigen, weil die Konsequenzen für mich derzeit ziemlich unvorhersehbar sind (bei einer Präsentation aus unserer HANS-Datenbank mit eigenen Parametern brachte das schon unangenehme Ergebnisse).
Ich würde davon auch allen KollegInnen abraten, die eigene und nicht die Braunschweiger Standardparameter nutzen.
 
>  > ... zweitens sollten die Namensräume von 
> Indexparameterdatei und  > Exportskript nicht zusammengeworfen werden.
> 
> Das war schon immer so (d.h. es wurde nichts, was vorher 
> getrennt gewesen wäre, nun zusammengeworfen), hat seine 
> Gründe und läßt sich nicht ändern. Es gibt auch Anwendungen, 
> die genau dieses Feature nutzen.

Das war mir nicht bewusst, und ich finde es problematisch. Selbst Herrn Bergers komplexe Nachweiskonstruktionen berücksichtigen meines Wissens in den Exportparametern nicht alle Variablen der Indexparameter. Oder täusche ich mich da?
Da bei Allegro alle Variablen global sind, wird das bei hinreichend komplizierten Konstruktionen extrem unübersichtlich.

Mit freundlichen Grüßen
Thomas Fischer 


Mehr Informationen über die Mailingliste Allegro