Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So verhindern Sie Race Condition bei der Online-Hotelbuchung

Eine Lösung besteht darin, einer Tabelle in der Datenbank zwei Spalten hinzuzufügen. Eine Spalte ist die Sitzungs-ID oder Benutzer-ID oder was auch immer des Benutzers, dem der Raum angeboten wird. Die zweite Spalte ist ein Zeitstempel, der angibt, wann dieses Angebot abläuft.

Zeigen Sie dann in Ihrer App nur Räume an, die einen abgelaufenen Zeitstempel in der Hold-Spalte haben. (Setzen Sie den anfänglichen Zeitstempel auf 0, damit er mit abgelaufen beginnt.) Wenn ein Raum ausgewählt ist, überprüfen Sie die Spalte erneut. Wenn dort ein nicht abgelaufener Zeitstempel vorhanden ist, erhält der Benutzer eine „Entschuldigung, Sie waren zu langsam“-Meldung. Andernfalls fügen Sie dort einen Zeitstempel für 15 Minuten in die Zukunft oder was auch immer ein und fahren Sie fort.

Sie sehen dies häufig auf Reise-Websites und Websites zum Ticketkauf, wo es so etwas wie „Wir halten diese Plätze für Sie noch 14 Minuten frei. Bitte schließen Sie die Transaktion bis dahin ab oder sie wird freigegeben, bla, bla, bla.“