Python le plus court d'id unique à partir de chaînes
J'ai plus de 100 millions d'unique des chaînes de caractères (VARCHAR(100) UNIQUE dans la base de données MySQL). Maintenant, j'utilise le code ci-dessous pour créer de hachage unique d'eux (VARCHAR(32) UNIQUE) afin de réduire la taille de l'index de la table InnoDB (un index unique sur varchar(100) est environ 3 fois plus grande que sur varchar(32) domaine).
id = hashlib.md5(str).hexdigest()
Est-il une autre méthode pour créer de la plus courte des identifiants de ces chaînes et de prendre des mesures raisonnables de l'unicité des garanties?
SHA1? Notez que vous pouvez faire les cordes plus courte encore par l'utilisation d'une base-64 version de la digérer, plutôt que d'un hex à un:
Vous pouvez utiliser un fichier BINAIRE(16) de la colonne de stocker le hash MD5, sans hex ou de l'encodage base64.
base64.b64encode(hashlib.md5("foo").digest())
Vous pouvez utiliser un fichier BINAIRE(16) de la colonne de stocker le hash MD5, sans hex ou de l'encodage base64.
OriginalL'auteur jack | 2012-06-19
Vous devez vous connecter pour publier un commentaire.
Une façon grossière peut être, vous pourriez faire md5, puis choisissez 16 premiers caractères de lui, au lieu de 32. Les Collisions ne veut toujours pas être très élevé, et vous aurez raisonnable unicité de garantie.
OriginalL'auteur Hrishikesh
Vous pouvez l'enregistrer comme un entier:
Ou chaîne binaire:
OriginalL'auteur simplylizz
Solutions les plus simples est de convertir les données hexadécimales (yor digère avoir la base de 16 ans) à autre chose, par exemple. avec en base 64.
Si vous êtes d'accord sur un certain niveau de risque plus élevé, vous pouvez uniquement utiliser par exemple dix premiers chiffres (en hexadécimal) de la digérer. Il vous donnera
16**10
(plus de10**12
) les possibilités au lieu de16**32
(plus de10**38
), mais il est encore énorme, et est couramment utilisé la technique (Git et Github généralement utiliser 7 chiffres pour l'identification s'engage, afair).OriginalL'auteur Tadeck
Depuis le hachage et la compression sont très similaires d'une solution évidente consiste à utiliser un algorithme de compression pour compresser vos clés. Cela permettra de préserver l'unicité des clés ainsi.
S'il vous plaît, vérifier this et ceci posts
OriginalL'auteur klearn