Theoriefrage : mehrere User vs gleichen Datensatz

Status
Nicht offen für weitere Antworten.

Tallan

Bekanntes Mitglied
Hallo Zusammen,

ich bin grade dabei ein Programm zu schreiben das mitunter Daten von einem mysql Server ausliest diese bearbeitet und wieder zurückspielt.
Etwas Sorgen bereitet es mir wenn Mr.x Daten abfragt und editiert während Mr.y grade eine Änderung der selbigen Daten sendet.

Ein einfaches Beispiel. Die Sql Tabelle enthält nur eine ID und ein Infofeld
Der User kann dieses Infofeld einlesen editieren und wieder an die Datenbank senden.
Diesen vorgang machen aber mehrer Userer unter umständen Zeitgleich bzw. Überschneident.

Mein Frage, wie gehe ich hier am besten vor.
Den Datensatz zu blocken wäre eine idee aber wie genau ?
Eine Flag in der Tabelle setzen mit einer programmspezifische id, das a) für andere sperrt und b) abgefragt werden kann ob geschrieben werden darf ?


Beispiel hierzu :

Tabelleninhalt
ID 1 | Infotext : bla | Schreibflag : none |

User will schreiben -> Schreibflag abfragen, wenn = none -> schriebe spezifische zahl ins flag

ID 1 | Infotext : bla | Schreibflag : 123456... |

frage ab ob diese zahl in der flag steht -> falls ja schreibe -> nach beendigung löschen

Falls eine andere Zahl im Flag steht -> Fehlermeldung.



Gibt es diesbezüglich bessere Ansätze oder bereits vorimplementierte Lösung ?
 

sparrow

Top Contributor
Ich weiss nicht ob mySQL etwas Vergleichbares kennt, aber unter postgres gibt es die Möglichkeit folgendes Statement abzusetzen:

Code:
SELECT .... FROM .... [WHERE .... ] FOR UPDATE

Die dazugehörige Transaktion sperrt die selektierten Datensätze dann. Andere FOR UPDATE-Abfragen blockieren dann so lange bis die erst Transaktion abgeschlossen ist.
 

Tallan

Bekanntes Mitglied
das wäre natürlich ein interesanter ansatz wobei man dann wieder vor dem editierne den datensatz abfragen müsste da er sonst ja schon bei der generellen abfrage gesperrt wäre
 

schalentier

Gesperrter Benutzer
Hibernate hat pro Tabelle noch ein Version-Feld. Der Wert dort drin wird bei jedem Commit um eins hochgezaehlt. Vor einem Commit wird ueberprueft, ob der Wert gleich geblieben ist, ansonsten musst du dir ueberlegen, was passieren soll (Commit abbrechen, User fragen, nach erneutem Update weiteren Commit probieren, Daten mergen, ...).
 

sparrow

Top Contributor
das wäre natürlich ein interesanter ansatz wobei man dann wieder vor dem editierne den datensatz abfragen müsste da er sonst ja schon bei der generellen abfrage gesperrt wäre

Ich hab das mal für ein Buchungssystem gebraucht wo auf gar keinen Fall ein Platz 2x vergeben werden durfte, es aber nicht unwahrscheinlich ist, dass 2 zeitnahe Zugriffe auf den Datensatz erfolgen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Theoriefrage : Sichere anmeldung an einer SQL-Datenbank Datenbankprogrammierung 6
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
J Mehrere WHERE Werte benutzen Datenbankprogrammierung 2
G ID zuweisung eines TerminKalenders (mehrere Kalender) Datenbankprogrammierung 8
K Mehrere Benutzer Datenbankprogrammierung 6
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
S Abfrage von Gruppentickets(Mehrere Resorts an einem Tag) Datenbankprogrammierung 1
E Mehrere Tabellenspalten mit INNER JOIN verknüpfen Datenbankprogrammierung 1
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
Androbin [Serializing] Mehrere Objekte in einer einzigen Datei speichern Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
S HSQLDB Mehrere PreparedStatements ausführen Datenbankprogrammierung 3
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
J Mehrere Inserts bei Fehlschlag abbrechen Datenbankprogrammierung 2
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
F [SQLite] Mehrere Datensätze einfügen Datenbankprogrammierung 12
M DB: Mehrere Zeilen in einer Zeile zusammenführen Datenbankprogrammierung 10
D Frage zu INSERTS über mehrere Datenbanktabellen Datenbankprogrammierung 3
U Nur den ersten Datensatz löschen wenn mehrere gleiche da sind Datenbankprogrammierung 2
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
O eine Tabelle hat mehrere PrimKey mit dem selben Wert Datenbankprogrammierung 9
multiholle SQL Querry über mehrere Spalten Datenbankprogrammierung 12
N mehrere Abfragen nacheinander wie mit MS Access mit JAVA Datenbankprogrammierung 3
O Mittelwert über mehrere Zeilen Datenbankprogrammierung 11
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
D mehrere Datensätze in ein Listenfeld Datenbankprogrammierung 2
T JAVA JDBC mehrere Anfragen direkt hintereinander ausführen Datenbankprogrammierung 2
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
M Mehrere Tabellen zusammenführen Datenbankprogrammierung 4
W Prepared Statement mehrere Zeichenketten Datenbankprogrammierung 4
F Mehrere unterschiedliche ResultSets Datenbankprogrammierung 7
P [Hibernate] Mehrere Keys in einem <set> Datenbankprogrammierung 11
G Insert-anweisung mehrere Varianten eine geht Datenbankprogrammierung 2
N mehrere tables hintereinander Datenbankprogrammierung 4
W Nur ein Datensatz wird angezeigt, obwohl mehrere existieren Datenbankprogrammierung 7
N Mehrere Abfragen gleichzeitig - was passiert da? Datenbankprogrammierung 6
L mehrere Abfragen mit einem Statement!? Datenbankprogrammierung 5
M Mehrere ResultSets gleichzeitig verwenden Datenbankprogrammierung 3
L Mehrere SQL-Statements gleichzeitig!? Datenbankprogrammierung 5
F mehrere Datenbankupdates nacheinander Datenbankprogrammierung 3
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
M Lösungsvorschläge für Multi-User Datenbankprogrammierung 1
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
D Multi User Datenbank Anwendung Datenbankprogrammierung 5
B MySQL installieren - silent / User anlegen Datenbankprogrammierung 3
D HSQLDB user lacks privilege or object not found Datenbankprogrammierung 6
J Datenbank: Methode wegen doppelten User Datenbankprogrammierung 1
M User lacks privilege or object not found Datenbankprogrammierung 3
S UPDATE user Datenbankprogrammierung 4
M MySQL User Eingaben in die DB einfügen Datenbankprogrammierung 7
P Mittels Java einen neuen MySQL User erstellen Datenbankprogrammierung 4
D MySQL User mit nur mit lokalen Lesezugriff und ohne Phpmyadmin Datenbankprogrammierung 4
F JPA und Klasse "User" Datenbankprogrammierung 3
H java.sql.SQLException: Access denied for user 'root'@'localhost' (using password : YES) Datenbankprogrammierung 1
G JDBC-Verbindung: User wechseln Datenbankprogrammierung 2
S JPA Hibernate: "The user must supply a jdbc connection" Datenbankprogrammierung 4
1 User die Rechte eines Datenbankerstellers zuweisen? Datenbankprogrammierung 3
G iBatis Datenbankverbindung - DB-User übergeben Datenbankprogrammierung 4
minzel Access denied for user . Datenbankprogrammierung 10

Ähnliche Java Themen


Oben