Maison >base de données >tutoriel mysql >Comment puis-je optimiser le stockage UUID à l'aide de l'encodage Base64 ?

Comment puis-je optimiser le stockage UUID à l'aide de l'encodage Base64 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-20 09:52:10356parcourir

How Can I Optimize UUID Storage Using Base64 Encoding?

Stockage UUID optimisé à l'aide de Base64

L'approche originale consistant à convertir les UUID en base64 et à supprimer les "==" de fin donne un résultat de 22 octets. chaîne. Bien qu'il s'agisse d'une technique peu encombrante, elle pourrait potentiellement compromettre la lisibilité et la compatibilité des UUID.

Une approche plus robuste implique l'utilisation d'une bibliothèque UUID qui prend en charge la conversion des UUID en une représentation base64 compacte. De telles bibliothèques codent les bits les plus et les moins significatifs de l'UUID dans une chaîne base64 sans aucun remplissage ou caractère de fin inutile. Cette méthode produit généralement une chaîne d'environ 26 à 30 caractères tout en préservant le format lisible par l'homme de l'UUID.

Un exemple d'une telle bibliothèque est Apache Commons Codec, qui fournit les fonctions suivantes :

import org.apache.commons.codec.binary.Base64;

private static String uuidToBase64(String str) {
    Base64 base64 = new Base64();
    UUID uuid = UUID.fromString(str);
    ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
    bb.putLong(uuid.getMostSignificantBits());
    bb.putLong(uuid.getLeastSignificantBits());
    return base64.encodeBase64URLSafeString(bb.array());
}

private static String uuidFromBase64(String str) {
    Base64 base64 = new Base64(); 
    byte[] bytes = base64.decodeBase64(str);
    ByteBuffer bb = ByteBuffer.wrap(bytes);
    UUID uuid = new UUID(bb.getLong(), bb.getLong());
    return uuid.toString();
}

En utilisant cette approche, vous pouvez convertir les UUID en chaînes base64 avec un nombre d'octets réduit tout en conservant leur intégrité et leur compatibilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn