Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: Statystyki wyświetleń

Robię stronę z katalogiem imprez. Chcę zrobić statystyki wyświetleń dla każdej imprezy z przedziału:
- ostatnie 7 dni
- ostatnie 30 dni
- od początku roku
- w sumie

Pierwszy pomysł to stworzyć tabelkę:

id | impreza_id | data

I zliczanie. Tyle tylko, że załóżmy, że dziennie będzie wpadało do tabelki 100-200 rekordów (insertów) czy nie zapcham jej za szybko?
Czy jest lepsze rozwiązanie?
Tomasz Zadora

Tomasz Zadora programuję

Temat: Statystyki wyświetleń

Nieważne jakie rozwiązanie wybierzesz, musisz mieć miejsce na dane statystyczne.

Możesz je ewentualnie kompresować (ustawić kompresję w tabeli SQL), ale to zły pomysł bo przy wielu insertach to jest duży koszt pracy procesora.

Generalnie struktura tabeli dobra, tylko po co Ci id? Nie wystarczy id imprezy i czas wyświetlenia?

Dodatkowo przeprowadziłbym partycjonowanie tabeli SQL, to powinno przyspieszyć wyszukiwanie - jeżeli się to dobrze zrobi.Ten post został edytowany przez Autora dnia 07.02.14 o godzinie 12:29

Temat: Statystyki wyświetleń

A nie lepiej utworzyć kolumnę z liczbą wyświetleń zwiększającą o 1 za każdym razem na jeden dzień, tzn.

tabela(
liczba_wyswietlen,
data,
)

zapytanie dajesz:
UPDATE tabela
SET liczba_wyswietlen= liczba_wyswietlen+ 1
WHERE data = date(coś tam);

no i masz tylko 365 danych w roku z wartością każdego dnia

Temat: Statystyki wyświetleń

Rafał S.:
Rozwiązanie ma sens w przypadku kiedy nie potrzebuje dokładnej daty i godziny wyświetleń.

Temat: Statystyki wyświetleń

Im dokładniejsze statystyki tym więcej danych :)
Tego się nie ominieTen post został edytowany przez Autora dnia 13.02.14 o godzinie 09:55

konto usunięte

Temat: Statystyki wyświetleń

dobra magicy ile zajmie 365 * 200 rekordów?
ile się liczy widok z agregatem na tym zbiorze dla iluś tam dni wstecz? zakładam że milisekundy więc po co kombinować z update?Ten post został edytowany przez Autora dnia 13.02.14 o godzinie 11:23
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Statystyki wyświetleń

Polecam zapomniec o SQL w kontekscie statystyk i uzyc Apache Cassandra ktore sie do tego nadaje o wiele lepiej, miedzy innymi masz typ counter ktory dziala jak rozproszony licznik i dzieki temu mozesz agregowac dane w czasie rzeczywistym z wydajnoscia znacznie przekraczajaca wydajnosc standardowej bazy mysql przy zapisie.

U siebie mam do kilku milionów "insertów" dziennie i serwer nawet nie pierdnie ;)
Tomasz L.

Tomasz L. Inzynier Systemów
Bezpieczeństwa,
ASCOMP S.A.

Temat: Statystyki wyświetleń

Witaj,

[...] załóżmy, że dziennie będzie wpadało do tabelki 100-200 rekordów (insertów) czy nie zapcham jej za szybko?[...]
Przy takim obciążeniu o jakim piszesz to chyba za 100 lat.

Tabela jaką proponujesz też będzie do takiego zastosowania ok. Oczywiście można stosować cuda na kiju tylko w tym przypadku po co ? Co najwyzej trzeba pamiętać o indeksach. Działaj i powidzenia.

pozdrawiam
Tomasz Zadora

Tomasz Zadora programuję

Temat: Statystyki wyświetleń

Łukasz C.:
Polecam zapomniec o SQL w kontekscie statystyk i uzyc Apache Cassandra ktore sie do tego nadaje o wiele lepiej, miedzy innymi
[...]

hmmm a nie lepiej użyć Apache Hadoop?

Zresztą przy tak małej ilości danych (100-200 insertów dziennie) to spokojnie wystarczy sql...
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Statystyki wyświetleń

Tomasz Z.:
hmmm a nie lepiej użyć Apache Hadoop?
ale hadoop jest frameworkiem glownie do przetwarzania danych (mapreduce) a niekoniecznie do ich zbierania zwlaszcza w czasie rzeczywistym, chociaz pewnie na sile dalo by sie zrobic job ktory inkrementuje liczniki, tylko po co :)

Cassandra doskonale sprawdza sie przy zapisywaniu gigantycznych ilosci danych, co dziala nawet szybciej niz ich odczyt.
Zresztą przy tak małej ilości danych (100-200 insertów dziennie) to spokojnie wystarczy sql...
tru, myslalem ze chodzi o "wieksze" statyTen post został edytowany przez Autora dnia 14.02.14 o godzinie 19:27
Tomasz Zadora

Tomasz Zadora programuję

Temat: Statystyki wyświetleń

Zastanawiam się co byłoby najlepsze gdybyś np. na tych danych które gromadzisz przy pomocy Cassandry chciał teraz wykonać jakieś obliczenia statystyczne które zajmują wiele czasu, a dane cały czas przyrastają w dużym tempie? Jest większy sens robić to w samej Cassandrze, czy zrobić klaster z Hadoopa który to będzie przetwarzał?
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Statystyki wyświetleń

Tomasz Z.:
...
A po co mam przetwarzac szybko przyrastające dane, skoro chwilowe wachania nie wpływają na trend?
Cassandra integruje sie z Hadoopem, polecam poszperać troche na googlach, a co do real world usage to Netflix, firma która stoi na analityce, raczej wie co robi i używa gigantycznego klastra Cassandry do zbierania danych w czasie rzeczywistym to raz, a dwa jak już wczesniej wpominałem, Cassandra umożliwia agregacje danych, więc sporo danych masz "przetwarzanych" w trakcie ich "wpadania". Zauważ, że w przypadku analityki profil używania "bazy" to masa zapisów vs niewielka ilośc odczytów, do tego powstała Cassandra, a hadoop ma sens jak jest masa krytyczna, która uzasadnia jego użycie, np: liczysz rekomendacje dla setek tysięcy użytkowników i wiesz jak to rozproszyć i ten proces i tak nie dzieje sie w czasie rzeczywistym. A sam z siebie hadoop nic nie robi poza systemem plików i managerem zadań. Ewentualną alternatywą dla Cassandry jest HBase.
Tak czy siak, to temat na osobny wątek.

konto usunięte

Temat: Statystyki wyświetleń

Łukasz C.:
Tomasz Z.:
...
A po co mam przetwarzac szybko przyrastające dane, skoro chwilowe wachania nie wpływają na trend?
Cassandra integruje sie z Hadoopem, polecam poszperać troche na googlach, a co do real world usage to Netflix, firma która stoi na analityce, raczej wie co robi i używa gigantycznego klastra Cassandry do zbierania danych w czasie rzeczywistym to raz

wspaniałe działo laserowe do zabicia małej muchy
jest sens?
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Statystyki wyświetleń

Przemysław R.:
Łukasz C.:
wspaniałe działo laserowe do zabicia małej muchy
jest sens?

Hadoop to dzialo laserowe, fakt, ale cassandra wbrew pozorom jest lekka i prosta w instalacji, przynajmniej na jednym / kilku wezlach i prosto integruje sie z php (phpcassa), a wbrew pozorom rozwiazuje bardzo wiele problemów, tak wiec polecam

Następna dyskusja:

Statystyki (nie GA)




Wyślij zaproszenie do