ASP.NET MVC – Concurrence in Database

Die Verwaltung der Parallelität in Webanwendungen ist eines der Probleme, für die wir ein wenig Zeit aufwenden müssen, da es aufgrund der Natur der Anwendung Fälle geben kann, in denen mehrere Benutzer mit dem interagieren müssen gleiches Element.

An sich ist diese Interaktion kein Problem, das eigentliche Problem tritt auf, wenn nach dem Ändern oder Berühren dieses Elements ein Speichern in der Datenbank erforderlich ist und dann zwei oder mehr Benutzer gleichzeitig eine Aktion für dasselbe Element ausführen möchten, d. H wo unsere Logik ein Verhalten definieren muss, um zu wissen, wie dies angemessen gehandhabt werden kann.

Gleichzeitigkeit in Datenbanken

Wie wir zu Beginn erklärt hatten, liegt die Übereinstimmung vor, wenn zwei oder mehr Akteure an einem Element in unserer Anwendung arbeiten und eine Aktion gegen die Datenbank generieren.

Fall von Parallelität
Probleme können auftreten, wenn die Änderungen widersprüchlich sind, zum Beispiel: Benutzer A hat einen Wert gespeichert, aber Benutzer B hat zu diesem Zeitpunkt in den Augen des Benutzers auch einen anderen Wert geändert und gespeichert B Es gab nichts, was ihn daran hinderte, etwas zu ändern.

Diese Art von Konflikten kann die Leistung unserer Anwendung in den Augen des Benutzers beeinträchtigen. Daher müssen wir prüfen, ob die Bereiche, die sich für die gleichzeitige Verwendung eignen oder nicht, geplant sind.

Arten der Nebenläufigkeit

Sehen wir uns einige Arten von Parallelität an. Auf diese Weise können wir ein wenig besser verstehen, welche Art von Aktionen wir in unseren Anwendungen ausführen können:

Pessimistische Übereinstimmung
Dieser Ansatz legt nahe, dass bei Verwendung der Datenbank der verwendete Datensatz präventiv blockiert wird , wodurch vermieden wird, dass mehrere Benutzer den Wert gleichzeitig ändern. Das Problem besteht darin, dass dies in der Webumgebung nicht möglich ist, ihn gründlich zu verwenden, da Da es keine Zustände gibt, wissen wir nicht wirklich, ob die Blockade angewendet oder entfernt wurde, bis wir mit dem Server kommunizierten, was zu Verwirrung und Langsamkeit bei der Verwendung führte.

Optimistische Übereinstimmung
Bei diesem anderen Ansatz wird die Kompatibilität mit dem Web zum Zeitpunkt der Änderung etwas verbessert. Vor dem Speichern in der Datenbank wird überprüft, dass die Daten seit dem Zeitpunkt der Lesung nicht geändert wurden. Zu diesem Zweck führen wir einen Vergleich durch von Registrierungswerten und eines zugeordneten Feldes, das zur Erhöhung der Genauigkeit einen temporären Abdruck mit Datum, Uhrzeit und Sekunden aufweist.

Wie löst ASP.NET MVC das Problem?

ASP.NET MVC unterstützt den pessimistischen Ansatz nicht, daher müssen wir mit dem Optimisten zusammenarbeiten. Dazu müssen wir unsere Strukturen mit Datumsfeldern ausstatten, um die letzte Änderung zu speichern, damit wir wissen, ob der Wert dann geändert wurde dass wir den Datensatz erhalten haben und bevor wir ihn speichern, können wir eine Warnung erhalten und somit entscheiden, ob wir diese Werte überschreiben oder nicht.

See also  CURL, um Informationen und Hacking aus PHP zu extrahieren

Sehen wir uns ein kleines Codebeispiel an, wie wir dies überprüfen können:

asp_concurrencia.jpg

Wir haben dann festgestellt, dass wir zum Zeitpunkt der Änderung in der Datenbank überprüft haben, ob das Feld nach dem Lesen geändert wurde. In diesem Fall lösen wir eine Ausnahme aus , mit der wir die entsprechenden Maßnahmen ergreifen können. Wir lassen auch Platz für die Arbeit die verschiedenen Ausnahmen, die generiert werden können.

Nach Abschluss dieses Lernprogramms wissen wir bereits etwas mehr über die Parallelität in Datenbanken und die Behebung des Problems in ASP.NET MVC .

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *