Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Portal społecznościowy a użytkownicy, Jak ugryźć tabele
njp
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 14.01.2011

Ostrzeżenie: (0%)
-----


Witam,

zastanawiam się jak najlepiej rozwiązać taki problem:

Powiedzmy, że portal będzie miał 1 milion użytkowników (każdy założy konto) - wtedy w tabeli użytkownicy będę miał 1 milion wpisów. Nawet nie tak źle jak potem będzie trzeba coś z tego wyciągnąć, ale powiedzmy, że mamy wyszukiwarkę i tworzona jest historia zapytań do wyszukiwarki dla każdego użytkownika i każdy będzie mógł sobie zobaczyć czego szukał kiedyś tam smile.gif w czerwcu czy w lipcu tego a tego dnia.

Stworzenie tabeli Historia wpisów(wpis, id usera), która może mieć w ten sposób wpisów ogrom, bo 1 milion użytkowników razy powiedzmy 10 czy 20 czy 40 zapytań (sobie każdy wpisze), to już stwarza pewne problemy jak potem będę szukał SELECTEM wpisy dla konkretnego usera...

Zrezygnowałem z MySQLa, na rzecz Postgresa, ale boli mnie fakt jednej tabeli która dość szybko będzie przybierać na wpisach, czy tabeli która z założenia będzie miała miliony wpisów, szukanie po niej nie jest łatwe.

Myślałem o bazie MongoDB, wtedy bym miał wszystko trzymane dokumentowo, ale szukanie konkretnego usera jak bedzie ich "ho ho" to tez nie wydaje się być dobre.

Gdzie mogę szukać - jak ugryźć optymalizację dla portali społecznościowych przy takim problemie?

Pozdrawiam
Radosław
Go to the top of the page
+Quote Post
Rid
post
Post #2





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

Ostrzeżenie: (0%)
-----


Trzeb chyba powiedzieć,że tak duże ,bazy i duże zainteresowanie użytkowników i ich duża liczba,nie opiera się na jednym serwerze,opierają już się wtedy na kilku serwerach bazodanowych,lustrzanych,pomocniczych.
Wyobraża sobie Pan Facebooka na jednym serwerze bazodanowym?questionmark.gif
Go to the top of the page
+Quote Post
c3zi
post
Post #3





Grupa: Zarejestrowani
Postów: 266
Pomógł: 20
Dołączył: 15.11.2006
Skąd: Koszalin

Ostrzeżenie: (0%)
-----


Do wyszukiwania możesz użyć sphinx'a. W cronie co np. 20 minut będzie przebudowywał indeksy. Jeżeli posiadasz tabelkę z historią zdarzeń użytkownika i rzeczywiście przewidujesz tutaj problem z wydajnością jest kilka rozwiązań.
Możesz zainwestować w więcej serwerów, zaimplementować mechanizm master/slave.
Możesz takową tabelkę podzielić na kilka mniejszych. W każdej zapisywać wybrane grupy zdarzeń.
itp. itd.


--------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Go to the top of the page
+Quote Post
gothye
post
Post #4





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


Sphinx Tak ! ,ale indeksowanie co 20 min ? pomyłka , co minutę przy takej ilości userów ,i nie jeden sphinx ale co najmniej 2 serwery (master i slave)
Przy ilości 1mln użytkowników zacznij "kubełkować" użytkowników ,np wiadomości miedzy uzytkownikami na np. 16 baz danych , to w której bazie wyląduje wiadomość użytkownika zależy od modulo % 16 (ilości baz)

sam sphinx zoptymalizuje profile użytkowników (ponieważ przy indeksowaniu trzyma je w pamięci ram ,nie na dysku przyspieszając wyszukiwanie)
kolejna sprawa to cache ,a jak cachowanie to memcache (co najmniej też w ilości min.2 szt.) w zależności od tego jakie funkcjonalności chcesz posiadać w serwisie


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jeśli masz bazkę już dużą, to zanim zaczniesz motać się z bardzo zaawansowanymi rozwiązaniami, już wkraczającymi w sferę sprzętowa, przemyśl wpierw tak zwane partycjonowanie tabel.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:21