Mysql
 sql >> Base de données >  >> RDS >> Mysql

Créer votre propre TinyURL

Les utilisateurs d'URL minuscules aiment utiliser des jetons aléatoires, car vous ne pouvez pas simplement suivre les liens d'URL minuscules. "Où va #2 ?" "Oh cool!" « Où va le n° 3 ? » "Encore plus cool !" Vous pouvez saisir des caractères aléatoires, mais il est peu probable que vous rencontriez une valeur valide.

Étant donné que la clé est plutôt clairsemée (4 valeurs ayant chacune 36 * possibilités vous donnent 1 679 616 valeurs uniques, 5 vous donne 60 466 176), le risque de collisions est faible (en effet, c'est une partie souhaitée de la conception) et un bon index SQL rendra le la recherche soit triviale (en effet, c'est la recherche principale de l'URL, donc ils optimisent autour d'elle).

Si vous voulez vraiment éviter la recherche et simplement ne pas utiliser l'auto-incrémentation, vous pouvez créer une fonction qui transforme un entier en une chaîne de caractères apparemment aléatoires avec la possibilité de reconvertir. Ainsi "1" devient "54jcdn" et "2" devient "pqmw21". Similaire à l'encodage Base64, mais n'utilisant pas de caractères consécutifs.

(*) En fait, j'aime utiliser moins de 36 caractères - une seule casse, pas de voyelles et pas de caractères similaires (1, l, I). Cela évite les jurons accidentels et permet également à quelqu'un de parler plus facilement de la valeur à quelqu'un d'autre. Je mappe même des caractères similaires les uns aux autres, en acceptant "0" pour "O". Si vous êtes entièrement basé sur une machine, vous pouvez utiliser des majuscules et des minuscules et tous les chiffres pour encore plus de possibilités.