Avatar billede Jonas Nybegynder
08. oktober 2011 - 10:32 Der er 4 kommentarer og
1 løsning

Begynder: close connections - bedste løsning?

Hejsa, jeg er ved at forsøge (bare for at lære) at kode et program der går ind og grabber data i nogle ofte opdaterede filer. Det data den grabber, det smider den ind i en mysql database og gemmer... Jeg har en idé om at jeg vil køre metoden der grabber dataen ca. hvert 30. sekund hele dagen... Dvs. temmelig mange connections.

Jeg er lidt i tvivl om jeg presser systemet med for mange jdbc connections. Derfor vil jeg høre, hvad den mest optimale løsning er?

Pt. starter jeg metoden med at åbne database forbindelsen. Dernæst har jeg en try-metode, som slutter af med en finally der lukker forbindelsen. Metoden kaldes som sagt hvert 30. sekund.

Er der en bedre måde? Jeg er temmelig begynder, så det må gerne være simpelt... Jeg har læst om connection pools, men jeg har separeret min databaseforbindelse i en anden metode...
Avatar billede Slettet bruger
08. oktober 2011 - 14:39 #1
Det lyder som om du kun har behov for én forbindelse til databasen ad gangen, så jeg ser ikke nogen grund til at bruge connection pools. Jeg tror heller ikke du belaster din db synderligt ved at åbne/lukke forbindelsen hvert 30. sekund.
Alternativt kan du bare lade den være åben hele tiden. Det kan ske at forbindelsen dør af den ene eller anden grund, men det kan du fange i en try-catch og så åbne en ny forbindelse.
Avatar billede arne_v Ekspert
08. oktober 2011 - 17:44 #2
Det vigtigste er at faa closet connection.

Start med det som du har nu: open, opdater, close hver gang du skal opdatere.

Der sker en hel naar man aabner en database forbindelse - saa det tager "lang tid".

Men:
- "lang tid" er sammenlignet med simple data operationer og i den sammenhaeng er 30 sekunder "meget lang tid", saa det kan sagtens taenkes at det slet ikke er et problem
- MySQL har ry for at vaere en af de databaser hvor det at aabne en forbindelse er hurtigst (formentligt fordi at man sjaeldent bruger database connection pool i PHP, saa der har vaeret et pres fra den store gruppe af PHP+MySQL brugere m at det skulle vaere hurtigt)

Hvis du kan maale (altsaa ikke subjektivt "tror" men objektivt "maale") at der er et problem, saa skal du kigge paa alternativer.

A) en permanent aaben connection

Det er helt fint for desktop apps eller single threaded server apps.

Det duer ikke i multithreaded server apps.

Det er ret nemt, men man skal bare huske ikke at goere det til en vane som man bringer med over i server verdenen.

B) database connection pool

Det duer til det hele.

Men kraever lidt mere kode maessigt / konfigurations maessigt.

Java EE servere kommer med support for konfiguration af database connection pool.

For Java SE apps skal man selv skrive lidt kode.

Hvis man bruger Apache Commons Connection Pool, saa skal man skrive 4 linier ekstra.
Avatar billede Jonas Nybegynder
10. oktober 2011 - 08:46 #3
Spændende svar i begge giver... Tak for hjælpen... Gider i begge smide et svar - så får i pointene!
Avatar billede arne_v Ekspert
10. oktober 2011 - 16:22 #4
svar
Avatar billede Slettet bruger
10. oktober 2011 - 17:56 #5
jeg springer over
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester