Domanda

Ci sono DB per Java che possono essere eseguite in modalità embedded con alcuni tavoli di essere memorizzati nella memoria durante il caricamento di altri dal disco? H2 e JavaDB sembrano essere i due leader per Java DB e so che entrambi hanno una modalità in-memory, ma fanno a fare si carica l'intero DB nella memoria o si può decidere su una base table-by-tavolo?

È stato utile?

Soluzione

Questa è la tabella di FAQ nella cache menzionato nel sito HSQL.

• Fa HSQLDB memorizzare tutti i dati in memoria. Non la memoria a corto di conseguenza?

• Memorizza tutti i dati nella memoria solo se si desidera. Per default, CREATE TABLE risultati in una tabella di memoria, in quanto questo è il tipo migliore per tabelle più piccole. Per le tabelle più grandi, utilizzare CREATE TABLE nella cache e regolare la dimensione della cache per la tua vacanza esigenze di utilizzo di memoria (non più di 8 MB o giù di lì). , vedere il capitolo Sistema di gestione e problemi di distribuzione della Guida. Non c'è una regola semplice e senza l'imposizione da parte di HSQLDB come la massima flessibilità è consentita utilizzando solo un paio di impostazioni. Un uso popolare di HSQLDB è per OLAP, ETL, e le applicazioni di data mining in cui vengono utilizzati enormi allocazioni di memoria Java per contenere milioni di righe di dati in memoria.

Credo tabella cache è già abbastanza potente da soddisfare le vostre necessità.

http://hsqldb.org/web/hsqlFAQ.html

Comparazione tra la tabella della cache e la tabella di memoria

Tabelle di memoria e le tabelle memorizzate nella cache sono generalmente utilizzati per la memorizzazione dei dati. La differenza tra i due è il seguente:

I dati relativi a tutte le tabelle di memoria vengono letti dal file * .script quando il database è stato avviato e memorizzato. In contrasto con i dati memorizzati nella cache per le tabelle non vengono letti in memoria fino a quando si accede al tavolo. Inoltre, solo una parte dei dati per ogni tabella memorizzata nella cache viene tenuto in memoria, consentendo tabelle con più dati che può essere contenuto in memoria.

Quando il database viene arrestato in modo normale, tutti i dati per tabelle di memoria sono trascritti su disco. In confronto, i dati in tabelle memorizzati nella cache che è cambiata è scritto fuori durante il funzionamento e allo spegnimento.

La dimensione e la capacità della cache di dati per tutte le tabelle memorizzate nella cache è configurabile. In questo modo è possibile consentire a tutti i dati memorizzati nella cache in tabelle da memorizzare nella cache in memoria. In questo caso, la velocità di accesso è buona, ma leggermente più lento di tabelle di memoria.

Per le applicazioni normali si raccomanda che le tabelle di memoria vengono utilizzati per piccole quantità di dati, lasciando le tabelle memorizzate nella cache per grandi insiemi di dati. Per applicazioni particolari in cui la velocità è fondamentale e una grande quantità di memoria è disponibile, tabelle di memoria possono essere utilizzati per grandi tabelle pure.

Sembra questa funzione non è supportata da H2 e Derby (JavaDB) ancora. Correggetemi se non è il fatto.

Altri suggerimenti

La maggior parte dei database in memoria (come HSQLDB hanno la capacità di memorizzare nella cache alcuni (o tutti ) i dati su disco. di solito è abbastanza basso livello quindi è trasparente al programmatore, ma certamente è configurabile

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top