Domanda

Ho letto che alcune banche dati possono essere utilizzati in memoria, ma non riesco a pensare a ragione per cui qualcuno vorrebbe utilizzare questa funzione. Io uso sempre un database per salvare i dati e le cache di memoria per un rapido accesso.

È stato utile?

Soluzione

Cache è anche una sorta di banca dati, come un file system è. 'Cache Memory' è solo un'applicazione specifica di un database in memoria e un po 'in-memory database sono specializzati come cache di memoria.

Altri usi di database in memoria sono già state incluse in altre risposte, ma mi permetta di enumerare gli usi troppo:

  1. di cache di memoria. Di solito un sistema di database specializzato per tale uso (e probabilmente conosciuto come 'una cache di memoria', piuttosto che 'un database') verrà utilizzato.
  2. codice di test relative al database. In questo caso verrà utilizzato spesso una modalità 'in-memory' di un qualche sistema database generico, ma anche un database dedicato 'in-memory' può essere utilizzato per sostituire altri database 'su disco' per testare velocemente.
  3. manipolazione dei dati sofisticata. In-memory database SQL sono spesso utilizzati in questo modo. SQL è un grande strumento per la manipolazione dei dati e, a volte non c'è bisogno di scrivere i dati su disco, mentre il calcolo del risultato finale.
  4. Memorizzazione di stato di runtime transitorio. Ci sono applicazioni che hanno bisogno di memorizzare il loro stato in una sorta di banca dati, ma non c'è bisogno di insistere che riavvio dell'applicazione sopra. Pensate a un qualche tipo di process manager -. Ha bisogno di tenere traccia dei sotto-processi in esecuzione, ma che i dati sono validi solo fino a quando l'applicazione e le sotto-processi eseguiti

Altri suggerimenti

Un caso d'uso comune è quello di eseguire unit test / integrazione.

Non si preoccupano veramente di persistenza dei dati tra un test e si desidera test per eseguire il più rapidamente possibile (per incoraggiare le persone a fare loro spesso). Hosting un database in processo vi dà molto veloce accesso ai dati.

La vostra memoria cache ha il supporto SQL?

Che ne dite si considera il database in memoria come cache molto intelligente?

che fa le domande di permesso di come il database in memoria viene popolata e come aggiornamento sono gestite e la coerenza è conservato tra più istanze.

Ricerca di qualcosa tra i 100000 elementi è lento se non si utilizzano trucchi come indici. Quei trucchi sono già implementati in un motore di database (sia persistente o in memoria).

Un database in memoria potrebbe offrire una funzionalità di ricerca più efficiente di quello che si potrebbe essere in grado di implementare rapidamente su se stessi strutture auto-scritta.

database in memoria sono più o meno di almeno un ordine di grandezza più veloce di RDBMS tradizionali per le query (lato lettura) general purpose. La maggior parte sono appoggiati su disco fornendo la stessa consistenza di un normale RDBMS -. Solo catturare l'intero set di dati deve inserirsi in RAM

L'idea centrale è sostenuta disco di memorizzazione ha enormi sanzioni ad accesso casuale che non si applica alla DRAM. I dati possono essere indice / organizzata in modo random access ottimizzato non è fattibile utilizzando i dati RDBMS tradizionali caching schemi.

Le domande, che richiedono risposte in tempo reale vorrebbe utilizzare un database di memoria, forse applicazione ai velivoli di controllo, impianti in cui il tempo di risposta è fondamentale

Un in-memory database è utile anche nella programmazione del gioco. È possibile memorizzare i dati in un database di memoria, che è molto più veloce di banche dati permanenti.

Sono usati come una struttura avanzata dei dati da memorizzare, interrogare e modificare i dati di runtime.

Si può avere bisogno di un database se diverse applicazioni stanno per accedere al set di dati. Un database ha un'interfaccia coerente per l'accesso / modifica dei dati, che la vostra tabella di hash (o qualsiasi altra cosa si usa) non avrà.

Se un singolo programma che fare con i dati, allora è ragionevole utilizzare solo una struttura di dati in qualsiasi lingua si sta utilizzando però.

In-memory database è meglio di eseguire la cache del database. caching del database funziona in modo simile ai database in memoria quando si tratta di operazioni di lettura.

D'altra parte, quando si tratta di operazioni di scrittura, in-memory database sono più veloci rispetto alle cache del database, in cui i dati viene mantenuto sul disco (che conduce a IO spese generali).

Inoltre, con database di cache si può finire con cache miss, ma non si sarà mai finire con cache miss quando si utilizzano i database in-memory.

Data la loro velocità e il prezzo in calo di RAM, è probabile che in-memory database diventerà la tecnologia dominante nel futuro. Ci sono già alcuni che hanno sviluppato caratteristiche sofisticate come query SQL, indici secondari, e motori per l'elaborazione di set di dati più grandi di RAM.

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