Mysql
 sql >> Database >  >> RDS >> Mysql

Creare il tuo TinyURL

Alle persone di piccoli URL piace usare token casuali perché in questo modo non puoi semplicemente trollare i minuscoli collegamenti di URL. "Dove va il numero 2?" "Oh, bello!" "Dove va il numero 3?" "Ancora più bello!" Puoi digitare caratteri casuali ma è improbabile che raggiunga un valore valido.

Poiché la chiave è piuttosto scarsa (4 valori ciascuno con 36* possibilità ti danno 1.679.616 valori univoci, 5 ti dà 60.466.176) la possibilità di collisioni è piccola (anzi, è una parte desiderata del progetto) e un buon indice SQL renderà il la ricerca deve essere banale (in effetti, è la ricerca principale per l'URL, quindi ottimizzano attorno ad esso).

Se vuoi davvero evitare la ricerca e annullare l'autoincremento, puoi creare una funzione che trasforma un numero intero in una stringa di caratteri apparentemente casuali con la possibilità di riconvertire. Quindi "1" diventa "54jcdn" e "2" diventa "pqmw21". Simile alla codifica Base64, ma non utilizza caratteri consecutivi.

(*) In realtà mi piace usare meno di 36 caratteri -- maiuscolo singolo, senza vocali e senza caratteri simili (1, l, I). Ciò impedisce parolacce accidentali e rende anche più facile per qualcuno parlare del valore a qualcun altro. Mappo anche caratteri simili tra loro, accettando "0" per "O". Se sei interamente basato su una macchina, puoi usare maiuscole e minuscole e tutte le cifre per possibilità ancora maggiori.