2009-07-31 8 views
14

J'ai besoin de stocker un très grand nombre (dizaines de millions) de hachages SHA-2 de 512 bits dans une table MySQL. Pour économiser de l'espace, je voudrais les stocker sous forme binaire, plutôt qu'une chaîne de caractères hexadécimaux. J'utilise un ORM (DBix::Class) afin que les détails spécifiques du stockage soient extraits du code, ce qui peut les gonfler à n'importe quel objet ou structure que je choisis.Stockage de très grands entiers dans MySQL

Le type BIGINT de MySQL est 64 bits. Donc, je pourrais théoriquement diviser le hachage entre huit colonnes BIGINT. Cela semble plutôt ridicule. Mon autre pensée était simplement d'utiliser une seule colonne BLOB, mais j'ai entendu dire qu'ils peuvent être lents à l'accès en raison de MySQL les traitant comme des champs de longueur variable.

Si quelqu'un pouvait offrir quelques widsom qui me permettra d'économiser quelques heures de benchmarking diverses méthodes, je l'apprécierais.

Remarque: Automatique -1 pour tous ceux qui disent "il suffit d'utiliser postgres!" :)

+12

il suffit d'utiliser postgres :) – jeje

Répondre

18

Avez-vous considéré 'binary (64)'? Voir le type MySQL binary.

+0

Merci, 'BINARY' semble fonctionner parfaitement. – friedo

Questions connexes