Stockage de sessions
On peut utiliser une base de données pour stocker les sessions. Cela permet de
gérer la concurrence et éventuellement de partager les sessions entre plusieurs
serveurs. On peut par exemple utiliser une table sessions avec les colonnes
suivantes :
session_id: identifiant de session (clé primaire)key: clé de la valeur de sessionvalue: valeur de la clef de sessioncreated_at: date de création de la sessionupdated_at: date de dernière mise à jour de la session
Avec un index et une contrainte d'unicité sur la combinaison session_id et
key (ou une clef primaire composite).
CREATE TABLE sessions (
session_id TEXT NOT NULL,
key TEXT NOT NULL,
value TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (session_id, key)
);
Pour lire la valeur d'une clef de la session, on peut faire une requête SQL suivante :
SELECT value FROM sessions WHERE session_id = ? AND key = ?
Pour écrire la valeur d'une clef de la session, on peut faire une requête SQL suivante (insertion ou mise à jour si conflit, permet de rendre la requète plus atomique) :
INSERT INTO sessions (session_id, key, value) VALUES (?, ?, ?)
ON CONFLICT (session_id, key) DO
UPDATE SET value = ?, updated_at = CURRENT_TIMESTAMP
Pour supprimer une session, on peut faire une requête SQL suivante :
DELETE FROM sessions WHERE session_id = ?
Un autre choix possible est de stocker toutes les données de session dans une
seule colonne, en utilisant un format de sérialisation comme JSON. Redis est
souvent utilisé pour stocker les sessions.