sql >> Databáze >  >> RDS >> Mysql

Vytvoření vlastní TinyURL

Malí lidé s url rádi používají náhodné tokeny, protože pak nemůžete jen trollovat malé odkazy URL. "Kam jde #2?" "Ach, super!" "Kam jde #3?" "Ještě chladnější!" Můžete zadat náhodné znaky, ale je nepravděpodobné, že narazíte na platnou hodnotu.

Vzhledem k tomu, že klíč je poměrně řídký (4 hodnoty, z nichž každá má 36* možností, vám dává 1 679 616 jedinečných hodnot, 5 vám dává 60 466 176), šance na kolize je malá (ve skutečnosti je to žádaná součást návrhu) a dobrý index SQL zajistí vyhledávání je triviální (ve skutečnosti je to primární vyhledávání adresy URL, takže se kolem ní optimalizují).

Pokud se opravdu chcete vyhnout vyhledávání a prostě zrušit automatické zvýšení, můžete vytvořit funkci, která změní celé číslo na řetězec zdánlivě náhodných znaků se schopností zpětného převodu. Takže "1" se stane "54jcdn" a "2" se stane "pqmw21". Podobné jako kódování Base64, ale nepoužívá po sobě jdoucí znaky.

(*) Ve skutečnosti rád používám méně než 36 znaků – jednomístná, žádné samohlásky a žádné podobné znaky (1, l, I). Tím se zabrání náhodným nadávkám a také to někomu usnadní sdělit hodnotu někomu jinému. Dokonce si navzájem mapuji podobné znaky a akceptuji „0“ za „O“. Pokud jste zcela strojní, můžete použít velká a malá písmena a všechny číslice pro ještě větší možnosti.



  1. Sloupec SQLAlchemy JSON - jak provést dotaz obsahuje

  2. Oracle SQL Developer 21.4.2 a SQLcl 21.4.1 jsou nyní k dispozici

  3. Limit podmínky MySQL IN

  4. Získání maximální hodnoty z řádků a připojení k jiné tabulce