2010-01-26 17 views
8

Stiamo facendo ricerche in questo momento se cambiare il nostro db postgresql in un db Derby incorporato. Entrambi utilizzerebbero Glassfish 3 per il nostro livello di dati. Qualcuno ha qualche opinione o conoscenza che potrebbe aiutarci a decidere?Confronto tra Derby vs PostgreSql Performance

Grazie!

modifica: stiamo scrivendo alcuni test delle prestazioni in questo momento. Alla ricerca di risposte più basato sulla conoscenza esperienza/di prima mano

+2

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

risposta

3

Non hanno rispetto PostgreSQL Derby direttamente. Tuttavia, avendo usato entrambi in circostanze diverse, ho trovato Derby altamente affidabile. Tuttavia, dovrai prestare attenzione alla configurazione di Derby per assicurarti che soddisfi le tue esigenze applicative.

+1

+1. L'affidabilità solida, l'ingombro ridotto della memoria e l'elasticità di implementazione (embedded, server di rete, server embedded + di rete) sono i suoi punti di forza. –

+0

So che Postgresql è più maturo db. Tuttavia, ho utilizzato Derby per un'applicazione di elaborazione dei db per applicazioni pesanti e non riesco a trovare alcun limite dal punto di vista delle prestazioni, delle dimensioni e dell'affidabilità. – donlys

1

Esistono numerose suite di test delle prestazioni incluse nella distribuzione del codice sorgente Derby stessa; sono utilizzati dagli sviluppatori di Derby per condurre i propri test delle prestazioni di Derby. Quindi, se hai bisogno di esempi di test delle prestazioni, o vuoi altri, potresti prendere in considerazione l'idea di utilizzarli. Cerca nella sottodirectory java/testing/org/apache/derbyTesting/perf nella distribuzione dei sorgenti Derby.

6

Derby è ancora relativamente lento nelle prestazioni, ma ... dove mai la tua applicazione Java va il tuo server di database va, completamente indipendente dalla piattaforma. Non è nemmeno necessario pensare all'installazione di un server DB su cui viene copiata l'app Java.

Stavo usando MySQL con Java, ma avere un'implementazione incorporata del server di database che si trova proprio all'interno della mia app Java è una produttività, libertà e flessibilità senza precedenti e senza precedenti.

Avere sempre un server DB incluso quando e dove su qualsiasi piattaforma per me è solo un paradiso !!!

13

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.