Cos'è l'in-memory database?
Un in-memory database memorizza tutti i dati di un'organizzazione o di un individuo nella memoria principale di un computer.
L'analisi dei dati sull'in-memory database è veloce rispetto ai database tradizionali che usano dispositivi di archiviazione secondaria. Questi dispositivi di archiviazione secondaria comprendono un disco rigido o dispositivi a stato solido. L'unità di elaborazione centrale (CPU) di un computer ha accesso diretto solo ai dati memorizzati nella memoria principale. Pertanto, un computer può leggere/scrivere i dati nella memoria principale molto più velocemente dei dati nel dispositivo di archiviazione secondaria. Questo rende gli in-memory database incredibilmente veloci.
Le organizzazioni usano l'in-memory database per applicazioni che richiedono operazioni di database ad alta velocità. Le offerte in tempo reale per gli spot pubblicitari utilizzano l'in-memory database. Nelle offerte pubblicitarie in tempo reale, una piattaforma di offerta mette all'asta uno spot pubblicitario mentre l'utente sta caricando una pagina web. La piattaforma di offerte in tempo reale raccoglie i dati delle offerte di diversi offerenti, seleziona un'offerta vincente in base a diverse regole e visualizza l'annuncio del miglior offerente. Tutto questo deve avvenire in pochi millisecondi mentre si carica la pagina web. Un in-memory database aiuta la piattaforma di offerte in tempo reale a eseguire tutte queste operazioni sui dati con una latenza di millisecondi.
Perché le organizzazioni hanno bisogno di un in-memory database?
Con l'avvento dell'Internet of Things (IoT) e la crescita delle soluzioni basate sul cloud, le organizzazioni hanno bisogno di elaborare i dati in tempo reale. Milioni di dispositivi come le unità videoterminali impiegate negli ambiti della salute e della sicurezza generano dati ogni secondo. Analizzare questi dati in tempo reale è fondamentale. Per elaborare i propri dati in tempo reale le organizzazioni hanno bisogno di soluzioni di database ad alte prestazioni. Gli in-memory database aiutano anche le organizzazioni a migliorare la produttività accelerando le operazioni di database. Peraltro ciò consente loro di sfruttare i benefici dei big data. Se un'organizzazione ha bisogno di uno dei seguenti elementi, dovrebbe prendere in considerazione l'adozione di un in-memory database:
- L'organizzazione necessita di sfruttare i vantaggi in tempo reale dei big data.
- L'organizzazione raccoglie dati regolarmente e ha bisogno di un accesso rapido.
- La persistenza dei dati non è un grande problema per l'organizzazione.

In-memory database e database basato su disco
- Un in-memory database consente letture/scritture più veloci rispetto a un database tradizionale basato su disco. Nei database tradizionali, ogni operazione di database necessita di scrivere/leggere dal disco, il che comporta un'operazione di input/output (IO). Questo processo supplementare rallenta i database basati su disco.
- I dati nei database tradizionali basati su disco sono persistenti rispetto ai dati nell'in-memory database. La memoria principale utilizzata nell'in-memory database è volatile. In caso di guasto del sistema, i dati possono essere persi. Gli in-memory database utilizzano varie tecniche per superare il problema della volatilità dei dati.
- Nei database tradizionali, le strutture utilizzate per la memorizzazione dei dati sono complesse. Questo per garantire che l'accesso ai dati dal disco sia efficiente. Di solito, l'accesso casuale dei dispositivi di memorizzazione secondaria richiede molto tempo. Per superare questo problema, i database tradizionali usano varie strutture di dati come i B-alberi. Nel caso degli in-memory database, le strutture di memorizzazione sono semplici poiché l'accesso casuale dei dati dalla memoria principale è altamente efficiente.
- I database tradizionali basati su disco possono funzionare solo in sistemi con un dispositivo di archiviazione secondaria. Molti dispositivi integrati non supportano l'archiviazione secondaria. Gli in-memory database possono funzionare in modo efficiente sulla memoria principale di questi dispositivi integrati. Le organizzazioni che operano nel settore dell'Internet of Things spesso scelgono in-memory database per questa caratteristica.
- Gli in-memory database sono più adatti per applicazioni con bassi requisiti di dati. Sebbene si sia registrato un aumento significativo della dimensione della RAM, essa è ancora nell'ordine di svariati giga byte. Nei database tradizionali basati su disco, non esiste tale restrizione. Possono operare su dati di dimensioni dell'ordine di svariati terabyte.
Come fa un in-memory database a garantire la durabilità dei dati?
Garantire le proprietà ACID è un prerequisito di ogni database:
- Atomicità
- Coerenza
- Isolamento
- Durabilità
Mentre gli in-memory database garantiscono le prime tre proprietà, devono essere compiuti ulteriori passi per assicurare la durabilità. Questa proprietà impone che tutti i dati siano intatti, anche se si verifica un guasto al sistema o all'alimentazione. Gli in-memory database sono basati sulla memoria principale volatile. La memoria volatile è progettata in modo tale che se il sistema viene spento, tutti i dati vanno persi. Gli in-memory database usano varie tecniche per assicurare che i dati non siano cancellati dopo uno spegnimento o un guasto del sistema.
Istantanea
Un in-memory database crea istantanee periodiche del database e le memorizza nelle unità disco (non volatili). Questa istantanea del database è una copia dell'intero database in un particolare momento. Se l'istantanea periodica è un modo per preservare i dati, potrebbe non assicurare la durabilità. Dopo il salvataggio di un'istantanea vi è sempre una possibilità di guasto del sistema. Tutte le modifiche apportate dopo l'istantanea saranno perse.
Registrazione delle transazioni
Con questo metodo, l'in-memory database tiene traccia di ogni modifica apportata al database. Questi registri delle transazioni conterranno i dettagli di ogni operazione di inserimento e modifica. Sono memorizzati in un file non volatile che può essere utilizzato per recuperare il database in caso di guasto. Nei database che eseguono migliaia di operazioni al minuto, la registrazione delle transazioni aggiunge un sovraccarico alle prestazioni del sistema e alla capacità di archiviazione. La maggior parte degli in-memory database mantiene i registri delle transazioni fino a quando viene fatta un'istantanea e li scarta.
Memoria non volatile ad accesso casuale (NVRAM)
Un altro modo di assicurare la durabilità dei dati è l'uso della memoria non volatile ad accesso casuale. La NVRAM mantiene i dati anche dopo lo spegnimento. È una soluzione comunemente usata dagli in-memory database per ottenere la durabilità dei dati. Gli in-memory database usano la RAM statica alimentata a batteria o la memoria di sola lettura programmabile cancellabile elettricamente (EEPROM).

