Proiectul Redis a revenit la utilizarea unei licențe deschise. A fost lansat Redis 8.0

Compania Redis Ltd a anunțat o schimbare în politica de licențiere a proiectului. Începând cu versiunea Redis 8.0, codul proiectului a devenit disponibil sub licența liberă AGPLv3. Trecerea la o licență deschisă a fost posibilă datorită întoarcerii în companie a lui Salvatore Sanfilippo, creatorul bazei de date Redis. După plecarea sa din Redis Ltd, Salvatore a dezvoltat un set de extensii vectoriale (Vector Sets), pe care dorea să le integreze în Redis, dar dorea ca codul său să fie furnizat sub o licență deschisă. Salvatore a reușit să-și convingă colegii de oportunitatea restabilirii naturii deschise a proiectului și de îmbunătățirea interacțiunii cu comunitatea.

Rowan Trollope, directorul Redis Ltd, a declarat că tranziția realizată anul trecut la licențe proprietare și-a atins obiectivele, deoarece companiile AWS și Google au fondat un fork, au început să participe la dezvoltarea colaborativă și să împărtășească realizările lor anterioare. Totuși, schimbarea licențelor a afectat relațiile cu comunitatea, pe care compania acum va încerca să le restabilească, revenind la furnizarea codului sub licența liberă.

După trecerea la licențe proprietare, dezvoltarea bazei de cod deschis Redis a continuat în fork-uri precum Valkey (fork dezvoltat cu participarea Amazon, Google, Oracle, Ericsson și Snap), Redict (fork de la autorul interfeței de utilizare Sway și limbajului Hare), Garnet (SGBD de la Microsoft, compatibil cu Redis) sau KeyDB (fork performant Redis 5 de la Snapchat). În repositoarele distribuțiilor Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux și Alpine 3.20, pachetul Redis a fost înlocuit cu fork-ul Valkey.

Inițial, Redis a fost distribuit sub o licență permisivă BSD, care permitea nedezvăluirea modificărilor efectuate, însă ulterior a trecut la licențe proprietare RSALv2 (Redis Source Available License v2) și SSPLv1 (Server Side Public License v1). Începând cu Redis 8, codul proiectului este disponibil sub licența AGPLv3, care se caracterizează prin existența unor restricții pentru aplicațiile care asigură funcționarea serviciilor de rețea. Atunci când se utilizează componente AGPL în cadrul serviciilor de rețea, dezvoltatorul este obligat să furnizeze utilizatorului codul sursă al tuturor modificărilor efectuate asupra acestor componente, chiar dacă software-ul de bază al serviciului nu este distribuit și este folosit exclusiv în infrastructura internă pentru organizarea funcționării serviciului. Licența AGPLv3 este compatibilă cu GPLv3, dar intră în conflict cu licența GPLv2.

Licențele SSPL și RSAL utilizate anterior au dus la discriminarea anumitor categorii de utilizatori, ceea ce nu le permitea să fie considerate deschise sau libere. În ceea ce privește obiectivele lor, ambele licențe sunt asemănătoare, 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, distribuția și integrarea codului în aplicații, cu excepția cazurilor în care aceste aplicații sunt comerciale sau sunt folosite pentru a oferi servicii plătite gestionate. Licența SSPL conține adăugiri care impun furnizarea sub aceeași licență nu doar a codului aplicației în sine, ci și a codului sursă al tuturor componentelor implicate în furnizarea serviciului de cloud.

Odată cu anunțul schimbării licenței, a fost lansată versiunea Redis 8.0. Cu toate acestea, în ciuda anunțului privind disponibilitatea versiunii, în repozitoriu se află doar un candidat pentru lansare, iar linkul pentru descărcarea Redis 8.0 de pe site-ul proiectului duce la o pagină cu o descriere generală a procesului de instalare. În notele de lansare, de asemenea, este menționată doar versiunea 8.0-RC1.

