[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.217
    Zitat Zitat von BenderD Beitrag anzeigen
    ... da geht ja wieder einiges durcheinander:
    - mit dem API bleibt der Designfehler, dass damit nicht zugleich eine eigene Sperre angefordert wird
    - die Prüfung kann frei ergeben und der Job blockiert trotzdem 60 sec, weil ein anderer dazwischen gerutscht ist
    - Datenbanken setzen immer physische Sperren für updates
    - das zugrunde liegende Problem, dass der Benutzerprozess Sperren hält und die Kontrolle bekommt bleibt bestehen - dieser Anfängerfehler gehört behoben, gerade wenn man die "Altanwendung" weiter braucht und benutzt.

    D*B
    Danke für die Antwort.
    Die (minimale) Unsicherheit, dass jemand dazwischenrutscht, ist mir bewusst. (Ich hatte vorher schon geschrieben, dass das in unserem Fall kein Problem ist). Auf jeden Fall werden wir mit der neue Prüfung per API deutlich besser, als wenn wir die User bei jeder Sperre in den 60-Sekunden Wartezustand laufen lassen.

    Desweiteren hattest du ja bereits früher geschrieben, dass alle Sperren aufgehoben sein sollten, wenn die Kontrolle an den User zurückgeht. Das ist aber doch nur eine Meinung (nämlich deine). Ich finde nicht, dass das eine allgemeingültige Weisheit ist. Wenn ich den ganzen Forumsthread Revue passieren lasse, meine ich, dass die meisten der Meinung sind, dass sie physiche Sperren ablehnen und stattdessen logische Sperren setzen würden. Das funktioniert selbstverständlich, ist aber meiner Ansicht nach nicht der einzige Weg. Ich sehe immer noch kein Problem bei physischen Sperren. Ein Umbau auf ein vollständig transaktionsgesteuertes Verfahren mit Commitmentt Control kann ich mir bei uns im Hinblick auf die bestehende Anwendung nicht vorstellen.

    Dieter

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    Zitat Zitat von dschroeder Beitrag anzeigen
    Desweiteren hattest du ja bereits früher geschrieben, dass alle Sperren aufgehoben sein sollten, wenn die Kontrolle an den User zurückgeht. Das ist aber doch nur eine Meinung (nämlich deine). Ich finde nicht, dass das eine allgemeingültige Weisheit ist.
    ... sowas kann Stunden dauern, wenn das bei euch tolerierbar ist, na dann tut es vielleicht auch MS-Access ...

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    1.217
    Zitat Zitat von BenderD Beitrag anzeigen
    ... sowas kann Stunden dauern, wenn das bei euch tolerierbar ist, na dann tut es vielleicht auch MS-Access ...
    Coole Idee ... dann hätten wir ja auch direkt eine grafische Oberfläche ...

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.752
    Die Satzsperren-Problematik betrifft ja (im Wesentlichen) nur Anwendungen mit RLA (Zugriffe ohne SQL).
    Die "reine" SQL-Fraktion kennt natürlich auch Sperren, diese sind im Normalfall aber erst nach Update/Insert aktiv und werden automatisch bei Commit/Rollback aufgehoben.

    Der Select kennt im Normalfall keine Sperre.
    (Ja ich weiß, es gibt den "Select for update", den man aber vermeiden sollte.)

    Die Regel beim SQL-Update besteht im erweiterten Where:
    Update mytable set value=: newvalue where key=: mykey and value = : oldvalue;
    der Update schlägt fehl und der User bekommt einen Hinweis.
    Dies ist insoweit interessant da updates unterschiedlicher Felder durch unterschiedliche User dann nicht zum Fehler führen (soweit man nicht mit "Select *" arbeitet) .

    Nun muss man noch unterscheiden zwischen Absolut-Updates und Relativ-Updates.
    Absolut-Updates " Value = Newvalue" sind sicherlich ein Problem.
    Aber Relativ-Updates sind eher unproblematisch " Value = Value + : NewValue".

    Darauf ist auch das Design einer Anwendung anzuwenden. Dann kommt man auch ohne Sperren aus.

    Bei Stammdaten gibt es aber auch ähnliche Risiken. Man nehme nur das Problem der Dublettenprüfung. Hier helfen keine Satzsperren da die Prüfung ja erst nach Insert stattfinden kann. Findet die Prüfung vor Insert statt gibt es ggf. doch Dubletten wenn 2 Inserts passieren.

    In Frameworks (z.b. ADO.NET) wird dies ebenso behandelt da hier i.W. eine Offline-Bearbeitung ganzer Datasets möglich ist, die dann halt beim Update entsprechende Fehleraussagen treffen.
    Durch Journalisierung minimiert sich der Programmieraufwand aber gewaltig.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. IBM Rational Developer sperrt Platz auf PC ??
    By loeweadolf in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-07-14, 15:01
  2. Antworten: 11
    Letzter Beitrag: 11-07-14, 11:32
  3. Satz in Datenbankdatei in CL schreiben??
    By JonnyRico in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 02-04-03, 16:52
  4. Subfile auf letztem bearbeiteten Satz aufsetzen
    By Fertig in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 21-02-03, 12:28
  5. CA-Verbindung beendet sich nach jedem ODBC Datensatz
    By Carsten in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-01-02, 09:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •