Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Statystyki odwiedzin strony
Forum PHP.pl > Forum > Bazy danych
ZaqU
Witam,

Mam problem logistyczny z systemem statystyk. Chciałbym stworzyć dla każdej strony z osobna statystyki odwiedzin uwzględniające: datę i godzinę wejścia, geolokalizację adresu IP, przeglądarkę klienta oraz jego system operacyjny. Tak przygotowane dane mają być przechowywane w bazie, a następnie wyświetlane na stronie w formie wykresu. Tu niestety rodzi się pytanie: w jakiej formie najlepiej zapisywać dane w bazie? Pierwsze co przyszło mi na myśl, to zapisywać każde wejście w osobnym rekordzie, co jednak zrodziło moje wątpliwości - co się stanie, jeśli przykładowo w ciągu dnia na stronę wejdzie 10.000 osób, a każda z nich będzie przechodziła pomiędzy podstronami średnio 10 razy? To daje nam w przeciągu miesiąca 3 mliony odświeżeń strony, a w ciągu roku 36 milionów. Zatem po roku w celu wygenerowania wykresu ze statystykami odwiedzin, będę musiał pobrać z bazy 36 milionów rekordów co jest raczej niewykonalne.

Oczywiście wariant z 36 milionami jest trochę przesadzony, ale taka sytuacja jest możliwa. Jak zatem najlepiej zapisywać tego typu dane w bazie? Jak to robi np. google ze swoimi statystykami (pomijając superwydajne serwery)?

Nigdy czegoś takiego nie robiłem, więc proszę o pomoc. Interesuje mnie wyłącznie technologia PHP i MySQL - nic poza tym nie wchodzi w grę.
toaspzoo
baza: wejscia -> podstrony
| |
specyfikacja_uzytkownika

wejścia w zbliżonym czasie można dopisywać tylko do tabelki podstrony
masahuku
Jak będziesz miał 10.000 wizyt unique dziennie to stać Cię będzie na porządny serwer smile.gif. Jedyne co bym doradził to zrobić jakieś klucze (albo słownik, relacje zamulą przy dużej ilości danych) na user-agent (zadziwiające co potrafią tam przechowywać przeglądarki/ludzie tongue.gif). A jak już naprawdę będzie ciężki ruch to zawsze jakiś no-sql zostaje (np. mongodb).
ano
Najprościej:
Jakiś system kolejkowania (np *MQ) ==> ElasticSearch
- da Ci to super skalowalność i bardzo wysoką wydajność.
Zależy też co chcesz robić dalej z tymi danymi, bo może zamiast ES spodobał by Ci się HBase (i możliwości "współpracy" z Hadoopem).

Poczytaj o MongoDB - w Twoim przypadku to bardzo zły wybór. Prawdopodobnie nie użyjesz żadnych jego zalet a dodatkowo Cię ograniczy tongue.gif
maniek23
Proponuję abyś zajrzał na stronę Web Merrics i poczytał o Google Analitics, na pewno znajdziesz potrzebne informacje.
POzdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.