Quale è meglio H2 o HSQLDB? [chiuso]


85

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


6
Qual è il tuo caso d'uso? Quali query eseguirai sui tuoi dati? Quanto sono grandi i tuoi dati? La tua applicazione legge o scrive pesante?
Matt

28
Un'altra ottima domanda chiusa.
rtcarlson

Trovo affascinante che l'attenzione alle risposte sembri 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

Risposte:


61

Si prega di notare che avevo fornito questa risposta nel 2011. Potrebbe essere obsoleta

La mia azienda sviluppa una libreria di astrazione del database ( jOOQ ), che supporta entrambi i database. I nostri test di integrazione coprono molte funzionalità, inclusa la chiamata di stored procedure e funzioni, array, selezioni annidate, ecc. Per quanto riguarda DML , mi HSQLDB 2.1sembra di essere leggermente più veloce rispetto H2 1.3ai database piccoli.

Tuttavia, HSQLDB supera di gran lunga H2 nelle operazioni DDL e all'avvio / chiusura dell'istanza, anche per un piccolo database (a causa della compilazione di funzioni memorizzate di H2 con javac ad ogni avvio del database!) . Dipende dal modo in cui memorizzi le funzioni memorizzate. Apparentemente, questo è un "problema" piuttosto specifico per jOOQ, vedi anche il commento di Thomas Mueller.

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


7
Le funzioni memorizzate vengono ricompilate solo se vengono memorizzate "come codice sorgente", che è una caratteristica che non è disponibile in HSQLDB (per quanto ne so). Se si utilizzano funzioni memorizzate precompilate, non vi è alcun sovraccarico di questo tipo.
Thomas Mueller

2
@ThomasMueller: Grazie, non lo sapevo. Questo aiuterà ad accelerare i miei test di integrazione, in modo massiccio. Adatterò la mia risposta di conseguenza. HSQLDB ha un linguaggio procedurale simile a PL / SQL, che è IMO più potente. Non sono sicuro, però, se quella lingua sia precompilata o interpretata ...
Lukas Eder

45

Entrambi HyperSQLe H2 Databasesono abbastanza trasparenti, quindi i test possono essere l'approccio migliore per determinare quale è più adatto per un uso particolare. Sono disponibili confronti tra l' uno e l' altro . Condividono un patrimonio comune ed entrambi sono open source .


10
"il cestino è un importante strumento di progettazione" - loc. cit.
trashgod

3
Grazie per quel link "patrimonio". Riassumono la storia in modo abbastanza meraviglioso. Prima è arrivato HSQLDB (Hypersonic SQL), poi H2, ma HSQLDB e H2 non condividono lo stesso codice e sono progetti separati a partire da oggi.
specialk 1 °

1
@ specialk1st: Esatto, l' eredità in questo caso è un autore comune, non un codice comune.
trashgod
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.