Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [DB/MySQL/Eksploracja danych] Zredukowanie danych do naprawdę istotnych
Forum PHP.pl > Forum > Bazy danych > MySQL
fragles
Problem jest taki, że rysuję coś na ekranie za pomocą js i canvas, Dane do tego pobieram z bazy przesyłam do przeglądarki i ona coś tam sobie rysuje.
Wszystko jest dobrze, poza jednym - nadmiarowość danych może zarżnąć przeglądarkę - np jak ktoś sobie zażyczy zestawienia (wykresu) z miesiąca to w bazie jest to kilkaset tyś wartości.

Stąd pomysł aby jakos te punkty obrobić na zasadzie
- jeśi w bazie jest np
x=1 y=1
x=2 y=2
x=3 y=3
x=4 y=4
x=5 y=5

to nie potrzebuję 5 punktów, a jedynie dwa,czyli 60% mniej danych, a linia taka jak być powinna. Jak ja tak sobie na piechotę troche posprawdzałem to tych punktów pośrednich (czyli wg mnie niepotrzebnych) jest tyle, że redukcja byłałby co najmniej 80%
Z matematyki/statystyki jestem słaby jak również nie jestem biegły w bardziej zaawansowanych wyszukiwaniach w bazie.
Np tutaj w tym przypadku trzeba by wykrywać współniowości, pobrać punkty na których linia się krzywi i tylko te przesłać. Pomijając sprawy matematyczno/statystyczne, do których sam będę musiał jakoś dotrzeć, to czy baza może wykonać algorytm wyszukiwania, czy raczej PHP - słyszałem (ale tylko słyszałem i nawet nie wiem czy dobrze słyszałem) o czyms takim jak data mining, który z danych zgromadzonych w bazie coś tam sobie wybiera, w tym przypadku szukałoby wspóliniowości

Nie wiem może bzdury piszę - ale na razie szukam pomysłu jak to zrobić, żeby było dobrze bo np jest taki problem
punkty A B C są wsółniowe
punkty C D E są spółliowe
ale już B C D współliniowe nie są
maly_swd
W MySQL -> Group by i avg(), max(), min(), sum().
Zaleznie co chcesz zrobic, do tego przykladu co podales wystarczy grupowanie i avg(), np:

1. raz na godzine robisz zapis do bazy z jakas statystyka
INSERT -> DATA, Godzina -> wartosc

mamy 24 wpisy na dzien x 30dni =.. duzo danych

2. Dla przegladarki i wykresu potrzebujesz 1 wartosc na dzien

SELECT date, AVG(wartosc) as srednia FROM stat WHERE date BETWEEN '2009-05-01' and '2009-05-30' GROUP BY date ORDER BY date

tym sposobem mysql usrednia Ci dane w obrebie jednego dnia i zwraca 30 wartosci

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-2024 Invision Power Services, Inc.