Pytanie związane z bazami danych

0

Witam.
Jestem początkującym programistą, ale w swojej karierze mam już dwa całkiem fajne programy w Javie (przy użyciu SWINGa).
Teraz zabieram się za program z bazą danych, znajdującą się na serwerze. Sieć nie jest jakaś specjalnie szybka, stąd moja wątpliwość czy przy dużej ilości zapytań nie będzie to zbyt wolne. Zastanawiam się jak sobie radzić w takich sytuacjach. Macie jakieś ciekawe rozwiązania? Myślałem o czymś takim, że włączając program, automatycznie (ale raz) pobierała się cała baza (klonowała), tak żeby można było pracować szybko. Potem oczywiście na końcu trzebaby to było z powrotem wysłać na sewer...
Stąd moje pytanie do doświadczonych osób. Jak się rozwiązuje takie sprawki? A może baza danych po LAN nie działa tak wolno...

0

moim zdaniem, nic nie zastąpi samodzielnego sprawdzenia rozwiązań :) uważam jednak, że baza danych licząca kilkaset tysięcy rekordów nie powinna być zbyt dużym obciążeniem w sieci, a tym bardziej dla serwera, który Ci tylko wyniki zapytania oddaje :)

0

Niestety jest tak jak się spodziewałem, ale może to ja coś źle robię.
Używam java db (derby) i netbeans. Napisałem prosty program wypełniający JTable danymi z bazy i działa to trochę wolno...
Jakieś pomysły?

0

Witam,
tak się składa ze pisze aplikacje w SWING ktore lacza sie z baza dany ale po sieci internetowej. Przesłanie 100 rekordów na łączu 1Mb trwa około 0.7 sekundy.
Wiec w sieci LAN gdzie przepustowość wynosi 1.000Mb czas byłby 0.0007.

0

Być może robię coś źle z modelem JTable. Wygląda to tak, że mam tabelkę, która przestawia każdy dzień danego miesiąca. Po kliknięciu na przycisk, który powoduje "przejście" do kolejnego miesiąca, załadowanie całej tabelki trwa ok. 2 sekund. To stanowczo za długo.

Robię to w ten sposób, że z widoku w SWING wywołuje klase modelu tabeli, a w niej metodę setValues (moja własna), która opiera się głównie na zapętlonej metodzie setValueAt... Może to jest błąd?

0

pokaz swoj model. podejrzewam ze dla kazdej zmienionej wartosci wysylasz jedno zapytanie, zamiast jednego dla wszystkich zmian

0

Jeszcze mozesz pokazac jak sie laczysz z baza - czy za kazdym razem tworzysz nowe polaczenie (co jest zazwyczaj bardzo drogie) czy faktycznie wina lezy po stronie wolnego neta i ilosci przesylanych danych. W przypadku tego pierwszego zastanow sie nad zapamietaniem Connection na czas trwanai programu zeby sie laczyc tylko raz, a najlepiej zainteresuj sie jakimis pulami polaczen.

0
eeee napisał(a)

pokaz swoj model. podejrzewam ze dla kazdej zmienionej wartosci wysylasz jedno zapytanie, zamiast jednego dla wszystkich zmian

Akurat nie mam dostępu do kodu (będę miał dopiero jutro wieczorem), ale mniej więcej wygląda to tak, że:

1.Metoda setValues (opierająca się na setValueAt) wykonuję pętle tyle razy ile dni ma dany miesiąc.
2. Pętla wypisuje w kolejnym wierszu JTable kolejny dzień miesiąca.
3. Jeśli w bazie danych znajduję sią jakaś wartość przypisana do danego dnia to wypisuje ją przy nim (w kolejne kolumnie)
4. Jeśli w bazie danych nie znajduje się żadna wartość, wykonuje się setValueAt("", rowNr, colNr)

Wydaje mi się, że błęde może być wiersz 4.
Korzystam przy tym z NativeQuery.

0

Zrób sobie taką bazę danych lokalnie i zobacz jak ci program chodzi. Jeżeli będzie mulił tak samo jak z bazą po sieci, to znaczy, że problem jest w kodzie. A jeżeli połączenie z bazą lokalną będzie śmigać szybko to wtedy musisz użyć planu B. Zakładam, że nie jesteś członkiem drużyny A (there is no plan B).

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