È stato pubblicato il rilascio del DBMS Redis 7.4, appartenente alla categoria dei sistemi NoSQL. Redis offre funzionalità per la memorizzazione dei dati in formato chiave/valore, ampliate dal supporto per formati di dati strutturati come liste, hash e set, oltre alla possibilità di eseguire script di gestione sul server utilizzando il linguaggio Lua. A differenza dei sistemi di memorizzazione in memoria, come Memcached, Redis memorizza il database non solo in memoria, ma anche su disco, garantendo la conservazione del database in caso di arresto anomalo.
Redis 7.4 è stato annunciato come la prima versione distribuita con nuove condizioni di licenza: invece della precedente licenza BSD, il codice è ora disponibile sotto licenze proprietarie RSALv2 (Redis Source Available License v2) e SSPLv1 (Server Side Public License v1). Coloro che desiderano continuare a utilizzare il codice sotto la licenza BSD possono avvalersi dei progetti Valkey (un fork sviluppato con la partecipazione di Amazon, Google, Oracle, Ericsson e Snap), Redict (un fork da parte dell'autore dell'interfaccia utente Sway e del linguaggio Hare), Garnet (un DBMS di Microsoft compatibile con Redis) o KeyDB (un fork ad alte prestazioni di Redis 5 da Snapchat).
Le licenze SSPL e RSAL portano a discriminazioni di specifiche categorie di utenti, il che non consente di considerarle aperte o gratuite. Per i loro obiettivi, entrambe le licenze sono simili, mentre le differenze risiedono nel fatto che la licenza SSPL si basa su una licenza copyleft AGPLv3, mentre la licenza RSAL si basa su una licenza permissiva BSD. La licenza RSAL consente di utilizzare, modificare, distribuire e integrare il codice nelle applicazioni, a meno che queste ultime non siano commerciali o utilizzate per fornire servizi a pagamento gestiti. La licenza SSPL contiene inoltre il requisito di fornire, sotto la stessa licenza, non solo il codice dell'applicazione stessa, ma anche il codice sorgente di tutti i componenti coinvolti nella fornitura del servizio cloud.
Il DBMS Redis supporta le transazioni, consentendo di eseguire un gruppo di comandi in un'unica operazione, garantendo coerenza e sequenzialità (le comandi di altre richieste non possono interferire) durante l'esecuzione del set di comandi designato, e permettendo di annullare le modifiche in caso di problemi. Tutti i dati vengono completamente memorizzati in cache nella memoria volatile. Le librerie client sono disponibili per la maggior parte dei linguaggi popolari, inclusi Perl, Python, PHP, Java, Ruby e Tcl.
Per gestire i dati, sono disponibili comandi come incremento/decremento, operazioni standard su liste e set (unione, intersezione), rinominare chiavi, selezioni multiple e funzioni di ordinamento. Sono supportati due modalità di archiviazione: sincronizzazione periodica dei dati su disco e mantenimento di un log delle modifiche su disco. In quest'ultimo caso, è garantita la completa integrità di tutte le modifiche. È possibile organizzare la replica master-slave dei dati su più server, eseguita in modalità non bloccante. È disponibile anche la modalità di messaggistica "pubblicazione/sottoscrizione", in cui viene creato un canale, i cui messaggi vengono distribuiti ai clienti in base alla sottoscrizione.
Modifiche chiave nelle funzionalità di Redis 7.4:
- È stata aggiunta la possibilità di limitare la vita di singoli campi negli hash, strutture per memorizzare collezioni di record in formato chiave-valore. A differenza dell'attribuzione di un tempo di vita alla chiave, la modifica proposta consente di impostare non solo un tempo di vita generale per tutti i campi correlati, ma anche valori di tempo di vita individuali per campi specifici, il che può essere utilizzato, ad esempio, per garantire un ciclo di vita più breve per i token di autenticazione, rispetto ad altri dati di sessione.
- Sono stati proposti nuovi tipi di dati bfloat16 e float16, ottimizzati per l'uso in applicazioni di apprendimento automatico e che consentono di ridurre il consumo di memoria rispetto ai tipi precedentemente disponibili float32 e float64. Quando utilizzati negli hash, i nuovi tipi consentono una riduzione del consumo di memoria nelle DB vectoriali del 47%, riducono i tempi di estrazione dei dati del 59% e accorciano il tempo di creazione degli indici del 58% rispetto al tipo float64.
- È stato semplificato l'uso degli indici secondari. Quando si richiede informazioni dagli indici secondari, ora non è necessario eseguire l'escaping di singoli caratteri speciali, come "@" e ".", ma è possibile utilizzare le virgolette doppie per racchiudere il gruppo di dati. È stato inoltre notevolmente migliorato l'indicizzazione di campi vuoti o mancanti: per la creazione di indici e la formazione di query che tengono conto della presenza di campi, è stata proposta una nuova parola chiave INDEXMISSING e la funzione ismissing(). Sono stati aggiunti nuovi operatori INTERSECT e DISJOINT per semplificare la ricerca di dati geospaziali. Sono state introdotte funzionalità per analizzare il consumo di memoria dall'indice.
- È stato aggiunto il supporto per filtri per escludere elementi dai set di dati aggiunti, ad esempio, durante il caricamento periodico in DB di dati provenienti da sensori, è possibile aggiungere un filtro per ignorare i valori la cui differenza temporale rispetto al valore precedente è inferiore a un determinato valore soglia.
- È stata interrotta la supporto per trigger e funzioni in linguaggio JavaScript, proposti nel rilascio precedente.
Fonte: opennet.ru
