Spazio di archiviazione Garnet open source Microsoft compatibile con Redis

Microsoft ha reso open source il sistema NoSQL Garnet, progettato per la creazione di archivi di memorizzazione nella cache e compatibile con le librerie client esistenti per l'archiviazione Redis. Garnet supporta la creazione di cluster scalabili di memorizzazione nella cache dei dati che possono utilizzare la replica, la migrazione delle chiavi e il partizionamento dei dati tra i nodi del cluster. Il progetto è scritto in C# con un core di storage in C++, è aperto sotto licenza MIT e può essere eseguito su tutte le piattaforme supportate da .NET (le piattaforme principali sono Linux e Windows).

Per archiviare i dati, viene utilizzato il motore Tsavorite (un fork dello storage Microsoft FASTER), che supporta l'elaborazione di query multi-thread, le transazioni, la correzione delle modifiche in modalità non bloccante (checkpoint), il ripristino da errori, il salvataggio di copie ridondanti e il mantenimento di un registro delle operazioni. Il motore di rete in Garnet è costruito utilizzando l'architettura di memoria condivisa proposta dal progetto di ricerca ShadowFax. L'elaborazione TLS e l'interazione con l'archiviazione vengono eseguite in un singolo thread, il che consente di evitare il sovraccarico derivante dal cambio di thread e di utilizzare in modo più efficiente la cache della CPU durante il trasferimento dei dati sulla rete.

L'architettura Garnet separa la logica per l'analisi e l'elaborazione delle richieste dalle operazioni di archiviazione. I dati vengono archiviati utilizzando due archivi di valori-chiave basati sulla libreria Tsavorite. Il primo archivio "principale" è ottimizzato per operazioni veloci sulle stringhe, mentre il secondo archivio "oggetti" è ottimizzato per ospitare oggetti complessi e tipi di dati avanzati come hash ed elenchi. I tipi di dati nel secondo archivio vengono implementati utilizzando le librerie .NET. I dati vengono archiviati nell'heap (heap C#), che consente un aggiornamento efficiente e in formato serializzato su disco.

Spazio di archiviazione Garnet open source Microsoft compatibile con Redis

Caratteristiche del granato:

  • È possibile implementare storage multilivello, spanning RAM, unità SSD e cloud storage, in cui i dati meno richiesti vengono inseriti in uno storage lento per creare cache più grandi della RAM.
  • Supporto dispositivo estensibile, che consente la creazione di livelli ottimizzati per funzionare con dispositivi diversi, ad esempio, sono disponibili livelli per SDD, dischi rigidi e archiviazione cloud di Archiviazione di Azure.
  • Un meccanismo efficiente per riutilizzare lo spazio liberato nella RAM, prevenendo la frammentazione.
  • Limiti configurabili sulla dimensione della memoria utilizzata per indici, log e archiviazione di oggetti.
  • Il protocollo RESP viene utilizzato per accedere allo spazio di archiviazione, che consente di utilizzare Garnet con client Redis non modificati.
  • Supporta la memorizzazione sia di valori stringa che di strutture dati complesse come elenchi, hash, set, elenchi ordinati e dati di geolocalizzazione. Capacità di determinare la durata della chiave.
  • Disponibilità di API per eseguire query analitiche (HLL/Hyperloglog, Bitmap), transazioni (MULTI/EXEC) e utilizzare il paradigma di pubblicazione/sottoscrizione.
  • Disponibilità di mezzi per il controllo flessibile degli accessi tramite ACL.
  • Possibilità di definire la configurazione in formato JSON o redis.conf.
  • Supporto per la connessione di gestori di rete aggiuntivi. Possibilità di crittografare il traffico utilizzando TLS (basato su SslStream).
  • La possibilità di creare estensioni in C# che implementano operazioni aggiuntive con stringhe e oggetti.
  • Supporto per procedure memorizzate transazionali che si estendono su più chiavi.
  • Possibilità di ripristinare lo stato da una posizione precedentemente salvata (checkpoint-recovery). La presenza di una modalità file di sola aggiunta (AOF, file di sola aggiunta), in cui tutti i vecchi dati rimangono disponibili e non vengono sostituiti.
  • Supporto per la creazione di un cluster di storage con replica, sharding, migrazione dinamica delle chiavi tra nodi e ripristino dei nodi guasti.
  • Prestazioni elevate e bassa latenza durante l'esecuzione delle query. Elabora in modo efficiente richieste batch di piccole dimensioni su un numero elevato di sessioni client, consentendo di raggiungere un throughput (numero di richieste elaborate al secondo) di un ordine di grandezza superiore rispetto alle soluzioni concorrenti. Quando viene eseguito in macchine virtuali nel cloud di Azure, nella maggior parte dei casi, la latenza del client non supera i 300 microsecondi. Nei nostri test, Garnet è significativamente avanti rispetto a Redis, Dragonfly e KeyDB in termini di prestazioni e reattività. In alcuni test, Garnet supera i sistemi concorrenti fino a dieci volte.
    Spazio di archiviazione Garnet open source Microsoft compatibile con Redis
    Spazio di archiviazione Garnet open source Microsoft compatibile con Redis
    Spazio di archiviazione Garnet open source Microsoft compatibile con Redis
    Spazio di archiviazione Garnet open source Microsoft compatibile con Redis

Fonte: opennet.ru

Aggiungi un commento