Projekti Redis iu rikthye përdorimit të një licence të hapur. U prezantua Redis 8.0

Kompania Redis Ltd njoftoi ndryshimin e politikĂ«s sĂ« licencimit tĂ« projektit. Duke filluar nga versioni Redis 8.0, kodi i projektit Ă«shtĂ« bĂ«rĂ« i disponueshĂ«m nĂ«n licencĂ«n e lirĂ« AGPLv3. Kalimi te njĂ« licencĂ« e hapur u bĂ« i mundur falĂ« rikthimit nĂ« kompani tĂ« Salvatore Sanfilippo, krijuesit tĂ« DBMS Redis. Pas largimit tĂ« tij nga Redis Ltd, Salvatore zhvilloi njĂ« grup zgjerimesh vektoriale (Vector Sets), tĂ« cilat ishte i gatshĂ«m t’i pĂ«rfshinte nĂ« Redis, por dĂ«shironte qĂ« kodi i krijuar prej tij tĂ« shpĂ«rndahej me njĂ« licencĂ« tĂ« hapur. Salvatore arriti t’i bindĂ« kolegĂ«t pĂ«r dobinĂ« e rikthimit tĂ« karakterit tĂ« hapur tĂ« projektit dhe pĂ«rmirĂ«simit tĂ« bashkĂ«punimit me komunitetin.

Rowan Trollope, drejtor i Redis Ltd, deklaroi se kalimi te licencat pronĂ«sore i kryer vitin e kaluar e arriti qĂ«llimin e vet, pasi AWS dhe Google krijuan njĂ« fork, nisĂ«n tĂ« marrin pjesĂ« nĂ« zhvillimin e pĂ«rbashkĂ«t dhe tĂ« ndajnĂ« punĂ«t e tyre tĂ« mĂ«parshme. MegjithatĂ«, ndryshimi i licencave dĂ«mtoi marrĂ«dhĂ«niet me komunitetin, tĂ« cilat kompania tani do tĂ« pĂ«rpiqet t’i rikthejĂ« duke iu kthyer shpĂ«rndarjes sĂ« kodit nĂ«n njĂ« licencĂ« tĂ« lirĂ«.

Pas kalimit te licencat pronësore, zhvillimi i bazës së hapur të kodit të Redis vazhdoi në fork-et Valkey (një fork i zhvilluar me pjesëmarrjen e Amazon, Google, Oracle, Ericsson dhe Snap), Redict (një fork nga autori i shell-it të përdoruesit Sway dhe gjuhës Hare), Garnet (një DBMS nga Microsoft, i përputhshëm me Redis) dhe KeyDB (një fork me performancë të lartë i Redis 5 nga Snapchat). Në depozitat e shpërndarjeve Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux dhe Alpine 3.20, paketa Redis është zëvendësuar me fork-un Valkey.

Fillimisht, Redis shpĂ«rndahej me licencĂ«n permissive BSD, e cila lejonte qĂ« ndryshimet e bĂ«ra tĂ« mos publikoheshin, ndĂ«rsa mĂ« pas kaloi te licencat pronĂ«sore RSALv2 (Redis Source Available License v2) dhe SSPLv1 (Server Side Public License v1). Duke filluar nga Redis 8, kodi i projektit Ă«shtĂ« i disponueshĂ«m me licencĂ«n AGPLv3, veçoria kryesore e sĂ« cilĂ«s janĂ« kufizimet pĂ«r aplikacionet qĂ« sigurojnĂ« funksionimin e shĂ«rbimeve tĂ« rrjetit. Kur komponentĂ«t AGPL pĂ«rdoren nĂ« funksionimin e shĂ«rbimeve tĂ« rrjetit, zhvilluesi Ă«shtĂ« i detyruar t’i vĂ«rĂ« nĂ« dispozicion pĂ«rdoruesit kodin burimor tĂ« tĂ« gjitha ndryshimeve tĂ« bĂ«ra nĂ« kĂ«ta komponentĂ«, edhe nĂ«se softueri mbi tĂ« cilin mbĂ«shtetet shĂ«rbimi nuk shpĂ«rndahet dhe pĂ«rdoret vetĂ«m brenda infrastrukturĂ«s sĂ« brendshme pĂ«r organizimin e punĂ«s sĂ« shĂ«rbimit. Licenca AGPLv3 Ă«shtĂ« e pĂ«rputhshme me GPLv3, por bie nĂ« konflikt me licencĂ«n GPLv2.