Principalele modificări în Redis 8.0:

  • A fost adăugat un tip pentru stocarea seturilor de vectori, cerute în sistemele de învățare automată și căutarea semantică. Seturile de vectori (vector set) extind funcționalitatea anterioară a listelor ordonate (sorted set) cu capacitatea de a stoca vectori multidimensionali. Au fost adăugate 11 comenzi noi pentru manipularea datelor vectoriale, cum ar fi VADD, VREM și VSIM.
  • Modulele Redis Query Engine, JSON, Time Series și Probabilistic Data Types, care anterior erau livrate sub formă de extensii separate în Redis Stack, au fost incorporate în structura de bază a Redis.
  • A fost integrat suportul pentru structura de date JSON, permițând salvarea documentelor în format JSON legate de chei în Redis. Pentru extragerea selectivă a documentelor JSON și accesul la elemente individuale poate fi utilizat limbajul de interogare JSONPath. Există suport pentru actualizări atomice, permițând modificări ale câmpurilor individuale ale documentului JSON fără a încărca întregul document.
  • A fost adăugat suportul pentru structuri de date sub formă de serii temporale (înregistrarea formează timpul și un set de valori corespunzătoare acestui timp, de exemplu, obținute prin sondarea periodică a stării senzorilor sau colectarea de metrici). Pentru a reduce consumul de memorie au fost utilizate algoritmi de comprimare a acestor date și a fost oferită posibilitatea de a define reguli de reducere a datelor arhivate (downsampling).
  • Au fost adăugate structuri de date probabilistice: Bloom filter, Cuckoo filter, Count-min sketch, Top-k și t-digest, care permit reducerea semnificativă a dimensiunii stocării atunci când este necesară salvarea unor volume foarte mari de date prin pierderea preciziei în timpul executării unor operațiuni. «Bloom filter» și «Cuckoo filter» permit verificarea apartenenței la un set, acceptând false acceptări ale elementelor lipsă, dar excluzând omisiunea unui element existent. «Count-min sketch» prezice numărul de menționări ale unei valori în set. «Top-k» permite găsirea valorilor cele mai frecvente. «T-digest» oferă posibilitatea de a efectua extrageri ale valorilor, mai mari sau mai mici decât cele date.
  • A fost inclus motorul „Redis Query Engine” cu suport pentru căutare pe bază de vectori și capacități de generare a extragerilor pe baza conținutului, nu pe baza cheilor. Redis Query Engine permite crearea de indecși suplimentari pentru datele stocate în hash-uri și documente JSON.
  • A fost extins suportul pentru ACL (Liste de Control al Accesului), care permite gestionarea accesului la date pe baza cheilor și permite definirea unor seturi diferite de reguli de acces la comenzi, având posibilitatea de a lega seturile de permisiuni de fiecare utilizator. De exemplu, prin intermediul ACL-urilor, se poate defini ce utilizatori se pot conecta la Redis, la ce chei are acces un utilizator și ce comenzi poate executa. În Redis 8 au fost adăugate noi categorii ACL pentru noile structuri de date.
  • Au fost adăugate comenzi noi pentru gestionarea hash-urilor:
    • HGETDEL — returnează și șterge câmpurile unui hash pe baza cheii specificate.
    • HGETEX — returnează câmpurile unui hash pe baza cheii specificate și specifică pentru acestea un timp de viață.
    • HSETEX — setează câmpurile unui hash pe baza cheii specificate și specifică pentru acestea un timp de viață.
  • Au fost aduse peste 30 de optimizări ale performanței, care în anumite teste au dus la accelerarea execuției comenzilor cu 87%, la creșterea capacității de procesare cu 112%, la accelerarea replicării cu 18% și la accelerarea interogărilor în Redis Query Engine de până la 16 ori (datorită scalării orizontale și verticale). În urma unui set de 149 de teste, 90 de comenzi au devenit mai rapide. Capacitatea de procesare a crescut semnificativ, datorită trecerii la operarea multithread a componentelor pentru analiza comenzilor, procesarea cererilor clienților, citirea și scrierea în socket-uri de rețea. A fost propusă o nouă implementare a mecanismului de procesare multithread a intrărilor/ieșirilor (io-threads).
  • A fost prezentat un nou mecanism de replicare, care consumă cu 35% mai puțină memorie și funcționează cu 18% mai repede. Pentru a evita blocările, sunt folosite două fire de replicare separate — unul pentru transmiterea modificărilor către nodul principal, iar celălalt pentru transmiterea modificărilor către nodurile intermediare.

Pentru gestionarea datelor în baza de date Redis, sunt disponibile comenzi precum incrementare/decrementare, operațiuni standard pe liste și mulțimi (uniune, 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ă păstrarea completă a tuturor modificărilor. Sunt suportate tranzacții, permițând executarea unui grup de comenzi într-o singură etapă, garantând coerența și secvența (comenzile din alte cereri nu pot interveni) execuției unui set dat de comenzi, iar în caz de probleme permitând anularea modificărilor.

Este posibilă organizarea replicării master-slave a datelor pe mai multe servere, realizată în mod non-blocant. De asemenea, este disponibil modul de schimb de mesaje „publicare/abonare”, în care se creează un canal, mesajele din care sunt distribuite clienților pe baza abonamentului. Toate datele sunt complet stocate în memoria RAM. Bibliotecile client sunt disponibile pentru cele mai populare limbaje, inclusiv Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go și C#.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster