Quantos padrões existem em um “URL abreviado”?

Com o alfabeto (letras maiúsculas e minúsculas) + números [a-zA-Z0-9]^5, 916.132.832 formas possíveis são emitidas usando hashes.
O valor do hash obtido da URL corresponde à parte variável da URL abreviada.

A função hash é projetada de tal forma que o valor hash toma um valor tão único quanto possível.
Entretanto, se o comprimento (conteúdo de informação) da cadeia original não for limitado, podem ocorrer conflitos (ou seja, o mesmo valor de hash para URLs diferentes).
Há várias soluções, uma das quais é usar o seguinte valor como valor de hash

Uma das soluções é usar o próximo valor como o valor do hash. “E se o próximo valor for usado?” é verdade, mas as funções de hash são projetadas para dispersar os valores o máximo possível quando dados semelhantes são inseridos, de modo que, quando ocorre uma colisão, o próximo valor é muitas vezes livre.

Ao criar uma URL abreviada, o processo é o seguinte

1. A partir da cadeia de URL, criar um valor de hash que se encaixe em um número hexadecimal de 5 dígitos (916.132.832).
2. Registrar o valor de hash e URL em uma tabela com colunas (a coluna de valor de hash é a chave primária).
3. Se a URL já estiver registrada na tabela
a. Se a URL já tiver sido registrada, o valor do hash é usado.
b. Se a URL não estiver registrada, aumente o valor de hash em um e tente registrá-la.

Para obter a URL real de uma URL reduzida, basta procurá-la em uma tabela.
As RDBs são projetadas para acelerar o processo de identificação de registros a partir de chaves primárias.

Como o processo é feito enquanto se procura por espaço livre na tabela de registro, não se esgotará de 916.132.832 até que todos eles estejam esgotados, mas se houver muitas colisões de hash, o desempenho irá diminuir.
Entretanto, este “desempenho” está apenas relacionado ao registro de URLs abreviadas, e não tem efeito no processo de busca, portanto, devido à natureza do serviço, é suficiente até que todas as 9,1 bilhões de combinações sejam esgotadas.

Mesmo que o número se esgote, o número de combinações possíveis pode ser aumentado pela adição de mais um caracter ou mais um dígito.