Podle specifikace DNS maximální délka názvu domény je :
255 * 3 =765 <767 (Sotva :-) )
Všimněte si však, že každá součást může mít pouze 63 znaků.
Navrhoval bych tedy rozdělit adresu URL na jednotlivé bity.
Asi by to stačilo:
- příznak protokolu ["http" -> 0 ] (uložte "http" jako 0, "https" jako 1 atd.)
- subdoména ["foo" ] (255 - 63 =192 znaků:mohl bych odečíst ještě 2, protože min tld jsou 2 znaky)
- doména ["příklad"], ( 63 znaků)
- tld ["com"] ( 4 znaky pro zpracování "info" tld )
- cesta [ "a/skutečně/dlouhá/cesta" ] ( jak dlouho chcete -uložte do samostatné tabulky )
- parametry dotazu ["with=lots&of=query¶meters=that&goes=on&forever&and=ever" ] ( ukládat do samostatné tabulky klíč/hodnota )
- Číslo portu / autentizační položky, které se používají zřídka, mohou být v případě potřeby v samostatné klíčové tabulce.
To vám dává několik pěkných výhod:
- Index je pouze na těch částech adresy URL, na kterých je třeba hledat (menší index!)
- dotazy lze omezit na různé části adresy URL (každou adresu URL najdete například v doméně facebooku)
- všechny adresy URL, které mají příliš dlouhou subdoménu/doménu, jsou falešné
- snadno zahodit parametry dotazu.
- snadné vyhledávání názvu domény/tld bez ohledu na malá a velká písmena
- zahoďte syntaxi ("://" za protokolem, "." mezi subdoménou/doménou, doménou/tld, "/" mezi tld a cestou, "?" před dotazem, "&" "=" v dotaz)
- Vyhne se hlavnímu problému s řídkou tabulkou. Většina adres URL nebude mít parametry dotazu ani dlouhé cesty. Pokud jsou tato pole v samostatné tabulce, pak vaše hlavní tabulka nebude mít zásah velikosti. Při provádění dotazů se do paměti vejde více záznamů, a proto rychlejší výkon dotazů.
- (další výhody zde).