Lorenzo
propone un interessante e frequente problema
di gestione "atomica" di verifica e prenotazione di un posto.
Ignorando per un momento le
pur necessarie distinzioni fra prenotazione di posti numerati e non, una
soluzione tecnologica esiste (in questo non concordo in pieno col commento
di Alessandro), e rappresenta una sorta di pattern per
questa situazione. Il pattern in particolare è ideale per le applicazioni di
commercio elettronico in cui la conferma della vendita deve essere data on-line
(quindi con conferma della disponibilità di magazzino).
La soluzione consiste appunto nel rendere atomica
l'operazione di verifica e prenotazione, trasformando l'operazione di ricerca in
un "update temporaneo". Alla domanda dell'operatore del cinema "Quanti posti le servono?" l'utente risponde con un numero, che l'operatore
usa come input alla ricerca. A questo punto il sistema
non "cerca" (SELECT) i posti, ma li "prenota" (UPDATE) direttamente,
diciamo a nome di quell'operatore (e non dell'utente). Nel caso il cui la
"ricerca/prenotazione" fallisse, cioè aggiornasse un numero di record inferiore a quello richiesto,
si fa il rollback ed è necessario ripetere. Nel caso
invece in cui l'utente procedesse al "checkout" i posti vengono a lui
assegnati definitivamente.
La subottimalità introdotta da questo meccanismo è che si rendono
temporaneamente indisponibili quei posti per cui l'operatrice ha fatto una
verifica, positiva, ma che poi l'utente al telefono decide di non prendere. Vale
più o meno lo stesso con il carrello di un utente anonimo in una applicazione di
commercio elettronico.
Ovviamente questa è una delle strade possibili. Sono curioso di seguire il
seguito della discussione.
Un'ultima nota: il termine overbooking è in realtà improprio in questo
contesto, ma credo che il contenuto del post di Lorenzo chiarisca di cosa si sta
parlando
powered by IMHO