La memorizzazione dei dati nella memoria centrale (in memory) è l’espediente più diffuso per rendere istantaneo il funzionamento di database o di altre applicazioni.
Come funzionano i database in memory
L’accesso ai dati in memoria centrale non soffre infatti dei problemi di latenza nell’accesso ai dischi, siano essi hard disk tradizionali o a stato solido. L’in memory è dunque sicuramente la migliore scelta quando si vogliano ottenere elaborazioni dati in modo immediato.
I database in memory operano in modo più simile alle cache di front-end che a veri e propri database su disco. Sono progettati per liberarsi di tutto ciò che non è necessario all’I/O e aggiornare unicamente i dati in fase di inserimento. La verifica dei dati dopo la scrittura è un’operazione comunque molto veloce.
I database in memory possono fare a meno di tutto lo stack di storage associato con l’elaborazione della struttura delle directory nel file system e il reperimento delle tracce su disco. L’elaborazione in memory può quindi facilmente accelerare il database di un fattore che può arrivare a 100 volte, riducendo i tempi di risposta e il numero dei server necessari nel cluster database per garantire le prestazioni.
La velocità dell’elaborazione in memory ottenuta tenendo i dati nella memoria centrale dinamica del sistema (DRAM) comporta un rischio. Se il sistema si spegne la DRAM si cancella e i dati sono perduti.
La salvezza si chiama NVDIMM
Mantenere persistente una parte o l’intero contenuto della base dati è comprensibilmente il modo più efficace per rendere sicuro l’approccio ai database in memory, ma questo solleva il problema di come strutturare il backend di storage.
La prima soluzione è salvare qualsiasi dato su SSD NVMe (NVMe sta per non-volatile memory host express. Essa è considerata la più veloce interfaccia di storage sul mercato oppure collocarli su schede flash. Queste ultime offrono il modo più veloce per muovere dati dalla DRAM verso lo storage persistente. Si dovrebbe inoltre considerare la tecnologia NVDIMM (non-volatile dual in-line memory module) come storage persistente in alternativa alle DRAM.
Poiché NVDIMM può essere collegata allo stesso bus velocissimo della memoria centrale è almeno quattro volte più veloce del più rapido degli SSD. Usando queste memorie in abbinamento con DRAM, i database in memory possono vedere senza difficoltà un maggiore spazio di memoria ed evitare perdite di dati. Cosa più importante, l’IT può mantenere una immagine dei dati in memory o creare un file di journal delle operazioni di scrittura senza impatto sulle prestazioni.
I limiti NVDIMM
Occorre considerare che NVDIMM ha maggiori limiti di capacità rispetto agli SSD. Questo significa che non sarà possibile lavorare con big data, con data-set che cambiano continuamente o dove non sia possibile selezionare ciò che è utile per l’accesso veloce. In questi casi restano le alternative più tradizionali degli storage veloci basati su drive NVMe, oppure su un gran numero di dischi SSD. L’ultima opzione offre circa il 10% delle prestazioni di un drive NVMe, ma è molto più economica e può operare con un alto livello di parallelismo. La scelta va fatta in base alle necessità dell’utilizzo.
Il ruolo del RDMA
Le interfacce storage con più alti livelli di banda aiutano moltissimo l’elaborazione in memory. Gli amministratori possono usare il remote direct memory access (RDMA) su Ethernet per condividere dati tra sistemi di memoria. E possono estenderli a qualsiasi storage basato su drive.
In memory, ecco cosa promette il futuro
Le infrastrutture per l’in memory processing stanno evolvendo molto rapidamente e le maggiori novità riguardano NVDIMM e CPU.
La CPU Optane di Intel
La tecnologia CPU Optane* di Intel ha nella roadmap di sviluppo la capacità di indirizzare il byte. Questo consente a un programma di scrivere un singolo byte sulla memoria con un comando del tipo register-to-memory. Comparato con i trasferimenti in blocchi da 4KB, che costituiscono la modalità corrente di accesso a NVDIMM, rende le operazioni significativamente più veloci. Con Optane, la creazione del blocco da 4K e la sua trasmissione alla memoria può avvenire con molti meno cicli macchina di quanto accada oggi.
L’indirizzabilità a livello del byte richiede molti cambiamenti nel codice software. Secondo gli esperti, applicare questa capacità a un motore database non è così difficile che con le tradizionali applicazioni monolitiche. Questo è il motivo che spinge ad essere ottimisti. Questa capacità sarà applicata per prima nei database. Il concetto può essere esteso ai cluster e ai drive NVMe che usano RDMA (remote direct memory access) collegati a Optane.
La compressione dei dati
Negli ambienti big data, banda di rete e storage locale restano un collo di bottiglia all’espressione della potenza del sistema. Ma una soluzione è rappresentata dalla compressione dei dati. I livelli di compressione dipendono dal tipo di dati, ma ipotizzando un livello medio di riduzione di 5 volte può esserci un grande vantaggio nell’I/O.
Dal lato dei sistemi c’è oggi attenzione nel realizzare unità con una topologia interna molto meno gerarchica del passato, in cui memoria, GPU, CPU e drive possano condividere la stessa connessione ultra veloce, eventualmente accoppiata con quella di altri sistemi in cluster.
L’Hybrid Memory Cube
Altri progetti mirano a incrementare la capacità di DRAM e le prestazioni con un più stretto accoppiamento tra CPU e memoria. Le differenti iniziative sono basate sul concetto dell’Hybrid Memory Cube. L’obiettivo è arrivare a velocità dell’ordine dei terabyte per secondo nella comunicazione con la memoria, ridurre consumo d’energia, supportare meglio DRAM ibride e architetture CPU e flash più modulari in grado di velocizzare in modo significativo le elaborazioni.
Queste iniziative mirano a produrre un grande salto nelle prestazioni dei sistemi anche se, al momento, non è chiaro quali strade prenderà l’evoluzione. La promessa è che ad avvantaggiarsene possano essere lo storage e le applicazioni che operano in memory.
*È notizia di prima dell’estate 2020 che gli editori di TechTarget hanno selezionato Intel Optane quale tecnologia co-vincitrice del VMworld 2020 Award nella categoria Disruptive technology. Questo perché, dicono gli uomini di VMware: “Intel ha ridefinito il rapporto tra storage e tecnologie di memoria consentendo ai nostri clienti di ottenere valore da analisi su workload complessi”.