Licencat SSPL dhe RSAL të përdorura më parë çonin në diskriminimin e disa kategorive të përdoruesve, gjë që nuk lejonte që ato të konsideroheshin si të hapura ose të lira. Për nga qëllimi, të dyja licencat janë të ngjashme me njëra-tjetrën, ndërsa ndryshimi kryesor qëndron në faktin se licenca SSPL bazohet në licencën copyleft AGPLv3, ndërsa licenca RSAL bazohet në licencën permissive BSD. Licenca RSAL lejon përdorimin, ndryshimin, shpërndarjen dhe integrimin e kodit në aplikacione, me përjashtim të rasteve kur këto aplikacione janë komerciale ose përdoren për ofrimin e shërbimeve të menaxhuara me pagesë. Licenca SSPL përfshin gjithashtu kërkesën që, me të njëjtën licencë, të shpërndahet jo vetëm kodi i vetë aplikacionit, por edhe kodi burimor i të gjithë komponentëve të përfshirë në ofrimin e një shërbimi cloud.

Njëkohësisht me njoftimin për ndryshimin e licencës, u prezantua edhe publikimi i Redis 8.0. Megjithatë, pavarësisht njoftimit për disponueshmërinë e versionit, në depo aktualisht është vendosur vetëm kandidati për publikim, ndërsa lidhja për shkarkimin e Redis 8.0 në faqen e projektit të çon te një faqe me përshkrimin e përgjithshëm të procesit të instalimit. Edhe në shënimin e publikimit, për momentin përmendet vetëm dalja e versionit 8.0-RC1.

