Projekt „Nový hledač“

Konfigurace databáze

Komponenty Internetu:
- WWW stránky
-  dokumenty (doc, .pdf …)
-  další komponenty (obrázky, audio, video…)

1. Cena, čas

Jedná se o naprogramování těchto částí:

- stahování (WWW stránky komplet, řešení různých kódů na stránkách, plus dokumenty - .doc. .pdf apod., plus informace o dalších komponentách – název, velikost, štítky, komentáře apod.)

- zpracování (vyzobání potřebných informací ze stažených stránek, dokumentů a dalších komponent, uložení těchto informací do databáze a vyhodnocení dle algoritmu)

- odpovídání (doindexování podle hledaného klíčového slova, klasická obrazovka odpovědi hledače, dvojobrazovky – na jedné polovině výsledky hledání Google nebo Bing, na druhé straně výsledky hledání nového hledače)

Strukturovaný algoritmus, ovládací okna a strukturu databáze dodám ready-made.

12 měsíců by bylo moc, potřeboval bych to za 6. Na druhou stranu budu chápat, pokud se řešení prodlouží skrzevá velkých kvant dat (škálování procesů).

 

2. Objem

Můj odhad potřebného objemu stažených dat.

Domén .cz je cca 700 tisíc, počítejme 1000 stránek na doménu.

Tedy stránek .cz je cca 700 milionů (takový nezávislý odhad jsem viděl).

Odhaduji, že průměrná velikost stránky je 10 kbyte.

Tedy objem stránek na doménách .cz je 700 milionů krát 10 tisíc = 7 terrabyte.

Dále počítejme, že na jiných doménách (.com, .info...) je stejně WWW stránek v češtině, jako je na doménách .cz, tedy také 7 terrabyte.

Počet stránek v češtině ke stažení je cca 0.7 + 0.7 = 1.4 miliardy, objem těchto stránek je cca 7 + 7 = 14 terrabyte.
Tento objem stránek v češtině je pevný a nedá se redukovat.

A počítám, že počet i objem stránek v angličtině podle několika vybraných slov by byl zhruba stejný, jako počet a objem stránek v češtině (jedná se o stažení stránek pro max. 50 klíčových slov).

Počet stránek v angličtině ke stažení je cca 1.4 miliardy, objem těchto stránek je cca 14 terrabyte.
Tento počet i objem stránek v angličtině není pevný a dá se redukovat (podle diskové kapacity a času stahování).

Celkový objem WWW stránek ke stažení je cca 28 terrabyte.

Dokumenty .doc, .pdf apod. Řekněme, že je jich 1/10 počtu WWW stránek a jejich velikost je průměrně 10 x velikost stránky, tedy 100 kilobyte.

Objem stažených dokumentů by byl tedy stejný, jako objem stažených WWW stránek, tedy 28 terrabyte.
Tento objem dokumentů není pevný a dá se redukovat (podle diskové kapacity a času stahování), teoreticky až snížit na nulu.

Plus údaje o dalších komponentách (obrázky apod.), řekněme 100 komponent na stránce, ukládal by se název a velikost, takže řekněme 30 byte na komponent.
Počet dalších komponent je tedy 2.8 x 100 = 280 miliard, objem stažených informací o dalších komponentách by byl 280 miliard x 30 = 8.4 terrabyte.

Celkem ke stažení: 2.8 miliard WWW stránek, 0.28 miliard dokumentů, 280 miliard dalších komponent = celkem cca 283 miliard komponent Netu.

Objem: 28 terrabyte WWW stránek, 28 terrabyte dokumentů, 8.4 terrabyte informací o dalších komponentách = celkem cca 65 terrabyte.

 

3. Stahování

Pokud by se 65 terrabyte stahovalo rychlostí 1 gigabit za sekundu,

jednalo by se celkem o (65 terra / 1 giga) x 8 bitů = 520000 sekund, tedy cca 144 hodin, tedy cca 6 dní.

Pokud by se stahovalo jen v noci, aby se ve dne neblokovala linka providera, tedy od 10 večer do 6 ráno, pak je to 8 hodin denně, tedy 3 krát více, tedy 3 x 6 = 18 dní.

Specielně zde se mi to zdá dost málo, takže, prosím, prověřte můj výpočet.

Také by to znamenalo, že po stažení a zpracování do databáze by se mohly zdrojáky WWW stránek apod. smazat a tím diskový prostor uvolnit, přičemž by se dle potřeby daly případně stahnout znovu.

Samozřejmě by se to muselo rozdělit na procesy, které budou iniciovat stahování, které budou provádět vlastní stahování a které budou zapisovat na disk plus rozškálovat mezi N (100?) stahovacích procesů, takže celkem odhadem 3 x 100 procesů, tak, aby se skoro pořád stahovalo. Zápisová rychlost na disky je, myslím, také kolem 1 gigabitu za sekundu, takže to by odpovídalo.

