So che sono in ritardo per pubblicare una risposta qui, ma voglio assicurarmi che nessuno faccia l'errore di utilizzare Derby su qualsiasi database di qualità di produzione in futuro. Mi scuso in anticipo per l'aspetto negativo di questa risposta: sto cercando di cogliere le sensazioni di un intero team di ingegneri in breve Q & Una risposta.
La nostra esperienza con Derby in molte piccole implementazioni dei clienti ci ha portato a dubitare seriamente di quanto sia utile per tutto tranne che per ambienti di test.Alcuni problemi che abbiamo avuto:
- deadlock causati da escalation dei blocchi - questo è il più grande e succede a un cliente circa una volta ogni settimana o due
- Interrupted I/O causa Derby a fallire a titolo definitivo su Solaris (potrebbe non essere un problema su altre piattaforme)
- Impossibile gestire query complesse che MySQL/PostgreSQL gestirà con facilità
- L'implementazione del registro delle transazioni con errori ha causato un danneggiamento della tabella che ci ha richiesto di esportare il database e quindi reimportarlo (non è stato possibile rilasciare la tabella danneggiata), e lo siamo ancora ha perso la tabella nel processo - per fortuna abbiamo avuto un backup
- No
LIMIT
sintassi
- Basse prestazioni per le query complesse
- Basse prestazioni per grandi insiemi di dati
causa del fatto che è incorporato, Derby è più di un concorrente di SQLite che di PostgreSQL, che è un database di qualità di produzione estremamente maturo che viene utilizzato per archiviare set di dati multi-petabyte da alcuni dei più grandi siti web del mondo. Se vuoi essere pronto per la crescita e non vuoi essere scoperto a eseguire il debug del codice del database di qualcun altro, ti consiglio di non utilizzare Derby. Non ho alcuna esperienza con SQLite, ma non posso immaginare che sia molto meno affidabile di quanto Derby sia stato per noi e sia ancora così popolare.
In effetti, siamo in procinto di eseguire il porting su PostgreSQL ora.
Il mio pronostico: correttamente sintonizzato, PostgreSQL fumerà il derby a tutte le domande, tranne le più banali. Perché vuoi allontanarti da PostgreSQL? Hai dedicato il tempo necessario per ottimizzare il tuo database? – intgr