Ndryshimet kryesore në Redis 8.0:

  • ËshtĂ« shtuar njĂ« tip pĂ«r ruajtjen e grupeve tĂ« tĂ« dhĂ«nave vektoriale, i kĂ«rkuar nĂ« sistemet e machine learning dhe kĂ«rkimit semantik. Grupet vektoriale (vector set) zgjerojnĂ« funksionalitetin e mĂ«parshĂ«m tĂ« sorted set me mundĂ«sinĂ« e ruajtjes sĂ« vektorĂ«ve shumĂ«dimensionalĂ«. PĂ«r manipulimin e tĂ« dhĂ«nave vektoriale janĂ« shtuar 11 komanda tĂ« reja, si VADD, VREM dhe VSIM.
  • NĂ« pĂ«rbĂ«rjen bazĂ« tĂ« Redis janĂ« integruar modulet Redis Query Engine, JSON, Time Series dhe Probabilistic Data Types, tĂ« cilat mĂ« parĂ« ofroheshin si zgjerime tĂ« veçanta tĂ« Redis Stack.
  • ËshtĂ« integruar mbĂ«shtetja pĂ«r strukturĂ«n e tĂ« dhĂ«nave JSON, e cila lejon ruajtjen e dokumenteve nĂ« formatin JSON tĂ« lidhura me çelĂ«sat nĂ« Redis. PĂ«r nxjerrjen selektive tĂ« dokumenteve JSON dhe qasjen te elementĂ«t e veçantĂ« mund tĂ« pĂ«rdoret gjuha e pyetjeve JSONPath. Ekziston edhe mbĂ«shtetje pĂ«r pĂ«rditĂ«sim atomik, qĂ« lejon ndryshimin e fushave tĂ« veçanta tĂ« njĂ« dokumenti JSON pa ngarkuar tĂ« gjithĂ« dokumentin.
  • ËshtĂ« shtuar mbĂ«shtetja pĂ«r struktura tĂ« tĂ« dhĂ«nave nĂ« formĂ«n e serive kohore (ku njĂ« regjistrim pĂ«rbĂ«het nga koha dhe njĂ« grup vlerash pĂ«rkatĂ«se pĂ«r atĂ« moment, pĂ«r shembull, tĂ« marra nga kontrolli periodik i gjendjes sĂ« sensorĂ«ve ose mbledhja e metrikave). PĂ«r tĂ« ulur konsumin e memories pĂ«rdoren algoritme kompresimi pĂ«r tĂ« dhĂ«na tĂ« tilla dhe ofrohet mundĂ«sia pĂ«r tĂ« pĂ«rcaktuar rregulla pĂ«r downsampling tĂ« tĂ« dhĂ«nave arkivore.
  • JanĂ« shtuar struktura probabilistike tĂ« tĂ« dhĂ«nave: Bloom filter, Cuckoo filter, Count-min sketch, Top-k dhe t-digest, tĂ« cilat mundĂ«sojnĂ« ulje tĂ« ndjeshme tĂ« madhĂ«sisĂ« sĂ« ruajtjes kur duhet tĂ« mbahen vĂ«llime shumĂ« tĂ« mĂ«dha tĂ« dhĂ«nash, duke pranuar humbje tĂ« saktĂ«sisĂ« nĂ« disa operacione. Bloom filter dhe Cuckoo filter lejojnĂ« verifikimin e pĂ«rkatĂ«sisĂ« nĂ« njĂ« bashkĂ«si, duke toleruar identifikimin e gabuar tĂ« njĂ« elementi qĂ« mungon, por pa lejuar anashkalimin e njĂ« elementi ekzistues. Count-min sketch parashikon numrin e pĂ«rmendjeve tĂ« njĂ« vlere nĂ« njĂ« bashkĂ«si. Top-k mundĂ«son gjetjen e vlerave qĂ« shfaqen mĂ« shpesh. T-digest jep mundĂ«sinĂ« pĂ«r tĂ« kryer pĂ«rzgjedhje tĂ« vlerave qĂ« janĂ« mĂ« tĂ« mĂ«dha ose mĂ« tĂ« vogla se njĂ« prag i caktuar.
  • NĂ« pĂ«rbĂ«rje Ă«shtĂ« pĂ«rfshirĂ« motori Redis Query Engine me mbĂ«shtetje pĂ«r kĂ«rkim vektorial dhe me mundĂ«si pĂ«r krijimin e pĂ«rzgjedhjeve sipas pĂ«rmbajtjes, jo sipas çelĂ«save. Redis Query Engine lejon krijimin e indekseve shtesĂ« pĂ«r tĂ« dhĂ«nat e vendosura nĂ« hash-e dhe dokumente JSON.
  • ËshtĂ« zgjeruar mbĂ«shtetja pĂ«r ACL (Access Control Lists), qĂ« mundĂ«son menaxhimin e qasjes nĂ« tĂ« dhĂ«na nĂ« bazĂ« tĂ« çelĂ«save dhe lejon pĂ«rcaktimin e grupeve tĂ« ndryshme tĂ« rregullave tĂ« qasjes pĂ«r komandat, me mundĂ«sinĂ« e lidhjes sĂ« grupeve tĂ« lejeve me secilin pĂ«rdorues. PĂ«r shembull, me ndihmĂ«n e ACL mund tĂ« pĂ«rcaktohet se cilĂ«t pĂ«rdorues mund tĂ« lidhen me Redis, te cilĂ«t çelĂ«sa ka qasje njĂ« pĂ«rdorues dhe cilat komanda mund tĂ« ekzekutojĂ«. NĂ« Redis 8 janĂ« shtuar kategori tĂ« reja ACL pĂ«r strukturat e reja tĂ« tĂ« dhĂ«nave.
  • JanĂ« shtuar komanda tĂ« reja pĂ«r punĂ« me hash-et:
    • HGETDEL — merr dhe fshin fushat e hash-it pĂ«r çelĂ«sin e specifikuar.
    • HGETEX — merr fushat e hash-it pĂ«r çelĂ«sin e specifikuar dhe cakton kohĂ«n e vlefshmĂ«risĂ« pĂ«r to.
    • HSETEX — vendos fushat e hash-it pĂ«r çelĂ«sin e specifikuar dhe cakton kohĂ«n e vlefshmĂ«risĂ« pĂ«r to.
  • JanĂ« bĂ«rĂ« mĂ« shumĂ« se 30 optimizime tĂ« performancĂ«s, tĂ« cilat nĂ« disa teste kanĂ« sjellĂ« pĂ«rshpejtim tĂ« ekzekutimit tĂ« komandave deri nĂ« 87%, rritje tĂ« kapacitetit pĂ«rpunues me 112%, pĂ«rshpejtim tĂ« replikimit me 18% dhe pĂ«rshpejtim tĂ« kĂ«rkimit nĂ« Redis Query Engine deri nĂ« 16 herĂ« (falĂ« shkallĂ«zimit horizontal dhe vertikal). GjatĂ« kalimit tĂ« njĂ« pakete prej 149 testesh, 90 komanda nisĂ«n tĂ« ekzekutohen mĂ« shpejt. Kapaciteti pĂ«rpunues u rrit ndjeshĂ«m falĂ« kalimit nĂ« punĂ« shumĂ«fijĂ«she tĂ« komponentĂ«ve pĂ«r analizimin e komandave, pĂ«rpunimin e kĂ«rkesave tĂ« klientĂ«ve, leximin dhe shkrimin nĂ« socket-et e rrjetit. ËshtĂ« propozuar njĂ« implementim i ri i mekanizmit tĂ« pĂ«rpunimit shumĂ«fijĂ«sh tĂ« hyrje/daljeve (io-threads).
  • ËshtĂ« prezantuar njĂ« mekanizĂ«m i ri replikimi, qĂ« konsumon 35% mĂ« pak memorie dhe punon 18% mĂ« shpejt. PĂ«r tĂ« shmangur bllokimet pĂ«rdoren dy fije tĂ« veçanta replikimi — njĂ«ra pĂ«r transmetimin e ndryshimeve te nyja kryesore, dhe tjetra pĂ«r transmetimin e ndryshimeve te nyjet ndĂ«rmjetĂ«se.

