Objavljen je izdanak baze podataka Redis 7.4, koja pripada klasi NoSQL sustava. Redis pruža funkcije za pohranu podataka u formatu ključ/vrijednost, proširene podrškom za strukturirane formate podataka kao što su liste, heševi i skupovi, kao i mogućnost izvođenja server-side skripti pisanih u Lua. Za razliku od sustava za pohranu u memoriji, poput Memcached-a, Redis pohranjuje bazu podataka ne samo u memoriji, već i na disku, što osigurava sigurnost baze podataka u slučaju iznenadnog prekida rada.
Redis 7.4 je proglašen kao prva verzija koja se distribuira s novim uvjetima licenciranja — umjesto ranije korištene BSD licence, kod je sada dostupan pod proprietarnim licencama RSALv2 (Redis Source Available License v2) i SSPLv1 (Server Side Public License v1). Oni koji žele nastaviti koristiti kod pod BSD licencom mogu iskoristiti projekte Valkey (fork koji razvijaju Amazon, Google, Oracle, Ericsson i Snap), Redict (fork autora korisničkog sučelja Sway i jezika Hare), Garnet (baza podataka od Microsoft-a koja je kompatibilna s Redisom) ili KeyDB (visokoperformantni fork Redis 5 od Snapchata).
Licencije SSPL i RSAL dovode do diskriminacije određenih kategorija korisnika, što ne omogućuje da ih smatramo otvorenima ili slobodnima. Po svojim ciljevima, obje licencije su slične, a razlike se svode na to da je licencija SSPL zasnovana na copyleft licenciji AGPLv3, dok je licencija RSAL zasnovana na permisivnoj licenciji BSD. Licencija RSAL omogućava korištenje, izmjene, distribuciju i integraciju koda u aplikacije, osim u slučajevima kada te aplikacije postanu komercijalne ili se koriste za pružanje upravljanih plaćenih usluga. Licencija SSPL dodatno sadrži zahtjev za isporuku pod istom licencijom ne samo kod samih aplikacija, već i izvornog koda svih komponenti koje su uključene u pružanje облачног сервиса.
SGBD Redis podržava transakcije, koje omogućuju izvršavanje grupe komandi u jednom koraku, garantirajući konzistenciju i sekvencijalnost (naredbe iz drugih upita ne mogu se umetnuti) izvršavanja zadanog seta komandi, a u slučaju problema omogućuju poništavanje promjena. Svi podaci se potpuno keširaju u radnoj memoriji. Klijentske biblioteke dostupne su za većinu popularnih jezika, uključujući Perl, Python, PHP, Java, Ruby i Tcl.
Za upravljanje podacima dostupne su komande poput inkrementiranja/dekrementiranja, standardne operacije nad listama i skupovima (spajanje, presjek), preimenovanje ključeva, višestruka ispitivanja i funkcije sortiranja. Podržavaju se dva načina pohrane: periodična sinhronizacija podataka na disk i vođenje loga promjena na disku. U drugom slučaju osigurava se potpuna očuvanost svih promjena. Moguće je organizirati master-slave replikaciju podataka na nekoliko strežnikov, koja se vrši u neblokirajućem režimu. Također je dostupan režim razmjene poruka "objavljivanje/pretplata", pri čemu se stvara kanal čije se poruke šire klijentima putem pretplate.
Ključne promjene u funkcionalnosti Redis 7.4:
- Dodana je mogućnost ograničavanja vremena trajanja pojedinačnih polja u hešovima, strukturama za pohranu grupiranih kolekcija podataka u formatu ključ-vrednost. Za razliku od dodeljivanja vremena trajanja ključu, predložena izmena omogućava postavljanje ne samo zajedničkog vremena trajanja za sve povezane promenljive, već i pojedinačnih vrednosti trajanja za određena polja, što se može koristiti, na primer, za obezbeđivanje kraćeg životnog ciklusa autentifikacionih tokena u poređenju sa drugim podacima sesije.
- Predloženi su novi tipovi podataka bfloat16 i float16, optimizovani za upotrebu u aplikacijama mašinskog učenja i omogućavaju smanjenje potrošnje memorije u poređenju sa prethodno dostupnim tipovima float32 i float64. Kada se koriste u hešovima, novi tipovi omogućavaju smanjenje potrošnje memorije u vektorskim bazama podataka za 47%, smanjenje kašnjenja pri vađenju podataka za 59% i smanjenje vremena kreiranja indeksa za 58% u poređenju sa tipom float64.
- Pojednostavljena je upotreba sekundarnih indeksa. Prilikom upita informacija iz sekundarnih indeksa više nije potrebno escapirati pojedinačne specijalne znakove poput „@“ i „.“, već je moguće koristiti duple navodnike za obavijanje podataka. Takođe, znatno je poboljšano indeksiranje praznih i nedostajućih polja — za kreiranje indeksa i formiranje upita koji uzimaju u obzir prisutnost polja, uvedene su nove ključne reči INDEXMISSING i funkcija ismissing(). Dodani su novi operatori INTERSECT i DISJOINT za pojednostavljenje pretrage geografski prostornim podacima. Dodate su mogućnosti za analizu potrošnje memorije indeksom.
- Dodana je podrška za filtre kako bi se isključili elementi u dodavanim skupovima podataka; na primer, prilikom periodičnog učitavanja u bazu podataka podataka sa senzora, može se dodati filtriranje za ignorisanje vrednosti čije se razlike u vremenu od prethodne vrednosti nalaze ispod određenog praga.
- Obustavljena je podrška za okidače i funkcije napisane na JavaScript jeziku, predložene u prošlom izdanju.
Izvor: opennet.ru
