URL-förkortningar dök till en början upp pga Twitters längdbegränsning. De har en annan applikation i när man t ex ska skriva en länk i handskrift/SMS/etc. och inte vill skriva 60+ tecken eller att den som ska titta på länken ska behöva göra detsamma.
Det är rätt irriterande att hitta förkortade URL:er på ställen när det inte hade "behövts". Det finns en stor poäng i att kunna se vilken domän en länk tillhör när man avgör huruvida man vill klicka eller ej (notera dock att t ex både goo.gl och bit.ly tillåter att man lägger till "+" på slutet av länken för att få se statistik och vart den pekar).
För att återgå till just denna implementation så är ju poängen att länkarna just ska kortas ned, så algoritmen som skapar indexet ska ju helst generera korta länkar — så korta som möjligt.
Väljer man förkortningar innehållandes t ex case-sensitive a–Z samt 0–9 får man ~ (26 ⋅ 2 + 10)ᴺ = 62ᴺ möjligheter för N tecken, dvs ~1 miljard för fem tecken, 57 miljarder för 6 tecken, 3.5 biljoner för 7 tecken osv. I praktiken så kanske man vill skippa tecken som ser likartade ut, t ex [lI1], [O0], [S5], [B8], vilket i detta fall skulle få ner det till 53 användbara tecken, vilket fortfarande ger en halv miljard för 5 tecken och utvecklas exponentiellt vidare.
Ett sätt är att helt enkelt ha en databas med en INT-ID-kolumn som inkrementeras för varje långlänk som läggs till, där kortlänktexten konverteras med base(N) med vald teckenuppsättning som representation, och vice versa vid uppslagning.
Innan en ny länk läggs till så kan man kontrollera att den inte redan finns (indexering på länktextfältet för att undvika O(n)) och isf returnera samma länktext. Att hålla detta fulltextindex kostar utrymme och vid sökning I/O och CPU, så för prestanda kan man göra nya länkar även för dubbletter.
Fler kolumner än ID och LINK som kan vara intressanta är
en TIMESTAMP för när länken lades till,
ett användar-ID om man vill låta personer ha ett konto där de kan se sina tillagda länkar,
en räknare som inkrementeras varje gång länken används för statistik,
etc.
goo.gl, bit.ly, etc använder liknande tekniker och ger en maxlängd på URL:er på runt 12 tecken (exkl "http://"). wantto.redirectme.net blir med samma beräkning runt 27 tecken med en smart algoritm, så det blir nog svårt att konkurrera i nuläget . Men det hindrar ju verkligen inte att ha det som ett roligt sidoprojekt för att lära sig.
EDIT: Kom på ett ställe till där URL-förkortningar använts: för att rensa referer-fältet (och annat) när en domän inte vill "avslöja" varifrån användarna hittat en viss länk. Det finns andra tjänster (t ex anonym.to) som är specialiserade på just detta på ett enklare sätt, men förkortningstjänster fungerar också.