Domanda

Ho bisogno di creare un formato di file di archiviazione per alcuni semplici dati in formato tabulare, stava cercando di usare HDF5 ma hanno quasi rinunciato a causa di alcuni problemi, e mi piacerebbe rivedere l'uso di banche dati integrate per vedere se sono abbastanza veloce per la mia applicazione.

Esiste un database di reputazione incorporato Java là fuori che ha la possibilità di memorizzare i dati in un unico file? L'unico che io sappia è (binding Java disponibili) SQLite. Ho provato a H2 e HSQLDB, ma fuori dalla scatola che sembrano creare più file, ed è altamente auspicabile per me avere una base di dati in un unico file.

modifica le prestazioni ragionevolmente veloce è importante. stoccaggio oggetto non è; per problemi di prestazioni Ho solo bisogno di memorizzare interi e BLOB. (+ Alcune stringhe, ma le prestazioni non critico)

modifica. 2: l'efficienza del data storage è importante per il set di dati più grandi, in modo da XML è fuori

È stato utile?

Soluzione 10

Credo che per ora mi sto solo andando a continuare ad utilizzare HDF5 per la memorizzazione dei dati persistenti, in concomitanza con H2 o qualche altro database per l'indicizzazione in memoria. Non riesco a SQLite per utilizzare BLOB con il driver Java che ho, e non riesco a incorporato Firebird installato e funzionante, e non mi fido H2 con PAGE_STORE ancora.

Altri suggerimenti

http://www.dizitart.org/nitrite-database.html

  

NoSQL Object (NO2 a.k.a Nitrito) database NoSQL open source   negozio di documento incorporato scritto in Java con MongoDB come API. esso   supporta sia in-memory e unico file basato archivio permanente.

Se avete solo bisogno di accesso in lettura, allora H2 è in grado di leggere i file di database da un file zip .

Allo stesso modo se non hai bisogno di persistenza è possibile avere un in-memory unica versione di H2.

Se avete bisogno di entrambi lettura / scrittura di accesso e la persistenza, allora si può essere fuori di fortuna con i database SQL di tipo standard, in quanto questi di mantenere più o meno tutti in modo uniforme i file di indice e dati separatamente.

H2 utilizza un solo file, se si utilizza l'ultima H2 costruire con l'opzione PAGE_STORE. Si tratta di una nuova funzionalità, quindi potrebbe non essere solido.

Una volta ho usato un database di oggetti salvati i propri dati in un file. Ha una Java e un'interfaccia .NET. Si potrebbe desiderare di check it out. Si chiama db4o .

Chronicle Mappa è un database di Java puro incorporato.

  • Si memorizza i dati in un unico file, i. e.

    ChronicleMap<Integer, String> map = ChronicleMap
        .of(Integer.class, String.class)
        .averageValue("my-value")
        .entries(10_000)
        .createPersistedTo(databaseFile);
    
  • Cronaca Map è maturo (nessun bug di archiviazione gravi segnalati ormai da mesi, mentre è in uso attivo).

  • benchmark mostrano che idependent Cronaca Map è il più veloce e la maggior parte della memoria negozio efficiente "nofollow" chiave-valore per Java.

Il principale svantaggio per il vostro caso d'uso è che Chronicle Mappa supporta solo un modello di valori-chiave soluzione semplice e tuttavia più complessa potrebbe essere costruire su di esso.

. Disclaimer: io sono lo sviluppatore di cronaca Map

Se siete alla ricerca di un piccolo e veloce banca dati per la spedizione magari con un altro programma Vorrei verificare Apache Derby non so come definirebbe embedded-database, ma ho usato questo in alcuni progetti come una banca dati di debug che può essere controllato con la sorgente ed è disponibile su ogni macchina sviluppatore istantanea.

Non si tratta di un motore SQL, ma se si utilizza Prevayler con Xstream , è possibile creare facilmente un singolo file XML con tutti i vostri dati. (Prevayler chiama un file di snapshot.)

Anche se non è basato su SQL, e quindi richiede un po 'di olio di gomito, la sua natura autosufficiente rende lo sviluppo (e soprattutto buona collaudo) molto più facile. Inoltre, è incredibilmente veloce e affidabile.

Si consiglia di controllare le jdbm - lo usiamo su diversi progetti, ed è abbastanza veloce . Si fa uso di 2 file (un file di database e di un file di log) se lo si utilizza per tipo di applicazioni ACID, ma si può scendere direttamente a accesso diretto al database (senza file di log) se non hai bisogno di acido solido.

JDBM sarà facilmente sostenere interi e macchie (tutto quello che vuoi), ed è abbastanza veloce. Non è davvero progettato per la concorrenza, in modo da avere per gestire il blocco da soli se si dispone di più thread, ma se siete alla ricerca di un semplice database embedded solida,, è una buona opzione.

Dal momento che lei ha citato SQLite, suppongo che non ti dispiace un db nativa (a patto che le buone binding Java sono disponibili). Firebird funziona bene con Java, e fa archiviazione di file singolo per impostazione predefinita.

Sia H2 e HSQLDB sarebbe una ottima scelta, se non avete il requisito di singolo file.

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