Tenere i dati di sessione in un DB è una strategia per poter realizzare funzionalità del tipo elenco utenti attualmente on line
Unaltra situazione, piuttosto complessa, nella quale si utilizzano le sessioni su DB è quella che prevede una batteria di server web in una architettura a bilanciamento di carico. In questi casi le richieste degli utenti si distribuiscono in maniera trasparente sui diversi server. Se si utilizzassero le classiche sessioni su file system, i dati di sessione si sparpaglierebbero sui diversi server, a meno di usare un percorso di rete per la cartella delle sessioni. Ma comunque ci sarebbero troppi accessi concorrenti sugli stessi file. Si preferisce quindi usare un database per memorizzare i dati di sessione in modo che costituisca un unico luogo in cui salvare i dati, in grado di gestire gli accessi concorrenti.
Alcune configurazioni di server a bilanciamento di carico, dette sticky session, riescono però a vincolare una sessione utente su un unico server, in modo tale che sia sempre lo stesso server della batteria a soddisfare tutte le richieste effettuate da uno stesso utente. In questo caso non serve mettere le sessioni su DB.
Infine non va esclusa la possibilità di usare in queste circostanze, al posto del DB, sistemi come memcache, un sistema di memorizzazione distribuito basato esclusivamente sulla memoria RAM dei server.
In generale non vanno mai registrati troppi dati di sessione, indipendentemente dal tipo di storage utilizzato, a causa della serializzazione-deserializzazione necessaria.
:bye: