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.