28. december 2005 - 16:46Der er
22 kommentarer og 1 løsning
Valg af database til Java
Rent performance mæssigt, hvad er så den bedste database form at vælge at arbejde med i Java, og hvordan bruger man den i så fald i Java? De eneste jeg kender til er MySQL og Access.
Hmm...jeg havde regnet med at det var mere simpelt end som så. Ærligt talt kender jeg ikke ret meget til databaser udover Access. Så tja, de fleste af de begreber du nævner kender jeg ikke.
P.g.a. den meget standardiserede tilgang så er Java nok et af de environments hvor det er nemmest at skifte database, så måske skulle du starte med MySQL og se hvordan det går. Du kender den database og hvis du skal skifte senere så er det ikke så vanskeligt.
Undgå Access. MS har ikke lavet en JDBC driver til Access så det er app---JDBC ODBC bridge---ODBC driver---Access og det virker dårligt.
Ja, Access havde jeg heller ikke regnet med at bruge, men det er stort set det jeg er bekendt med. Men jeg kan høre at jeg har en del begreber jeg skal have lært, kender du nogle gode steder til at lære Java og databaser? Jeg aner intet om det.
Nu spørger du jo godt nok om performance, men hvis jeg skulle nævne en af de store fordele ved HSQLDB, så er det, at den er utrolig nem at embedde med sin applikation - så man ikke skal til at installere en server (MySql, MsSql, osv...)
Jeg har en formodning om at HSQLDB vil være langsom til nogle ting, men en test jeg lavede viste udmærket query performance og absolut fremragende insert performance (dog med et noget voldsomt diskplads forbrug).
Ellers ligger der en del eksempler her på exp med hvordan man kommunikerer med såvel mysql som hsqldb. Det er iøvrigt rart at have et grafisk interface til sin db, så sørg for også at have et sådant - det kan man få til mysql og sikkert også til hsqldb.
Okay, jeg har fået kigget lidt på MySQL nu, og JDBC tutorialen ser jo dejlig nem ud :) Men jeg har det problem, at jeg ikke rigtigt ved hvad transaktioner er, ud fra den smule jeg har kunnet finde, lyder det ikke som noget jeg skal bruge. Men er der nogle der kan forklare mig hvad det går ud på?
Mht. queries, tja så skal jeg kunne hente data fra en bestemt tabel, lave beregninger på det og så indsætte mine tal i de allerede eksisterende rækker.
Hmm, ja det er jo meget smart :) Men det er nu ikke noget der er videre nødvendigt for mig at have med :) Mht. queries er der vel ikke noget ekstra der? Det er jo bare standard SQL sætninger, som findes i alle dialekter, ikke?
queries er mindre vigtige i forhold til transaktioner
der er dog lidt nemlig scenariet:
connection 1: BEGIN connection 1: UPDATE bankkonto SET saldo=saldo-100 WHERE bruger='themepark'; connection 2: SELECT saldo FROM bankkonto WHERE bruger='themepark'; connection 1: UPDATE bankkonto SET saldo=saldo+100 WHERE bruger='arne_v'; connection 1: COMMIT
Fair nok, du spurgte bare om det i starten, så jeg skulle lige være sikker på at der ikke var noget at tage hensyn til der :)
Øhm...godt spørgsmål...der må være en fælde et sted siden du siger det på den måde. Den returnerer saldoen på min konto efter de 100 kroner er trukket? Jeg ville gætte på at transaktioner har første prioritet :)
svaret er at det afhænger af det man kaldet transaction isolation level
med et lavt sådan så vil den læse efter at de 100 kr. er trukket
med et højt sådan vil den læse den oprindelige saldo fordi man ikke vil tillade andre connections at læse data som ikke er commited (og som måske aldrig bliver commited)
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.