sql >> Databasteknik >  >> RDS >> Mysql

Skapa din egen TinyURL

De små url-folket gillar att använda slumpmässiga tokens för då kan du inte bara trolla de små url-länkarna. "Vart tar nr 2 vägen?" "Åh coolt!" "Vart tar nr 3 vägen?" "Ännu coolare!" Du kan skriva in slumpmässiga tecken men det är osannolikt att du träffar ett giltigt värde.

Eftersom nyckeln är ganska sparsam (4 värden som var och en har 36* möjligheter ger dig 1 679 616 unika värden, 5 ger dig 60 466 176) är chansen för kollisioner liten (det är faktiskt en önskad del av designen) och ett bra SQL-index kommer att göra lookup vara trivial (det är faktiskt den primära uppslagningen för webbadressen så de optimerar runt den).

Om du verkligen vill undvika uppslagningen och bara avaktivera automatisk ökning kan du skapa en funktion som förvandlar ett heltal till en sträng av till synes slumpmässiga tecken med möjligheten att konvertera tillbaka. Så "1" blir "54jcdn" och "2" blir "pqmw21". Liknar Base64-kodning, men använder inte på varandra följande tecken.

(*) Jag gillar faktiskt att använda mindre än 36 tecken -- enkla bokstäver, inga vokaler och inga liknande tecken (1, l, I). Detta förhindrar oavsiktliga svordomar och gör det också lättare för någon att tala om värdet för någon annan. Jag mappar till och med liknande karaktärer till varandra och accepterar "0" för "O". Om du är helt maskinbaserad kan du använda stora och små bokstäver och alla siffror för ännu större möjligheter.



  1. SQL jämförelseoperatör

  2. Kan jag automatiskt skapa en tabell i PostgreSQL från en csv-fil med rubriker?

  3. Kan jag återanvända ett uttryck i en MySQL-fråga som en variabel för ett annat fält?

  4. LEAD och LAG analytiska funktioner