sql >> Databáze >  >> RDS >> Mysql

Jak zabránit race condition v online rezervaci hotelu

Jedním z řešení je přidat dva sloupce do tabulky v databázi. Jeden sloupec je ID relace nebo ID uživatele nebo cokoli jiného uživatele, kterému je místnost nabízena. Druhý sloupec je časové razítko udávající, kdy platnost nabídky vyprší.

Poté ve své aplikaci zobrazte pouze místnosti, jejichž platnost vypršela ve sloupci blokování. (Počáteční časové razítko nastavte na 0, aby jeho platnost vypršela.) Když je vybrána místnost, znovu zkontrolujte sloupec. Pokud je tam časové razítko nevypršené, uživatel dostane zprávu „promiň, byl jsi příliš pomalý“. V opačném případě tam vložte časové razítko na 15 minut do budoucnosti nebo cokoli jiného a pokračujte.

Setkáváte se s tím často na cestovatelských webech a webech pro nákup vstupenek, kde je napsáno něco jako „Tato místa pro vás držíme dalších 14 minut. Do té doby prosím dokončete transakci, jinak bude uvolněna bla bla bla.“



  1. Jak VLOŽIT, pokud řádek neexistuje (UPSERT) v MySQL

  2. Vytvoření vysoce dostupné databáze pro Moodle pomocí PostgreSQL

  3. Další bílá kniha 12c Optimizer

  4. Jak zvládnout vývoj databáze Play Framework 2 v produkci