È stato rilasciato il DBMS Valkey 9.0, che l'anno scorso si è distaccato dal DBMS Redis. Il fork è stato creato dopo che Redis 7.4 è stato trasferito a una licenza proprietaria. Nella versione Redis 8.0, il codice è stato riportato alla licenza libera AGPLv3, ma ciò non ha influito sullo sviluppo del progetto Valkey. Valkey si sviluppa su una piattaforma neutrale sotto l'egida dell'organizzazione Linux Foundation con la partecipazione di sviluppatori di aziende come Amazon, Google, Oracle, Ericsson e Snap. Il codice del progetto è scritto in linguaggio C e distribuito sotto licenza BSD. È supportato su Linux, macOS, OpenBSD, NetBSD e FreeBSD.
I DBMS Valkey e Redis offrono funzioni per la memorizzazione dei dati in formato chiave/valore, ampliate dal supporto per formati di dati strutturati come liste, hash e insiemi, oltre alla possibilità di eseguire server script di elaborazione in linguaggio Lua. I dati vengono memorizzati in memoria e sincronizzati con la versione su disco o riflessi nel registro delle modifiche su disco, garantendo la preservazione dei dati in caso di arresto anomalo. Sono supportate transazioni, modalità di "pubblicazione/sottoscrizione", comandi per incremento/decremento, operazioni su liste e insiemi (unione, intersezione), rinominazione delle chiavi, replica master-slave, interrogazioni multiple e funzioni di ordinamento.
Nella nuova versione:
- Per il trasferimento dei dati tra i nodi di un cluster viene utilizzata la tecnica di migrazione atomica degli slot, in cui i dati vengono trasferiti non a livello di singole chiavi (una chiave alla volta), ma a livello di movimento atomico di 16384 slot di memoria. Il trasferimento avviene utilizzando il formato AOF, che consente di inviare singoli elementi delle collezioni invece di tutti i dati associati a una chiave. Questo approccio aumenta significativamente le prestazioni, evita i reindirizzamenti ed elimina i ritardi che si verificano quando il client accede alla chiave in fase di trasferimento.
- È stata aggiunta la possibilità di definire un tempo di vita diverso per i vari campi negli hash associati a una chiave (in precedenza il tempo di vita era legato alla chiave e riguardava tutti i campi contemporaneamente). Sono stati aggiunti nuovi comandi per la gestione del tempo di vita dei dati: HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX e HTTL.
- È stata fornita la possibilità di utilizzare modalità cluster per database numerati, in cui lo spazio delle chiavi è suddiviso in diversi database (di default 16).
- È stata aumentata l'efficienza del funzionamento di grandi cluster: è stato dimostrato un cluster di 2000 nodi in grado di gestire un miliardo di richieste al secondo.
- È stata aggiunta un'ottimizzazione che consente in alcune situazioni di aumentare la capacità di elaborazione del 40% grazie al caricamento anticipato di comandi raggruppati (pipelining) in memoria.
- È stata aggiunta un'ottimizzazione che consente in alcune situazioni di aumentare la capacità di elaborazione del 20% escludendo la copia dei dati in memoria (zero copy) durante la gestione di grandi richieste.
- È stato aggiunto il supporto per la tecnologia Multipath TCP per l'organizzazione della consegna dei pacchetti simultaneamente su più percorsi attraverso diverse interfacce di rete collegate a diversi indirizzi IP. L'uso di Multipath TCP consente in alcune situazioni di ridurre i ritardi del 25%.
- Sono state aggiunte ottimizzazioni a BITCOUNT e HyperLogLog che utilizzano istruzioni del processore SIMD, consentendo in alcune situazioni di aumentare la capacità di elaborazione del 200%.
- Negli indici geospaziali è stato aggiunto il supporto per le richieste di posizione tramite le coordinate di un poligono.
- È stato aggiunto il comando 'DELIFEQ' per rimuovere una chiave se il valore associato corrisponde a quello specificato.
- Nel comando 'CLIENT LIST' è stata implementata la possibilità di impostare filtri che escludono gli elementi in base a nome, flag, attività, database, indirizzo IP e autorizzazioni.
- È stato ripristinato il supporto per 25 comandi precedentemente dichiarati obsoleti.
Fonte: opennet.ru
