A fost publicat release-ul bazei de date Redis 7.4, care aparține categoriei sistemelor NoSQL. Redis oferă funcții pentru stocarea datelor în format cheie/valoare, extinse prin suportul pentru formate de date structurate, cum ar fi liste, hash-uri și seturi, precum și capacitatea de a executa scripturi de procesare pe server scrise în limbajul Lua. Spre deosebire de sistemele de stocare în memorie, cum ar fi Memcached, Redis stochează baza de date nu doar în memorie, ci și pe disc, ceea ce garantează integritatea bazei de date în cazul unui shutdown necontrolat.
Redis 7.4 a fost desemnat ca prima versiune distribuită cu noi condiții de licențiere — în locul licenței BSD utilizate anterior, codul este acum disponibil sub licențele proprietare RSALv2 (Redis Source Available License v2) și SSPLv1 (Server Side Public License v1). Cei care doresc să continue utilizarea codului sub licența BSD pot apela la proiectele Valkey (fork dezvoltat cu participarea Amazon, Google, Oracle, Ericsson și Snap), Redict (fork de la autorul shell-ului personalizat Sway și limbajului Hare), Garnet (bază de date de la Microsoft compatibilă cu Redis) sau KeyDB (fork de înaltă performanță al Redis 5 de la Snapchat).
Licențele SSPL și RSAL duc la discriminarea anumitor categorii de utilizatori, ceea ce nu permite considerarea lor ca fiind deschise sau libere. În ceea ce privește scopurile lor, ambele licențe sunt similare, iar diferențele se reduc la faptul că licența SSPL se bazează pe licența copyleft AGPLv3, iar licența RSAL se bazează pe licența permisivă BSD. Licența RSAL permite utilizarea, modificarea, distribuirea și integrarea codului în aplicații, exceptând cazurile când aceste aplicații sunt comerciale sau sunt utilizate pentru a oferi servicii gestionate contra cost. Licența SSPL conține suplimentar cerința de a furniza nu doar codul aplicației, ci și codul sursă pentru toate componentele implicate în furnizarea serviciului de cloud sub aceeași licență.
Sistemul de gestionare a bazelor de date Redis suportă tranzacții, care permit executarea unui grup de comenzi într-o singură etapă, garantând coerența și ordonarea (comenzile din alte cereri nu pot interveni) execuției unui set specific de comenzi, iar în caz de probleme, permitând anularea modificărilor. Toate datele sunt stocate complet în memoria RAM. Bibliotecile client sunt disponibile pentru majoritatea limbajelor populare, inclusiv Perl, Python, PHP, Java, Ruby și Tcl.
Pentru gestionarea datelor, sunt disponibile comenzi precum incrementare/decrementare, operații standard asupra listelor și mulțimilor (unire, intersecție), redenumirea cheilor, selecții multiple și funcții de sortare. Sunt suportate două moduri de stocare: sincronizarea periodică a datelor pe disc și păstrarea unui jurnal de modificări pe disc. În cel de-al doilea caz, se garantează integritatea completă a tuturor modificărilor. Este posibilă organizarea replicării master-slave a datelor pe mai multe servere, efectuată într-un mod non-blocant. Este disponibil și un mod de schimb de mesaje "publicare/subscriere", în care se creează un canal, iar mesajele din acesta sunt distribuite clienților prin subscriere.
Schimbările cheie în funcționalitatea Redis 7.4:
- A fost adăugată posibilitatea de a limita durata de viață a unor câmpuri din hash-uri, structuri pentru stocarea colecțiilor de înregistrări grupate în format cheie-valoare. Spre deosebire de setarea unei durate de viață pentru întreaga cheie, modificarea propusă permite stabilirea nu doar a unei durate generale de viață pentru toate câmpurile asociate, ci și a valorilor individuale ale duratelor de viață pentru câmpuri distincte, ceea ce poate fi folosit, de exemplu, pentru a asigura un ciclu de viață mai scurt pentru token-urile de autentificare în comparație cu alte date de sesiune.
- Au fost propuse noi tipuri de date bfloat16 și float16, optimizate pentru utilizarea în aplicațiile de învățare automată și care permit reducerea consumului de memorie în comparație cu tipurile disponibile anterior float32 și float64. Atunci când sunt utilizate în hash-uri, noile tipuri permit reducerea consumului de memorie în baza de date vectorială cu 47%, diminuarea întârzierilor la extragerea datelor cu 59% și scurtarea timpului de creare a indexurilor cu 58% în comparație cu tipul float64.
- Utilizarea indexurilor secundare a fost simplificată. Când solicitați informații din indexuri secundare, nu mai este necesar să scăpați caracteristici speciale, cum ar fi „@” și „.”, ci puteți utiliza ghilimelele pentru a încadra porțiunile de date. De asemenea, indexarea câmpurilor goale și lipsă a fost semnificativ îmbunătățită — pentru crearea de indexuri și formularea de interogări care țin cont de existența câmpurilor, s-au propus cuvântul cheie nou INDEXMISSING și funcția ismissing(). Au fost adăugate noi operatori INTERSECT și DISJOINT pentru a simplifica căutarea datelor geospațiale. Au fost introduse noi posibilități pentru analiza consumului de memorie al indexului.
- A fost adăugată suport pentru filtre pentru a exclude elementele din seturile de date adăugate, de exemplu, în timpul încărcării periodice în baza de date a datelor de la senzori, se poate adăuga un filtru pentru a ignora valorile a căror diferență de timp de la valoarea anterioară este mai mică decât un anumit prag.
- Suportul pentru declanșatoare și funcții scrise în JavaScript, sugerate în versiunea precedentă, a fost oprit.
Sursa: opennet.ro
