sql >> Database teknologi >  >> RDS >> Mysql

Oprettelse af din egen TinyURL

De bittesmå url-folk kan godt lide at bruge tilfældige tokens, for så kan du ikke bare trolde de bittesmå url-links. "Hvor bliver nr. 2 af?" "Oh sejt!" "Hvor bliver #3 af?" "Endnu køligere!" Du kan indtaste tilfældige tegn, men det er usandsynligt, at du rammer en gyldig værdi.

Da nøglen er ret sparsom (4 værdier med hver 36* muligheder giver dig 1.679.616 unikke værdier, 5 giver dig 60.466.176) er chancen for kollisioner lille (det er faktisk en ønsket del af designet), og et godt SQL-indeks vil gøre opslag være trivielt (det er faktisk det primære opslag for url'en, så de optimerer omkring det).

Hvis du virkelig vil undgå opslaget og bare fjerne automatisk stigning, kan du oprette en funktion, der forvandler et heltal til en streng af tilsyneladende tilfældige tegn med mulighed for at konvertere tilbage. Så "1" bliver til "54jcdn" og "2" bliver til "pqmw21". Svarer til Base64-kodning, men bruger ikke fortløbende tegn.

(*) Jeg kan faktisk godt lide at bruge mindre end 36 tegn -- enkelt-bogstaver, ingen vokaler og ingen lignende tegn (1, l, I). Dette forhindrer utilsigtede bandeord og gør det også lettere for nogen at tale værdien til en anden. Jeg kortlægger endda lignende karakterer til hinanden og accepterer "0" for "O". Hvis du er helt maskinbaseret, kan du bruge store og små bogstaver og alle cifre for endnu større muligheder.



  1. MariaDB UNDTAGET Operatør forklaret

  2. hvordan man undslipper skilletegnet fra kolonneindholdet ved eksport af csv

  3. Hvorfor fusionerede PostgreSQL brugere og grupper til roller?

  4. Laravel $q->where() mellem datoer