Ich baue eine E-Commerce-Anwendung mit MySQL, aber ich habe Schwierigkeiten, eine Lösung zu finden, die das folgende Wettlaufproblem verhindert:
Zwei Benutzer zahlen gleichzeitig mit demselben Artikel im Warenkorb aus. Der Laden hat nur einen Artikel zum Verkauf verfügbar. Ein Benutzer sollte in der Lage sein, den letzten Artikel zu kaufen, und der andere Benutzer sollte eine Fehlermeldung sehen, weil der Artikel ausverkauft ist.
Ich verwende einen Artikelzähler, um die Anzahl der Artikel im Inventar zu verfolgen, daher dachte ich, ich würde den Artikel nach der Bearbeitung der Kreditkarte des Benutzers einfach verringern.
Ich kenne die SELECT...UPDATE
-Abfrage in MySQL, aber ich würde gerne von Sperren von Zeilen oder Tabellen absehen - es sei denn, das ist wirklich der beste Weg für eine E-Commerce-App, dieses Problem zu lösen.
Ich bin auch daran interessiert, andere Lösungen zu hören, außer dem Überprüfen/Verringern eines Artikelzählers.
0 Stimmen
Re: "Lösungen außer ... Artikelzähler" siehe den Inventarabschnitt auf kylebanker.com/blog/2010/04/30/mongodb-and-ecommerce. Ich weiß, dass es Mongo verwendet, aber die Idee könnte auch in MySQL verwendet werden. z.B. Es gibt eine
inventory
-Tabelle, in der jede Option einen Eintrag hat. Dies ist mit einem Benutzer/Sitzung_ID verknüpft und hat einen Status: verfügbar, im Warenkorb und verkauft. Kontra: Ihreinventory
-Tabelle wird ziemlich groß.