Re: SQL Funktionsfrage
From: Elmar Boye (ElmarB_at_gmx.net)
Date: 08/03/04
- Next message: Michael Salm: "Re: verwaiste Logins entfernen"
- Previous message: Jens Neuhalfen: "OT: Seite Qber_den_internen_Aufbau/_Ent?= wicklung von SQL DBs"
- In reply to: Stefan Mis Software: "Re: SQL Funktionsfrage"
- Next in thread: Thomas: "SQL Funktionsfrage"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 3 Aug 2004 10:59:42 +0200
Hallo Stefan,
Stefan Mis Software <anonymous@discussions.microsoft.com> schrieb ...
> Als wir schon vor 4 Jahren auf SQl umsteigen wollten,
> standen wir ja schonmal vor dem gleichen Problem. Es kann
> aber nicht sein, das eine alte Superbase Anwendung mehr
> kann, als das neue SQL, abgesehen vom schnellen SQL Tempo.
Dabei gehts nicht um "mehr oder weniger". Sondern das Konzept
ist ein anderes.
Und das musst Du schon schlucken, sonst wirst Du mit keinem
relationalen Datenbanksystem glücklich werden.
Superbase kommt aus der ISAM Welt wie auch Dbase und in Teilen
selbst Microsoft Access. Und dort gabs diese Sichtweise.
Allerdings mit dem fatalen Nachteil, das dies nur für eine
Handvoll Benutzer funktioniert.
Um mal es an Deinem Mahnbeispiel aufzuhängen:
Gegeben sei eine Mahntabelle mit 3 Einträgen, nennen
wir sie einfallslos 4711 bis 4713. 4711 ist bereits
abgeschlossen und 4712 sowie 4713 sind noch unbearbeitet.
Benutzer A eröffnet die Bearbeitung von 4712 und sperrt
somit die Daten.
Benutzer B möchte nun alle unbearbeiteten Transaktionen
sehen, also etwas wie SELECT * FROM Mahnungen WHERE Offen = 1
Und da kommt die Crux: Was ist mit 4712?
Ist sie nun offen oder ist sie geschlossen?
Da die Frage nicht zuverlässig beantwortet kann, wartet
Benutzer B nun auf A ... der führt ein längeres Telefonat
... wartet ... trinkt einen Kaffee ...
Es gibt zwar diverse Variationen zu dem Thema, wie Lesen
von älteren Versionen oder das übergehen von Sperren.
Aber die lösen das Problem letztendlich auch nicht, da
es nur dazu führt das Benutzer B die Mahnung 4712 sieht.
Und was er dann macht kann absolut sinnfrei sein ->
siehe erster Beitrag. A wirft die Mahnung raus,
er eröffnet sie wieder oder anders rum.
> Anscheinend kann SQL ja nicht mal unterschiedliche
> Zugriffsrechte unterscheiden, z.B. jeder darf den
> Datensatz nur lesen, aber ich bin Highlander und nur ich
> darf ihn ändern, weil ich im Textfeld stehe.
Nette Formulierung, aber nützt Dir auch nichts.
Nehmen wir nun mal in der Erweiterung an, wir möchten
die Summe der offenen Mahnungen ermitteln...
Ist 4712 nun offen oder nicht?
Wie schon mal angedeutet: Bitte informiere Dich mal näher
darüber wie eine Transaktion in SQL definiert ist.
Und das wird in der Regel mit dem Akronym ACID beantwortet.
Und heisst dort nicht etwa ätzend ;-), sondern steht für
Atomar, Konsistent, Integrität und Dauerhaftigkeit eines Wertes.
Und eine Folge ist, dass man nicht einfach Datenzeilen sperrt
(auch wenn es so schön einfach ist). Eine durchaus übliche
Lösung für die skizzierte Mahnbearbeitung wäre z. B. die
Stati (offen, wird bearbeitet, erledigt) jeweils in eigenen
Transaktionen durchzuführen.
Also Benutzer A blockiert nicht einfach 4712, sondern wird
sich die Mahnung zur Bearbeitung holen.
Ist er damit fertig (oder bricht er die Bearbeitung wegen
des Telefonats oder des Kaffeedufts ab) wird der Status
entsprechend erneut geändert.
> In Superbase kommuniziert die Anwendung mit dem Server.
Was letztendlich die Anwendung für ihn durch jeweils
eine kurze Transaktion für ihn transparent erledigt.
Sprich Die Anwendung (respektiver Du als Programmierer)
kommunizierst mit dem Server.
Gruss
Elmar
- Next message: Michael Salm: "Re: verwaiste Logins entfernen"
- Previous message: Jens Neuhalfen: "OT: Seite Qber_den_internen_Aufbau/_Ent?= wicklung von SQL DBs"
- In reply to: Stefan Mis Software: "Re: SQL Funktionsfrage"
- Next in thread: Thomas: "SQL Funktionsfrage"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|