Për menaxhimin e të dhënave në DBMS Redis ofrohen komanda si increment/decrement, operacione standarde me lista dhe bashkësi (union, intersection), riemërtimi i çelësave, përzgjedhje të shumëfishta dhe funksione renditjeje. Mbështeten dy mënyra ruajtjeje: sinkronizimi periodik i të dhënave në disk dhe mbajtja në disk e regjistrit të ndryshimeve. Në rastin e dytë garantohet ruajtja e plotë e të gjitha ndryshimeve. Mbështeten edhe transaksionet, të cilat lejojnë ekzekutimin në një hap të një grupi komandash, duke garantuar integritetin dhe rendin e ekzekutimit të grupit të përcaktuar të komandave (komandat nga kërkesa të tjera nuk mund të ndërhyjnë), si edhe mundësojnë kthimin pas të ndryshimeve në rast problemesh.

ËshtĂ« e mundur tĂ« organizohet replikimi master-slave i tĂ« dhĂ«nave nĂ« disa serverĂ«sh, i cili realizohet nĂ« modalitet jo-bllokues. ËshtĂ« i disponueshĂ«m gjithashtu edhe modaliteti i shkĂ«mbimit tĂ« mesazheve «publikim/pajtim», ku krijohet njĂ« kanal dhe mesazhet prej tij shpĂ«rndahen te klientĂ«t e abonuar. TĂ« gjitha tĂ« dhĂ«nat ruhen plotĂ«sisht nĂ« cache nĂ« memorien operative. Bibliotekat e klientit janĂ« tĂ« disponueshme pĂ«r shumicĂ«n e gjuhĂ«ve tĂ« njohura, pĂ«rfshirĂ« Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go dhe C#.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster