sql >> Database >  >> RDS >> Mysql

Je eigen TinyURL maken

De kleine url-mensen gebruiken graag willekeurige tokens omdat je dan niet zomaar de kleine url-links kunt trollen. "Waar gaat #2 naartoe?" "O, gaaf!" "Waar gaat #3 heen?" "Nog cooler!" Je kunt willekeurige tekens typen, maar het is onwaarschijnlijk dat je een geldige waarde zult vinden.

Aangezien de sleutel vrij schaars is (4 waarden met elk 36* mogelijkheden geeft u 1.679.616 unieke waarden, 5 geeft u 60.466.176) is de kans op botsingen klein (het is inderdaad een gewenst onderdeel van het ontwerp) en een goede SQL-index zal de lookup triviaal zijn (inderdaad, het is de primaire lookup voor de url, dus optimaliseren ze eromheen).

Als je het opzoeken echt wilt vermijden en auto-increment gewoon wilt uitschakelen, kun je een functie maken die een geheel getal verandert in een reeks schijnbaar willekeurige tekens met de mogelijkheid om terug te converteren. Dus "1" wordt "54jcdn" en "2" wordt "pqmw21". Vergelijkbaar met Base64-codering, maar zonder opeenvolgende tekens.

(*) Ik gebruik eigenlijk graag minder dan 36 karakters -- enkelvoudige letters, geen klinkers en geen gelijkaardige karakters (1, l, I). Dit voorkomt onbedoelde scheldwoorden en maakt het ook gemakkelijker voor iemand om de waarde tegen iemand anders uit te spreken. Ik breng zelfs vergelijkbare karakters aan elkaar in kaart en accepteer "0" voor "O". Als je volledig machinegebaseerd bent, kun je hoofdletters en kleine letters en alle cijfers gebruiken voor nog meer mogelijkheden.



  1. MySQL-tabel voor breedtegraad en lengtegraad

  2. Hoe kunnen we gegevens verzenden in MySQL als het formulier is ingesteld op enctype=multipart/form-data in node.js?

  3. CTE-recursie om boomhiërarchie te krijgen

  4. Gegevens in tabel invoegen met resultaat van een andere selectiequery