Efektywnosc Servlet'a z Applet'em

0

Witam!
Mam nastepujacy problem: musze napisac aplikacje internetowa ktora w polaczeniu z baza danych (MySQL) bedzie przetwarzac bardzo duza ilosc danych (nie dosc ze danych do przesylania jest okropnie duzo to jeszcze sam proces przetwarzania jest dosc skomplikowany obliczeniowo). Psikus polega na tym zeby to sprawnie dzialalo (boje sie ze np. jesli kilka osob naraz wejdzie na srtonke to kompletnie zamuli to serwer).

Osobiscie wymyslilem sobie takie cos ze baza bedzie obslugiwana przez servlet, ktory pobierze dane i wysle je do appletu, zeby ten nie obciazajac servera wszystko policzyl i wyswietlil.

Nie jestem jednak informatykiem i niezazbytnio sie na tym znam wiec prosze o jakas porade w tym temacie, tzn jaka strategie przyjac zeby smigalo to mozliwie najszybciej.

Z gory dziekuje za wszelkie info.

0

Jeżeli danych jest dużo to samo ich przesyłanie bez obróbki jest złym pomysłem. Lepszym rozwiązaniem jest prowadzenie obliczeń na serwerze przy użyciu oddzielnej aplikacji wywoływanej przez servlet.

Pytanie ile jest tych danych? 1MB 1TB?

0

Może da się przechować w bazie wyniki pośrednie obliczeń, żeby ich nie powtarzać za każdym razem?

0

Pytanie ile jest tych danych? 1MB 1TB?

to sa dane dot. wszystkich spolek notowanych na GPW od poczatku jej istnienia, wiec troche tego jest (w pliku txt zajmuje to ok. 16 MB)

Może da się przechować w bazie wyniki pośrednie obliczeń, żeby ich nie powtarzać za każdym razem?

Da sie, czemu nie... tylko to ma byc aplikacja edukacyjna (modelowanie gieldy papierow wartosciowych) i uzytkownik bedzie mogl dobierac wszystkie parametry (klasa i rzad modelu, stosowane estymatory itp itd) wiec potencjalnie tych posrednich wynikow moze byc nieograniczona liczba :| (choc przyznam ze tez o tym myslalem i moze warto byloby nad tym pomyslem sie zastanowic np. zapisywac najczestrze, najbardziej charakterystyczne ustawienia...)

Jeżeli danych jest dużo to samo ich przesyłanie bez obróbki jest złym pomysłem. Lepszym rozwiązaniem jest prowadzenie obliczeń na serwerze przy użyciu oddzielnej aplikacji wywoływanej przez servlet.

No wlasnie najbardziej sie tego boje ze jak kilka osob wejdzie na stronke, i odpali kilka takich aplikacji na raz to czy nie bedzie serwer zamulal ? bo przeciez taka aplikacja nadal obciaza serwer prawda...?

0

skoro duzo danych jest w bazie, to moze jakas (duza?) czesc obliczen posrednich da sie wykonac po stronie serwera bazy danych jakims ladnym sprytnym sqlem? tam sa juz odpowiednie algorytmy zeby bylo efektywniej

0

...jesli chodzi o przesylanie danych (applet<->servlet) to bylyby to dzienne stopy zwrotow wybranej spolki wiec tablica wartosci rzeczywistych (jakies 2000 elementow); (na zasadzie w applecie uzytkownik wybiera spolke ktora chce modelowac, przekazuje to servletowi, on laczy sie z BD i pobiera stopy zwrotow spolki i wysyla do appletu, ktory z kolei dokonuje wszystkich obliczen i wyswietla...)

0

Ok. to już wiadomo o co chodzi ;)

Po pierwsze trzeba to rozbić na dwa małe projekty. Pierwszy z nich policzy dane historyczne, a potem będzie w schedulerze na serwerze co pewien czas powtarzał obliczenia. W ten sposób dostaniesz bazę gotowych wyników.
Drugi projekt to właściwa aplikacja. Danych nie jest za dużo (dla mnie dużo to powyżej 2GB), ale obliczenia mogą być rzeczywiście dość skomplikowane. Trzeba zatem przyjąć jakąś rozsądną strategię. Moja propozycja to przygotowanie modułu "zapytań standardowych" typu oblicz zadnie za ostatnie n czasu (tydzień, miesiąc, rok, więcej) dla listy l firm. Teraz wybierane są dane z jakiegoś źródła ( i tu po raz pierwszy baza, która trzyma dane) i wstępnie przetwarzane na serwerze (proste sumowania, liczenie średnich i uproszczenia) i odsyłane do klienta by dokończył obliczenia.
Teraz sztuczka. Po dokończeniu obliczeń klient odsyła wyniki na serwer w celu zapisania ich w bazie. Następnie każdy kolejny klient zanim przystąpi do obliczeń może sprawdzić czy nie istnieje już gotowy raport.

0

żebym mial pewnosc ze rozumiem :d :

Rozbijamy to na 2 projekty:

I - tylko po stronie serva (...nie wazne w jakiej postaci: servlet czy aplikacja tak?) przy pierwszym uruchomieniu projektu mieli wszystkie dane dla jakis domyslnych ustawien dla wszystkich spolek i zapisuje wyniki w nazwijmy to "bazie wynikow". Potem systematycznie co jakis okres czasu (np. gdy dojda nowe dane) powtarza cala operacje. [robi to wszystko niezaleznie od II projektu, ktory nie ma na to zadnego wplywu]

II - projekt wlasciwy (po stronie serwera i klienta - wiec rozumiem ze zaproponowane rozwiazanie "servlet<->applet" moze byc?) gdzie: klient "ustawia wszystkie ustawienia" ;-) dotyczace modelowania, wysyla to do servlet'a ktory:
1 - sprawdza czy nie ma juz tego policzonego w "bazie wynikow" jesli jest to odsyla gotowy wynik do klienta/appleta do wyswietlenia
2 - jesli nie to pobiera dane z bazy (wlasciwej BD z notowaniami spolek) dokonuje PRE-obliczen i wysyla do appletu do dalszej obrobki. Po uzyskaniu wyniku applet odsyla go do servletu a ten z kolei zapisuje go do "bazy wynikow"

...nic nie pomylilem :d ???

0

Dobrze zrozumiałeś. Przy czym pierwsza aplikacja ma dwa elementy pierwszy do prowadzenia obliczeń całkowitych drugi przyrostowych za okres od ostatniego odpalenia.
Powiem więcej poczytaj o narzędziu Quartz, a pierwsza aplikacja będzie sobie chodziła w schedulerze :)

Całość można spiąć w jedną większą aplikację, ale to trochę zabawy na koniec jak zostanie czas.

0

OK. Dzieki bardzo w takim razie za wszystkie rady... zobaczymy co mi z tego wszystkiego wyjdzie... ;-P

1 użytkowników online, w tym zalogowanych: 0, gości: 1