Caratteristiche essenziali di un in-memory database
Con l'aumento delle applicazioni in tempo reale, è aumentata anche la domanda di in-memory database. Sono disponibili numerosi in-memory database sul mercato. A volte è difficile scegliere una perfetta soluzione di in-memory database. Le seguenti sono le caratteristiche essenziali che un in-memory database dovrebbe possedere per essere utile negli attuali scenari di mercato.
Pronto per la migrazione al cloud
La maggior parte delle organizzazioni si sta spostando verso il cloud e preferisce il modello di business software as a service (SAAS). Anche l'in-memory database deve essere in grado di supportare il modello cloud. Questo significa che l'in-memory database dovrebbe essere offerto come database as a service. Con un database as a service, sviluppatori e utenti possono usare un gruppo di risorse di database condiviso su richiesta. Una volta terminato il lavoro, le risorse di database vengono restituite al gruppo di risorse. Gli in-memory database pronti per il cloud sono veloci, scalabili e flessibili.
Pronto per l'Internet of Things
Se un'organizzazione vuole esplorare il mercato dell'Internet of Things, ha bisogno di un database in tempo reale progettato per supportarlo. L'Internet of Things comprende centinaia di sensori (come le unità videoterminali impiegate negli ambiti della salute e della sicurezza) che inviano continuamente dati in tempo reale. L'in-memory database deve essere pronto a gestire milioni di messaggi inviati da numerosi sensori presenti in tutto il mondo. L'in-memory database deve memorizzare e recuperare questi dati molto rapidamente in modo che l'analisi dei dati possa consentire di prendere decisioni rapide.
Conforme ACID
Ogni database deve soddisfare i requisiti di atomicità, coerenza, isolamento e durabilità. Queste caratteristiche sono essenziali per l'integrità dei dati. Da un punto di vista aziendale, avere un database che rispetta le proprietà ACID aiuta l'organizzazione a prendere decisioni corrette. Usare un'implementazione proprietaria di un in-memory database che non ha proprietà ACID può comportare dati imprecisi e decisioni errate. La scelta va operata con attenzione.
Quali sono i vantaggi degli in-memory database?
Prestazioni
Gli in-memory database memorizzano i dati sulla memoria principale del computer, a cui il processore può accedere direttamente. Le operazioni di lettura e scrittura di un in-memory database sono molto più veloci dei tradizionali database basati su disco.
Semplicità
I requisiti di archiviazione dei database tradizionali sono complessi in quanto devono ottimizzare le operazioni di lettura/scrittura sul dispositivo di archiviazione secondario. Questo include la logica di memorizzare i dati su blocchi di dischi continui, il che rende facile il recupero. Con un in-memory database, l'accesso casuale è altamente efficiente. Dunque, la struttura dei dati per memorizzare gli in-memory database è abbastanza semplice.
Uso in sistemi integrati
Un in-memory database non ha bisogno di un dispositivo di archiviazione secondario. Questa proprietà è molto utile nel caso degli odierni dispositivi altamente mobilizzati. I dispositivi incorporati come le console di gioco o le smart TV non possono permettersi un dispositivo di archiviazione secondario. Possono usare un in-memory database. Questa proprietà è molto importante al giorno d'oggi, quando l'Internet of Things è diventato piuttosto popolare e i dispositivi di archiviazione secondaria sono un'impossibilità.
Quali sono gli svantaggi degli in-memory database?
Durabilità dei dati
Mentre la memoria ad accesso casuale facilita le operazioni di dati ad alta velocità, gli in-memory database sono soggetti a perdite di dati. I dati nell'in-memory database sono memorizzati solo temporaneamente. In caso di crash del sistema, è possibile che si verifichi una perdita di dati.
Soluzione: abbiamo visto nella sezione precedente come, per risolvere il problema della durabilità dei dati, gli in-memory database utilizzino tecniche diverse quali lo snapshotting, i log delle transazioni e la memoria non volatile ad accesso casuale.
Dimensione dei dati
Poiché la capacità della memoria ad accesso casuale di un computer è limitata (normalmente in giga byte), gli in-memory database potrebbero non essere in grado di gestire enormi richieste di dati.
Soluzione: questo problema ha molteplici soluzioni. Collegare più computer sulla griglia per aumentare la capacità della memoria principale è un modo per risolvere il problema delle dimensioni. Inoltre, con i computer multi-core possiamo estendere la capacità della memoria ad accesso casuale.