Che cos’è la persistenza dei dati e perché è importante?

Per ulteriori informazioni sulla persistenza in Cassandra e altri database NoSQL, controlla Cos’è NoSQL?

Comprendere il significato della persistenza è importante per valutare diversi sistemi di archiviazione dati. Data l’importanza dell’archivio dati nella maggior parte delle applicazioni moderne, fare una scelta poco informata potrebbe significare notevoli tempi di inattività o perdita di dati. In questo post, discuteremo la persistenza e gli approcci di progettazione dell’archivio dati e forniremo alcuni retroscena su questi nel contesto di Cassandra.

La persistenza è “la continuazione di un effetto dopo che la sua causa è stata rimossa”. Nel contesto della memorizzazione dei dati in un sistema informatico, ciò significa che i dati sopravvivono dopo che il processo con cui sono stati creati è terminato. In altre parole, affinché un archivio dati sia considerato persistente, deve scrivere in un archivio non volatile.

Se avete bisogno di persistenza nel vostro archivio dati, allora avete bisogno di capire anche il quattro uomo approcci di progettazione di un archivio di dati può prendere e come (o se) questi disegni offrono persistenza:

  • Puro in memoria, non persistenza a tutti, come memcaches o Scalaris

  • In memoria con istantanee periodiche, come ad esempio Oracle Coherence o Redis

  • basato su Disco con aggiornamento in place scrive, come MySQL ISAM o MongoDB

  • Commitlog-based, come tutti i piatti tradizionali database OLTP (Oracle, SQL Server, etc.)

Gli approcci in memoria possono raggiungere una velocità incredibile, ma a costo di essere limitati a un set di dati relativamente piccolo. La maggior parte dei carichi di lavoro ha un sottoinsieme “caldo” (attivo) relativamente piccolo dei loro dati totali; i sistemi che richiedono l’intero set di dati per adattarsi alla memoria piuttosto che alla sola parte attiva vanno bene per le cache ma non si adattano alla maggior parte delle altre applicazioni. Poiché i dati sono solo in memoria, non sopravviveranno alla terminazione del processo. Pertanto questi tipi di archivi di dati non sono considerati persistenti.

Il modo più semplice per aggiungere persistenza a un sistema in memoria è con istantanee periodiche su disco a un intervallo configurabile. Pertanto, puoi perdere fino a quel intervallo di aggiornamenti.

I sistemi basati su update-in-place e commitlog memorizzano immediatamente nella memoria non volatile, ma solo la persistenza basata su commitlog fornisce durata-la D in ACID – con ogni scrittura persistita prima che il successo venga restituito al client.

Cassandra implementa un design di persistenza basato su commit-log, ma allo stesso tempo fornisce livelli di durata sintonizzabili. Ciò consente di decidere quale sia il giusto compromesso tra sicurezza e prestazioni. È possibile scegliere, per ogni operazione di scrittura, di attendere che l’aggiornamento venga bufferizzato in memoria, scritto su disco su una singola macchina, scritto su disco su più macchine o anche scritto su disco su più macchine in data center diversi. Oppure, si può scegliere di accettare scrive un più rapidamente possibile, riconoscendo la loro ricevuta immediatamente prima che siano stati ancora completamente deserializzati dalla rete.

Alla fine della giornata, sei l’unico a sapere quale sia il giusto compromesso prestazioni/durata per i tuoi dati. Prendere una decisione informata sulle tecnologie di archiviazione dati è fondamentale per affrontare questo compromesso alle tue condizioni. Poiché Cassandra fornisce tale sintonizzabilità, è una scelta logica per i sistemi con la necessità di un archivio dati durevole e performante.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.