Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozwiązanie dla dużego zbioru danych statystycznych, Wybór bazy i struktury, rozważania o algorytmach i strukturach
mathijas
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 1
Dołączył: 9.10.2008

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


Witam,

Czy ktoś może ma doświadczenie i chciałby się podzielić w takiej sytuacji jak przedstawiam poniżej?

Mam (ciągle rosnącą) bazę danych pochodzących z kilkunastu różnych źródeł. Dane te z każdego źródła standaryzuję i upycham do jednej tabeli celem dalszej obróbki i przygotowania danych pod wykresy. Dane te rozróżnialne są przez pięć kolumn charakterystycznych: id źródła, data wpisu, id elementu którego dane dotyczą, typ i kraj, nazwijmy je col1..col5. Czyli tabelka wygląda tak:
id,col1,col2,col3,col4,col5,further_columns_with_data_to_show

Tyle backendu.

Od strony użytkownika to wygląda tak, że może wybrać zakres dat, jeden/kilka/wszystkie elementy, jeden/kilka/wszystkie kraje, jeden/kilka/wszystkie źródła i ewentualnie rozróżnić je po typach, klika "go!" i dostaje wykres iluś serii. Dodatkowo, może zechcieć zsumować dane po którejś kolumnie, na przykład chce mieć wykres z jedną serią dla każdego elementu (skumulowane kraje i źródła). Jedyne czego się nie da zsumować to daty - wykres zawsze jest dzień po dniu.

Tyle frontendu.

Wracając do bazy danych. Przygotowałem indeksy na tej tabeli pozwalające na wyświetlenie danych w "wybieraczkach" oraz jeden indeks do wyciągania danych, zawierajacy dane do wyświetlenia (celem przyspieszenia obliczeń). Wszystko działa w miarę sprawnie, to znaczy czas wykonania zapytania waha się, w zalezności od wybranych danych 0.1s-3s. Wierszy obecnie jest ponad 20mln. Wszystkie zapytania wykorzystują indeks, widać jego pracę itd.

Pytanie teoretyczne brzmi: jak to można przyspieszyć? Jaką użyć bazę, jak ułożyć struktury? Pomysły? Może przenieść to do plików i grep|awk? Albo Mongo? Pre-liczenie danych do wyświetlenia i redundancja?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.09.2025 - 21:05