È stato pubblicato il rilascio del DBMS Redis 7.4, appartenente alla classe dei sistemi NoSQL. Redis offre funzionalità per la memorizzazione dei dati in formato chiave/valore, con un'ampia supporto per formati di dati strutturati, come liste, hash e insiemi, oltre alla possibilità di eseguire script handler sul lato server in 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 è stata annunciata 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 licenza BSD possono avvalersi dei progetti Valkey (un fork sviluppato con la partecipazione di Amazon, Google, Oracle, Ericsson e Snap), Redict (un fork dell'autore dell'interfaccia utente Sway e del linguaggio Hare), Garnet (DBMS di Microsoft compatibile con Redis) o KeyDB (un fork altamente performante di Redis 5 di Snapchat).
Le licenze SSPL e RSAL portano a una discriminazione di specifiche categorie di utenti, il che non consente di considerarle aperte o libere. Per i loro obiettivi, entrambe le licenze sono simili, mentre le differenze si riducono al fatto che la licenza SSPL si basa sulla licenza copyleft AGPLv3, mentre la licenza RSAL si basa sulla licenza permissiva BSD. La licenza RSAL consente di utilizzare, modificare, distribuire e integrare il codice nelle applicazioni, a eccezione dei casi in cui queste applicazioni sono commerciali o utilizzate per fornire servizi a pagamento gestiti. La licenza SSPL include ulteriormente il requisito di fornire, sotto la stessa licenza, non solo il codice dell'applicazione, ma anche i codici sorgente di tutti i componenti coinvolti nella fornitura di un servizio cloud.
Il DBMS Redis supporta le transazioni, permettendo di eseguire in un'unica azione un gruppo di comandi, garantendo coerenza e sequenzialità (i comandi di altre richieste non possono intervenire) nell'esecuzione dell'insieme di comandi specificato, e in caso di problemi consente il rollback delle modifiche. Tutti i dati vengono completamente memorizzati nella RAM. Le librerie client sono disponibili per la maggior parte dei linguaggi di programmazione più popolari, tra cui 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), rinominazione delle chiavi, selezioni multiple e funzioni di ordinamento. Sono supportati due modalità di memorizzazione: sincronizzazione periodica dei dati su disco e registrazione su disco delle modifiche. Nel secondo caso, viene garantita la completa sicurezza di tutte le modifiche. È possibile organizzare la replica dei dati master-slave su più server, eseguita in modalità non bloccante. È disponibile anche una modalità di messaggistica "pubblicazione/sottoscrizione", in cui viene creato un canale, i cui messaggi vengono distribuiti ai clienti in base all'iscrizione.
Modifiche chiave nelle funzionalità di Redis 7.4:
- È stata aggiunta la possibilità di limitare la vita di singoli campi in hash e strutture per la memorizzazione di collezioni di record raggruppati in formato chiave-valore. A differenza della definizione del tempo di vita per la chiave, la modifica proposta consente di impostare non solo un tempo di vita complessivo per tutti i campi associati, ma anche valori di tempo di vita individuali per singoli campi, che possono essere utilizzati, ad esempio, per garantire un ciclo di vita più breve dei 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 machine learning e che consentono di ridurre il consumo di memoria rispetto ai precedenti tipi float32 e float64. Utilizzando gli hash, i nuovi tipi permettono di ridurre il consumo di memoria nelle banche dati vettoriali del 47%, diminuire i tempi di estrazione dei dati del 59% e abbreviare il tempo di creazione degli indici del 58% rispetto al tipo float64.
- È stato semplificato l'uso degli indici secondari. Quando si richiede informazioni da indici secondari, ora non è necessario eseguire l'escaping di singoli caratteri speciali, come «@» e «.», ma è possibile utilizzare le virgolette doppie per racchiudere un segmento di dati. È stato inoltre migliorato notevolmente l'indicizzazione di campi vuoti e mancanti: per la creazione di indici e la formulazione di richieste che considerano la presenza di campi, sono state proposte la 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 aggiunte funzionalità per analizzare il consumo di memoria dell'indice.
- È stato aggiunto il supporto per i filtri per escludere elementi nei set di dati aggiunti; ad esempio, durante il caricamento periodico di dati dai sensori nel database, è possibile aggiungere un filtro per ignorare i valori la cui differenza di tempo rispetto al valore precedente è inferiore a un determinato valore soglia.
- È stata interrotta la supporto per trigger e funzioni in JavaScript, proposti nella precedente versione.
Fonte: opennet.ru
