Quanti modelli ci sono in un “URL abbreviato”?

Con l’alfabeto (maiuscolo e minuscolo) + i numeri [a-zA-Z0-9]^5, vengono emessi 916.132.832 modi possibili usando gli hash.
Il valore di hash ottenuto dall’URL corrisponde alla parte variabile dell’URL abbreviato.

La funzione di hash è progettata in modo tale che il valore di hash prenda il valore più unico possibile.
Tuttavia, se la lunghezza (contenuto informativo) della stringa originale non è limitata, possono verificarsi dei conflitti (cioè, lo stesso valore di hash per URL diversi).
Ci sono diverse soluzioni, una delle quali è quella di utilizzare il seguente valore come valore di hash

Uno dei workaround è quello di utilizzare il valore successivo come valore di hash. “E se si usa il valore successivo?” è vero, ma le funzioni hash sono progettate per disperdere il più possibile i valori quando vengono immessi dati simili, in modo che quando si verifica una collisione, il valore successivo è spesso libero.

Quando si crea un URL abbreviato, il processo è il seguente

1. Dalla stringa dell’URL, creare un valore di hash che rientri in un numero esadecimale di 5 cifre (916.132.832).
2. Registra il valore di hash e l’URL in una tabella con colonne (la colonna del valore di hash è la chiave primaria).
3. Se l’URL è già registrato nella tabella
a. Se l’URL è già stato registrato, viene utilizzato il valore di hash.
b. Se l’URL non è registrato, aumentare il valore di hash di uno e provare a registrarlo.

Per ottenere l’URL reale da un URL abbreviato, basta cercarlo in una tabella.
Gli RDB sono progettati per accelerare il processo di identificazione dei record dalle chiavi primarie.

Poiché il processo viene fatto mentre si cerca spazio libero nella tabella di registrazione, non si esaurirà il numero di 916.132.832 fino a quando non saranno esauriti tutti, ma se ci sono molte collisioni di hash, le prestazioni diminuiranno.
Tuttavia, questa “performance” è solo relativa alla registrazione degli URL abbreviati, e non ha alcun effetto sul processo di ricerca, quindi, a causa della natura del servizio, è sufficiente fino a quando tutte le 9,1 miliardi di combinazioni sono esaurite.

Anche se il numero è esaurito, il numero di combinazioni possibili può essere aumentato aggiungendo un carattere o una cifra in più.