Come ogni altra cosa, la risposta è "dipende".
Innanzitutto, è necessario determinare se la memorizzazione del JWT completamente codificato è la soluzione corretta. Tendo a non archiviare la stringa JWT e memorizzo invece le attestazioni utilizzate per costruire il JWT, il che salverà una tonnellata di spazio nel database.
Se si decide che memorizzare il JWT è il metodo corretto, quindi possiamo guardare le opzioni.
TEXT e LONGTEXT sono solo tipi di CLOB, quindi possiamo ignorarlo.
TEXT e VARCHAR hanno entrambi limiti di 64kb, quindi qualsiasi valore superiore a quello richiederà LONGTEXT (o MEDIUMTEXT, che non hai menzionato ma è un'opzione).
La differenza tra TEXT e VARCHAR è che VARCHAR è memorizzato nella riga ma TEXT è fondamentalmente un puntatore. VARCHAR sarà più veloce se stai leggendo il JWT spesso, ma stringhe più grandi faranno sì che ogni singola riga sia più grande, il che sarà un successo in termini di prestazioni.
Con dimensioni pari a quelle dei JWT, direi che TEXT è una scelta piuttosto buona per archiviare le JWT nel database. Se sei assolutamente sicuro che le JWT rimarranno molto piccole, allora un VARCHAR potrebbe produrre prestazioni di lettura migliori, ma sarebbe meglio testare con dati del mondo reale per essere sicuro.
Se è necessario fornire un campo più grande di TEXT, ripeterei il mio consiglio per evitare di memorizzare il JWT codificato, ma LONGTEXT è un'opzione disponibile.
fonte
2016-04-15 19:32:30
Non è il punto di una JWT che non deve essere memorizzato nel database? – ceejayoz
@ceejayoz I token di aggiornamento possono anche essere JWT e ritengo che sia necessario archiviarli in un archivio dati. – georaldc