Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Criando seu próprio TinyURL


As pessoas com url minúsculos gostam de usar tokens aleatórios porque então você não pode simplesmente trollar os links de url minúsculos. "Para onde vai o nº 2?" "Oh fixe!" "Para onde vai o nº 3?" "Ainda mais legal!" Você pode digitar caracteres aleatórios, mas é improvável que encontre um valor válido.

Como a chave é bastante esparsa (4 valores cada um com 36* possibilidades lhe dão 1.679.616 valores únicos, 5 lhe dá 60.466.176) a chance de colisões é pequena (na verdade, é uma parte desejada do design) e um bom índice SQL fará com que o pesquisa seja trivial (na verdade, é a pesquisa primária para o URL, então eles otimizam em torno dele).

Se você realmente quiser evitar a pesquisa e apenas desfazer o incremento automático, você pode criar uma função que transforma um inteiro em uma string de caracteres aparentemente aleatórios com a capacidade de converter de volta. Portanto, "1" se torna "54jcdn" e "2" se torna "pqmw21". Semelhante à codificação Base64, mas sem usar caracteres consecutivos.

(*) Na verdade, gosto de usar menos de 36 caracteres - maiúsculas, sem vogais e sem caracteres semelhantes (1, l, I). Isso evita palavrões acidentais e também torna mais fácil para alguém falar o valor para outra pessoa. Eu até mapeio caracteres semelhantes entre si, aceitando "0" por "O". Se você for totalmente baseado em máquina, poderá usar maiúsculas e minúsculas e todos os dígitos para possibilidades ainda maiores.