Podle mého odhadu by tohle zvládl server střední konfigurace, pokud ne, bylo by možné počet procesů snížit, případně navýšit konfiguraci serveru nebo to rozdělit na několik serverů.

 

4. Kódování

Jak by to bylo s kódováním. Samozřejmě stránky mají různý kód, windows, ascii, utf...

Dokážete tohle převést na jeden kód, ve kterém by se to ukládalo do stažených stránek na disk?

 

5. Zip

Zazipování nebo rar sníží objem dat cca 5x, tedy pak by se jednalo o diskovou kapacitu 65 terrabyte / 5 = 13 terrabyte.

Myslíte, že by se ty stažené stránky daly zazipovat nebo rar?

Jak dlouho by to trvalo při ukládání (zip) a následném zpracování (unzip)?

Dokázal byste to zazipování naprogramovat nebo je pro to hotový nějaký program či podprogram?

Myslím si, že by to byla asi nutnost, protože diskové pole okolo 65 terrabyte by bylo dost obtížně dosažitelné, zatímco diskové pole až 20 terrabyte není podstatný problém.

 

6. Databáze

Předpokládám 30 základních údajů o WWW stránce, uložených v reálných číslech v přesnosti na na 4 bytech (?). Plus stejný počet údajů o množinách, kterých je ale odhadem 10x méně než WWW stránek.

To by byl celkový počet údajů: 30 údajů x (2.8 miliardy stránek + 0.28 miliard množin) = 30 x 3.08 = 92.4 miliard, objem údajů 92.4 x 4 byty = cca 370 Gbyte.
Plus samozřejmě interní pointery databáze k těmto ůdajům, počítejme 4 byty na pointer, tedy pointery jsou 370 Gbyte.
Celkem objem data plus pointery cca 370 + 370 = 740 Gbyte..

To je skoro zanedbatelné, to by s přehledem vyřešil jeden 2 terrabyte disk.

Plus uložení pointerů na texty, např. že "Lednice" je na stránce číslo 128 na pozicích 5, 27, 43.

Počítejme, že čeština má 100 tisíc jednoslovných slov po 10 písmenech, tedy uložení "všech" českých slov ve znakové podobě je 1 mega, což je zanedbatelné.

Počítejme, že na jedné WWW stránce je průměrně 1000 slov, tedy celkem 2.8 miliardy stránek krát 1000 = počet 2.8 terra pointerů, krát 4 byty na pointer = objem 11.2 terrabyte pointerů.
Plus obdobné pointery ze slov do množin WWW stránek, těch množin je cca jedna desetina počtu WWW stránek, tedy počet pointerů = 2.8 / 10 = 0.28 terra, objem pointerů = 0.28 x 4 = 1.12 terrabyte.

Obdobné pointery na slova v dokumentech, řekněme, že počet dokumentů i objem slov v dokumentech by byl desetinou objemu na WWW stránkách, tedy počet pointerů na dokumenty je 0.28 terra, potřebná disková kapacita by byla 11.2 / 10 = 1.12 = cca 1 terrabyte.

Plus údaje o dalších komponentách, viz výpočet výše, o každé komponentě 2 údaje (název a velikost), počet údajů = 3 x 280 miliard = 840 miliard, objem stažených informací o dalších komponentách by byl 280 miliard x 30 = 8.4 terrabyte.

Celkový počet údajů v databázi: 0.09 + 2.8 + 0.28 + 0.28 + 0.84 = 3,534 terra.
Celkový objem databáze: 0.7 + 11.2 + 1.1 + 1.1 + 8.4 = 22.5 terrabyte, takže bych se vešel do diskového pole 24 terrabyte.

Seznam uvádí, že jeho databáze má 2 terrabyty, což se mi zdá málo (omyl?).

 

7. Zpracování

Jednalo by se o procházení všech komponent, uložených stránek, dokumentů a informací o dalších komponentách, případné odzipování a z každé z nich o výpočet a uložení cca 30 ti údajů.

Počet komponent: 283 miliard.

Objem komponent: 65 terrabyte.

Následně výpočet údajů pro množiny, tedy v podstatě projití údajů z databáze pro jednotlivé komponenty, jejich posšítání a uložení do údajů pro množiny.

 

9. Server

Jaký server by pro to byl vhodný, aby stačil pro stahování a následně i pro zpracování a odpovídání (odpovídání by nebylo masové, jen pro několik lidí).

Podle mne by mohla být základní konfigurace 2 x 4 procesor 2.5 giga plus 8 giga paměti.

Kdyby to nestačilo, tak zvýšit na 4 x 4 procesor plus 16 mega paměti, nebo to rozdělit na víc serverů.