Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Simultaner Zugriff auf Datenbank (Multiuser)

  Alt 23. Nov 2006, 10:28
Datenbank: MySQL • Version: 5.x • Zugriff über: libsql/ZeosLib (bisher noch nicht fest)
Guten Morgen,

ich mache mir gerade Gedanken bzgl. einem Projekt, das ich in der Zukunft umsetzen soll. Und zwar handelt es sich dabei um ein Projekt, das Multiuserfähig sein soll, d.h. dass mehrere Benutzer auf die gleichen Daten in einer Datenbank zugreifen sollen. So weit so gut, denn MySQL kann das ja. Nun habe ich aber das Problem (bzw. die ein paar schlechte Erfahrungen mit Threads gemacht), dass so ein simultaner Zugriff auf Daten nicht immer glatt über die Bühne geht. Nach meinem Wissensstand lässt MySQL nicht zu, dass man gleichzeitig lesend auf Daten zugreifen kann. ABER bevor ich da nun zu programmieren anfange und mitten drin merke, dass meine Idee nicht zu realisieren ist frage ich doch lieber nach.

Habt ihr mir daher Vorschläge/Ideen/Anmerkungen zum folgenden Szenario, d.h. ist die folgende Lösung dazu sinnvoll und funktioniert diese, sodass ein multiuserfähiges System dabei herauskommt:

Ich gehe im nachfolgenden von einer perfekten Übertragunsgeschwindigkeit, von zwei User auf separaten Rechnern, die gleich sind und einem Server auf dem MySQL läuft aus. Die beiden User haben in der Datenbank die vollen Lese- und Schreibrechte.

Zwei User laden die Daten (Annahme: Kundendaten) aus der MySQL-Datenbank und lassen diese sich aufbereitet in einer Liste anzeigen. Nun wählen beide die ersten 5 Kunden aus - zur Bearbeitung. Nachdem beide auf Laden geklickt haben wird von beiden Rechnern aus der Befehl an MySQL geschickt, dass dieser Datensatz von dem jeweiligen Benutzer geladen wird, d.h. bei allen 5 Datensätzen wird eine bestimmte Zelle auf TRUE statt auf FALSE gesetzt, sodass kein anderer User darauf zugreifen kann (ich hoffe jeder versteht an dieser Stelle was ich meine). Meine Annahme ist bisher, dass MySQL nun z.B. die Anfrage (aus welchen Kriterien auch immer) des ersten Users als erstes abhandelt und die Daten für andere User sperrt. Allerdings hat dieser User auch schon auf "Laden" geklickt und die Anfrage, d.h. die Sperrung der Daten, gesendet. Wie kann ich das sinnvoll handeln, sodass es hier zu keinerlei Überschneidungen kommt?!

Über eine Antwort wäre ich ziemlich erfreut!

Mit freundlichen Grüßen
shark
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat