2009-07-31 20 views
14

Ho bisogno di memorizzare un numero molto grande (decine di milioni) di hash SHA-2 a 512 bit in una tabella MySQL. Per risparmiare spazio, mi piacerebbe memorizzarli in forma binaria, piuttosto che una stringa di cifre esadecimali. Sto utilizzando un ORM (DBix::Class) in modo che i dettagli specifici dello spazio di archiviazione vengano estratti dal codice, in modo da poterli gonfiare a qualsiasi oggetto o struttura che scelgo.Memorizzazione di numeri interi molto grandi in MySQL

Il tipo di MySQL BIGINT è di 64 bit. Quindi ho teoricamente diviso l'hash su otto colonne BIGINT. Però sembra abbastanza ridicolo. Il mio altro pensiero era semplicemente usare una singola colonna BLOB, ma ho sentito che possono essere lenti ad accedere a causa di MySQL che li tratta come campi a lunghezza variabile.

Se qualcuno potesse offrire qualche widsom che mi salverà un paio d'ore di benchmarking di vari metodi, lo apprezzerei.

Nota: Automatico -1 a chiunque dica "usa solo postgres!" :)

+12

usa solo postgres :) – jeje

risposta

18

Avete considerato 'binario (64)'? Vedi il tipo MySQL binary.

+0

Grazie, 'BINARY' sembra funzionare perfettamente. – friedo