Sommario:
- Modifica dei motori di memorizzazione
- Memorizzazione nella cache dei dati in memoria
- Valutazione di Voldemort
Video: Avamar CRU:Replacing a Hard Drive in an Avamar Gen4T Node 2024
Ci sono momenti in cui si desidera fornire accesso ad alta velocità in stile chiave ai dati contenuti in un database relazionale. Questo database potrebbe essere, ad esempio, Berkeley DB (Java Edition per Voldemort) o MySQL.
Fornire un valore chiave come l'accesso ai dati richiede che un archivio di valori-chiave sia stratificato direttamente su uno di questi altri database. In sostanza, si utilizza un altro database come livello di archiviazione, anziché una combinazione di un file system per lo storage e una pipeline di importazione per copiare i dati da un database relazionale.
Questo processo semplifica la fornitura di un archivio di valori-chiave ad alta velocità mentre si utilizza un database relazionale tradizionale per l'archiviazione.
Modifica dei motori di memorizzazione
I diversi carichi di lavoro richiedono diversi motori di memorizzazione e caratteristiche prestazionali. Aerospike è ottimo per l'alta assunzione; Redis è ottimo per un numero elevato di letture. Ognuno è costruito attorno a un caso d'uso specifico.
Voldemort ha un approccio diverso. Anziché trattare l'archivio dei valori-chiave come un livello separato di gestione dei dati, Voldemort tratta l'archivio valori-chiave come un'API e aggiunge un livello di memorizzazione nella cache in memoria, il che significa che è possibile connettersi al back-end che ha più senso per le tue esigenze particolari.
Se si desidera un livello di storage su disco diretto, è possibile utilizzare il motore di archiviazione Berkeley DB Java Edition. Se invece si desidera memorizzare i dati relazionali, è possibile utilizzare MySQL come back-end per Voldemort.
Questa funzionalità combinata con tipi di dati personalizzati consente di utilizzare la semplice API store / retrieve di un negozio di valori-chiave per estrarre efficacemente e memorizzare le informazioni direttamente in un altro back-end store.
Questo approccio contrasta con il solito approccio di avere database separati - uno per esempio, per i dati transazionali e un altro per l'archivio dei valori-chiave (Riak, ad esempio). Con questo approccio a due livelli, è necessario sviluppare codice per spostare i dati da un livello all'altro per la memorizzazione nella cache. Con Voldemort, c'è un livello combinato, il tuo livello dati, quindi il codice extra è ridondante.
Memorizzazione nella cache dei dati in memoria
Voldemort ha una cache integrata nella memoria, che riduce il carico sul motore di archiviazione e aumenta le prestazioni della query. Non è necessario utilizzare un livello di memorizzazione nella cache distinto, ad esempio Redis o il prodotto di memorizzazione nella cache dei dati dell'applicazione Coherence Java di Oracle.
La capacità di fornire tiering di archiviazione ad alta velocità con la memorizzazione nella cache è il motivo per cui LinkedIn utilizza Voldemort per determinati casi di utilizzo ad alte prestazioni.
Con Voldemort, ottieni il meglio dei due mondi: un motore di archiviazione per i tuoi requisiti di dati esatti e una cache in memoria ad alta velocità per ridurre il carico su quel motore.Inoltre, puoi ottenere un semplice archivio di valore-chiave per memorizzare / recuperare la semantica sul tuo motore di archiviazione.
Valutazione di Voldemort
Nei libri Harry Potter Lord Voldemort possedeva molta magia in lui, sia nel bene che nel male, sebbene lo usasse per terrorizzare i babbani. Il database di Voldemort, come risulta, può anche memorizzare grandi quantità di dati, ma può essere utilizzato definitivamente dai maghi dei dati ovunque!
Voldemort è ancora un prodotto in fase di sviluppo. Molti pezzi sono ancora mancanti, quindi non supporta la varietà di motori di archiviazione che ci si potrebbe aspettare. Questo focus per la community di sviluppo di Voldemort è probabile perché Voldemort è costruito nel linguaggio di programmazione Java, che richiede un connettore JNI (Java Native Interface) da integrare per la maggior parte dei database basati su C o C ++.
Voldemort ha una buona integrazione con i framework di serializzazione, però. I framework supportati includono serializzazione Java, Avro, Thrift e Protocol Buffers. Ciò significa che i wrapper API forniti corrispondono al metodo di serializzazione familiare di ciascun linguaggio di programmazione, rendendo intuitivo lo sviluppo delle applicazioni.
Voldemort non gestisce la coerenza e gli altri sistemi. Voldemort utilizza l'approccio read repair , dove i numeri di versione incoerenti per lo stesso record sono fissati in tempo di lettura, piuttosto che essere mantenuti coerenti in fase di scrittura.
Non vi è inoltre alcun indicizzazione secondaria o supporto di query; Voldemort si aspetta che tu usi le funzionalità del motore di archiviazione sottostante per far fronte a tale caso d'uso. Inoltre, Voldemort non ha trigger di database nativi o un framework di elaborazione di allarmi o eventi con cui crearne uno.
Se hai bisogno di un archivio di valori-chiave altamente disponibile, è tollerante alle partizioni, viene eseguito in Java e utilizza diversi back-end di archiviazione, quindi Voldemort potrebbe essere adatto a te.