sql >> Base de Datos >  >> RDS >> Mysql

Creando tu propia TinyURL

A la gente de URL minúsculas le gusta usar tokens aleatorios porque entonces no puedes simplemente controlar los enlaces de URL minúsculas. "¿A dónde va el número 2?" "¡Oh, genial!" "¿A dónde va el #3?" "¡Aún más genial!" Puede escribir caracteres aleatorios, pero es poco probable que alcance un valor válido.

Dado que la clave es bastante escasa (4 valores cada uno con 36* posibilidades le da 1,679,616 valores únicos, 5 le da 60,466,176) la posibilidad de colisiones es pequeña (de hecho, es una parte deseada del diseño) y un buen índice SQL hará que la la búsqueda sea trivial (de hecho, es la búsqueda principal de la URL, por lo que la optimizan).

Si realmente desea evitar la búsqueda y simplemente desactivar el incremento automático, puede crear una función que convierta un número entero en una cadena de caracteres aparentemente aleatorios con la capacidad de volver a convertir. Entonces "1" se convierte en "54jcdn" y "2" se convierte en "pqmw21". Similar a la codificación Base64, pero sin utilizar caracteres consecutivos.

(*) De hecho, me gusta usar menos de 36 caracteres:en mayúsculas y minúsculas, sin vocales y sin caracteres similares (1, l, I). Esto evita malas palabras accidentales y también facilita que alguien diga el valor a otra persona. Incluso mapeo caracteres similares entre sí, aceptando "0" por "O". Si está completamente basado en máquinas, puede usar mayúsculas y minúsculas y todos los dígitos para obtener posibilidades aún mayores.