2010-04-30 16 views
73

HSQLDB 2.0 sarà presto rilasciato. Mi chiedo se supererà l'H2 dato che, per quanto ne so, la maggior parte degli utenti preferisce H2 rispetto a HSQLDB. Sono interessato al supporto MVCC di HSQLDB 2.0. Ho imparato che MVCC su H2 è ancora sperimentale. Per quanto riguarda il supporto/documentazione, concorrenza, prestazioni, che è meglio tra i due?Quale è meglio H2 o HSQLDB?

+6

Qual è il tuo caso d'uso? Quali domande eseguirai rispetto ai tuoi dati? Quanto sono grandi i tuoi dati? La tua applicazione legge o scrive pesante? – Matt

+14

Un'altra domanda perfettamente valida chiusa. – rtcarlson

+0

Trovo affascinante che l'attenzione per le risposte sembra essere la performance, nonostante la domanda la menzioni solo come uno degli aspetti. Sarei molto più interessato ad altre aree da supporto/doc, usabilità (facilità d'uso, intuitività, set di funzionalità), affidabilità e così via. – StaxMan

risposta

41

Entrambi HyperSQL e H2 Database sono abbastanza trasparenti, pertanto il test può essere l'approccio migliore per determinare quale sia più adatto per un uso particolare. Sono disponibili confronti tra one e other. Condividono un numero comune heritage ed entrambi sono opensource.

+7

"il cestino è un importante strumento di progettazione" - [_ loc. cit._] (http://stackoverflow.com/a/22259102/230513) – trashgod

+2

Grazie per il link "patrimonio". Riassumono abbastanza bene la storia. Prima è arrivato HSQLDB (Hypersonic SQL), poi è arrivato H2, ma HSQLDB e H2 non condividono nessuno degli stessi codici e sono progetti separati a partire da oggi. – specialk1st

+1

@ specialk1st: Giusto, il _heritage_ in questo caso è un autore comune, non un codice comune. – trashgod

53

Io sono lo sviluppatore di una libreria di astrazione del database (jOOQ), che supporta entrambi i database. I miei 130+ test di integrazione coprono un sacco di funzionalità, tra cui la chiamata di stored procedure e funzioni, array, selezioni nidificate, ecc. Provo HSQLDB 2.1 per essere leggermente più veloce di H2 1.3 per piccoli database per quanto riguarda DML.

Tuttavia, HSQLDB sorpassa altamente H2 in operazioni DDL così come all'avvio/spegnimento del caso, anche per un piccolo database (a causa di funzioni di compilazione immagazzinata di H2 da capo con javac ad ogni avvio del database!). Questo dipende dal modo in cui si memorizzano le funzioni memorizzate. Apparentemente, questo è un "problema" specifico per JOOQ, vedi anche il commento di Thomas Mueller.

D'altra parte, sono d'accordo con l'utente trashgod, si dovrebbe testare le prestazioni con uno schema ragionevole e caso d'uso per te.

+5

Le funzioni memorizzate vengono ricompilate solo se vengono memorizzate "come codice sorgente", che è una funzionalità che non è disponibile in HSQLDB (per quanto ne so). Se si utilizzano funzioni memorizzate precompilate, non esiste un sovraccarico. –

+1

@ThomasMueller: Grazie, non lo sapevo. Ciò contribuirà ad accelerare i miei test di integrazione, in maniera massiccia. Adatterò la mia risposta di conseguenza. HSQLDB ha un linguaggio procedurale simile a PL/SQL, che è più potente IMO. Non sono sicuro, però, se questa lingua è precompilata o interpretata ... –

Problemi correlati