Memorizzare numeri interi molto grandi in MySQL
Domanda
Devo memorizzare un numero molto grande (decine di milioni) di hash SHA-2 a 512 bit in una tabella MySQL. Per risparmiare spazio, vorrei memorizzarli in forma binaria, anziché in una stringa di cifre esadecimali. Sto usando un ORM ( DBix :: Class ) in modo che i dettagli specifici dell'archiviazione vengano sottratti dal codice, il che può gonfiarli a qualsiasi oggetto o struttura che scelgo.
Il tipo BIGINT
di MySQL è di 64 bit. Quindi potrei teoricamente dividere l'hash tra otto colonne BIGINT
. Sembra piuttosto ridicolo però. L'altro mio pensiero era usare solo una singola colonna BLOB
, ma ho sentito che possono essere lenti ad accedere a causa del fatto che MySQL li tratta come campi a lunghezza variabile.
Se qualcuno potesse offrire un po 'di ampiezza che mi farà risparmiare un paio d'ore di analisi comparativa di vari metodi, lo apprezzerei.
Nota: automatico -1 per chiunque dica "usa solo postgres!" :)
Soluzione
Hai considerato "binario (64)"? Vedi binario MySQL .
Altri suggerimenti
Utilizzare il tipo BINARY (64)?