Struktura serwerow gigantow takich jak Google czy Microsoft

0

Dzień dobry,
<font size="4">•</span>od dłuższego czasu zastanawiam się jak to możliwe, ze giganci internetowi potrafią gromadzić setki tysięcy terabajtów na swoich serwerach, a to wszystko jest w stanie w rozsądnym czasie współgrać.
Zacząłem o tym szukać, znalazłem m.in. bazę słownikową, tj. google np. przechowuje slowa kluczowe zaczynajace sie na a na innym serverze, na b na innym. Ale jak to wyglada w praktyce?
Jest serwer główny, ktory ma co, żeby to wszystko działało? Na razie, jedyne co mi przychodzi do głowy to to, że np. na pierwszym serwerze mają tabele np. bases, w niej pola zakres i ip, zakres to np. a, lub nawet ab, bo przecież na pewno słowa na a nie zmieściłyby się na jednym serwerze.

Ale jak to się dzieje, że w ciagu sekundy mają 2mln zapytań, a te wszystkie zapytania korzystają z tych samych baz.

Zmierzam do tego jak wyglądają strony hostowane na wielu fizycznych serwerach.
Czy to wszystko sprowadza się do wydajnego algorytmu synchronizowania poszczególnych baz?

Załóżmy, że rejestruję się na youtube.com, co dzieje się z danymi o moim koncie? Jak myślicie, są przechowywane na jednym serwerze, czy sa rozprzestrzeniane po wielu na świecie po to, aby zapobiec możliwości niezalogowania się?

<font size="4">•</span>Drugie pytanko, znacie może jakieś źródło informacji o mysql o stopniu średnim, średnio-zaawansowanym? Chodzi mi o to, żeby np. nauczyć się wykorzystywać aliasy w optymalizacji pojedynczych zapytań mających w sobie kilka podzapytań, w których coś można by wyciągnąć przed nawias (chodzi mi o to, żeby liczyć to tylko raz).
Podam przykład: załóżmy, że zapytanie (SELECT id, pojemnik, funkcja(a,b,c,d) as f FROM TABELA [where|having?] f<2^80) jest zapytaniem, które nie powinno być przechowywane w statycznej tabeli, tylko chciałbym, aby było ono obliczane dynamicznie.
Chciałbym wykorzystać je w zapytaniu:

to samo zapytanie, tylko pokolorowanie zgodnie z logiką, tag code=sql to uniemożliwiał

select id, pojemnik, (select group_concat(f separator ';') from (SELECT id, pojemnik, funkcja(a,b,c,d) as f FROM TABELA where f<2^80)b WHERE b.id=a.id and a.pojemnik=b.pojemnik)
FROM(SELECT id, pojemnik, funkcja(a,b,c,d) as f FROM TABELA where f<2^80)

Ogólnie, chodzi mi o to, że pogrubione zapytanie można by "zaaliasować", czyli najprościej mówiąc
Jak zrobić tak, żeby zapytanie

<font size="4">SELECT</span> id,pole, (select group_concat(pole) from (select * from table where f(pole)<2 ) c WHERE c.id=b.id) <font size="4">FROM</span> (select * from table where f(pole)<2 ) b

zapisać jako

<font size="4">SELECT</span> id,pole, (select group_concat(pole) from A c WHERE c.id=b.id) <font size="4">FROM</span> ((select * from table where f(pole)<2 )A) b
</b></b></span>

0

Jesli chodzi o google'a, to maja wlasny rozproszony system plikow nazwany GFS ( Google File System). Poczytac mozesz troche pod tym linkiem http://labs.google.com/papers/gfs.html oraz slajdy z wykladow google'a: http://www.ii.uni.wroc.pl/cms/files/GFS.pdf

Dane sa natomiast trzymane w strukturze ktora sie nazywa Big Table link: http://labs.google.com/papers/bigtable.html i materialy z wykladow: http://www.ii.uni.wroc.pl/cms/files/bigtable-uw.ppt

Istnieje tez darmowy dostepny soft ktory realizuje rozproszony system plikow o nazwie Hadoop http://hadoop.apache.org/

1 użytkowników online, w tym zalogowanych: 0, gości: 1