2010-04-26 14 views
15

Ho trovato molte comparazioni qui, ma non questa; Quindi, cosa c'è di meglio in ognuno?Derby/JavaDB vs SQLiteJDBC

+0

Cosa sei disposto a fare? – Macarse

+0

@Macarse una piccola app standalone in Java –

risposta

9

Esiste un confronto completo a SQLite's site.

SQLite è molto più limitato, in quanto supporta solo un piccolo sottoinsieme di SQL92, mentre Derby (ora JavaDB) ha il pieno supporto di SQL92 e SQL99.

+0

Nice! Naturalmente mi piacerebbe sapere se il punto di vista del team Derby su questo confronto .. ma grazie comunque :) –

+5

Ecco una discussione nella mailing list degli utenti di derby: http://old.nabble.com/Derby-v-SQLite -td13496423.html – mgv

+0

non è ancora quello che mi aspettavo, ma grazie! –

-1

Una cosa da tenere a mente su SQLite è che, oltre a supportare solo un sottoinsieme di SQL92, solo il thread che ha creato il database SQLite può accedervi. Se puoi vivere con quello, prendilo per le sue prestazioni migliori.

+4

Questo non è corretto. Abbiamo un'applicazione che accede al suo database SQLite da più thread. Vedi https://www.sqlite.org/threadsafe.html - quote: serializzato. In modalità serializzata, SQLite può essere tranquillamente utilizzato da più thread senza restrizioni. [...] La modalità predefinita è serializzata. – Bluehorn

+0

La risposta deve essere aggiornata – tno2007

5

Eseguo un SQL complesso che ha più di 6000 righe 10000 volte nel mio server Websphere. Totale tempi di esecuzione netti sono così:

  Derby (In Memory) Oracle(standard DB) SQLite (In Memory) HSQLDb (In Memory) 
      nano sec. second nano sec. second nano sec. second nano sec. second 
1. try 58000000 0,058 6149976000 6,1 1141988000 1,14 999403000 1,00 
2. try 78560000 0,078 5268477000 5,2 1182621000 1,18 1338705000 1,34 
3. try 58849000 0,058 5200898000 5,2 1133003000 1,13 2239527000 2,24 
4. try 60901000 0,06 5435216000 5,4 1205442000 1,21 1370711000 1,37 
5. try 58798000 0,058 6501929000 6,5 1186734000 1,19 1001800000 1,00 
6. try 62928000 0,062 5913053000 5,9 1224470000 1,22 1066736000 1,07 
7. try 71171000 0,071 5111207000 5,1 1200769000 1,20 1304524000 1,30 
8. try 66913000 0,066 5517989000 5,5 1173495000 1,17 1299230000 1,30 
9. try 58777000 0,058 7209555000 7,2 1179013000 1,18 1031795000 1,03 
10. try 75299000 0,075 5356514000 5,3 1182715000 1,18 1368461000 1,37 
average 65019600 0,064 5766481400 5,7 1181025000 1,18 1302089200 1,30 

io ovviamente confrontare Derby, SQLite e HSQLDB. Oracle non è un db in memoria. Ma ho messo il risultato in tabella perché mostrava la differenza di velocità tra un db in memoria e un db normale.

PS: nei risultati SQLite e HSQLDB non sono stabili. Quindi ho scelto 10 risultati stabili in 100 tentativi. A volte HSQLDB è più veloce di SQLite. Penso che le loro prestazioni siano le stesse.