/ / Wie gehe ich mit der Logik von Webanwendungen und der gleichzeitigen Verwendung von Datenbanken um? - Web, Parallelität, Race-Condition, Datenbank-Parallelität

Wie gehe ich mit der Webanwendungslogik und der Parallelität von Datenbanken um? - Web, Parallelität, Race-Condition, Datenbank-Parallelität

Nehmen wir an, ich habe einen Tisch mit dem Namen items. Benutzer meiner Webapplikation kann Zeile der löschen items tisch, aber ich will den tisch nicht leer lassen.

Derzeit habe ich in meiner Anwendung folgenden Code:

if (itemsCount() <= 1) {
don"t delete;
}
else {
delete;
}

Mir ist jedoch klar, dass dieser Code anfällig für Parallelitätsprobleme ist. Zum Beispiel, wenn aktuell die Größe von items ist 2, und es gibt zwei Threads, die diesen Code fast gleichzeitig ausführen. Die Tabelle wird möglicherweise leer.

Ich denke, dieses Problem ist ziemlich häufig bei Leuten, die Webapps schreiben. Die Leute hätten es schon lösen sollen. Welche Lösungen gibt es dafür?

Antworten:

0 für die Antwort № 1

Die häufigste Lösung ist die Verwendung einer TransaktionManager. In Ihrem Fall würde der Transaktionsmanager die Thread-Ausführung koordinieren, um sicherzustellen, dass jeweils nur ein Thread auf die Tabelle zugreift und diese aktualisiert.

Sie haben nicht erwähnt, welche Sprache und welche Art von Umgebung Sie verwenden, aber unter der Annahme von Java und JEE ist das Transaktionsmanagement recht einfach Hier.