Izlazak SDB-a Redis 7.0

Objavljen je izlaz SUSTAVA za upravljanje podacima Redis 7.0, koji pripada klasi NoSQL sustava. Redis pruža funkcije za pohranu podataka u formatu ključ/vrijednost, proširene podrškom za strukturirane formate podataka poput lista, heš mapa i skupova, kao i mogućnost izvršavanja skripti na strani poslužitelja na jeziku Lua. Kod projekta je dostupno pod BSD licencom. Dodatni moduli koji nude proširene mogućnosti za korporativne korisnike, kao što su RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, od 2019. godine dostupni su pod vlasničkom licencom RSAL. Razvoj otvorenih varijanti tih modula pod AGPLv3 licencom pokušao je nastaviti projekt GoodFORM, koji se u posljednje vrijeme nalazi u stagnaciji.

Za razliku od sustava za pohranu u radnoj memoriji, kao što je Memcached, Redis osigurava trajnu pohranu podataka na disku i jamči sigurnost baze podataka u slučaju nenadanog prestanka rada. Izvorni kod projekta distribuira se pod BSD licencom. Klijentske biblioteke dostupne su za većinu popularnih jezika, uključujući Perl, Python, PHP, Java, Ruby i Tcl. Redis podržava transakcije koje omogućuju izvršavanje grupe naredbi u jednom koraku, jamčeći dosljednost i redoslijed (naredbe drugih zahtjeva ne mogu se uvući) izvršavanja zadanog skupa naredbi, a u slučaju problema omogućuju povratak na prethodno stanje. Svi podaci se u potpunosti keširaju u radnoj memoriji.

Za upravljanje podacima dostupne su naredbe poput inkrementacije/dekrementacije, standardne operacije nad listama i skupovima (spajanje, presjek), preimenovanje ključeva, višestruke selekcije i funkcije sortiranja. Podržavaju se dva načina pohrane: periodična sinkronizacija podataka na disk i vođenje dnevnika promjena na disku. U drugom slučaju, jamči se potpuna sigurnost svih promjena. Moguća je organizacija master-slave replikacije podataka na više poslužitelja, koja se provodi u neblokirajućem načinu. Također je dostupan način razmjene poruka "publikacija/pretplata", pri čemu se stvara kanal iz kojeg se poruke isporučuju klijentima koji su se pretplatili.

Ključne promjene u Redis 7.0:

  • Dodana podrška za funkcije koje se izvršavaju na strani poslužitelja. Za razliku od prethodno podržanih skripti na jeziku Lua, funkcije nisu vezane uz aplikaciju i usmjerene su na implementaciju dodatne logike koja proširuje mogućnosti poslužitelja. Funkcije se obrađuju nerazdvojno s podacima i u vezi s bazom podataka, a ne s aplikacijom, uključujući replikaciju i pohranu u trajno skladište.
  • Predložena je druga verzija ACL-a koja omogućuje upravljanje pristupom podacima na temelju ključeva i dopušta definiranje različitih skupova pravila pristupa za naredbe, s mogućnošću vezivanja nekoliko selektora (skupova ovlasti) za svakog korisnika. Svaki ključ može biti povezan s određenim ovlastima, na primjer, moguće je ograničiti pristup samo za čitanje ili pisanje određenog podskupa ključeva.
  • Predstavljen je funkcionalan klasterizirani (sharded) sustav za distribuciju poruka prema pretplati (Publish-Subscribe), u kojem se poruka šalje određenom čvoru, povezanom s kanalom poruka, a zatim se ta poruka prosljeđuje ostalim čvorovima unutar sekcije (shard). Klijenti mogu primati poruke pretplatom na kanal, bilo povezivanjem na glavnu čvor, bilo na sekundarne čvorove sekcije. Upravljanje se vrši pomoću naredbi SSUBSCRIBE, SUNSUBSCRIBE i SPUBLISH.
  • Dodana je podrška za obradu podkomandi u većini konteksta.
  • Dodane su nove naredbe:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • COMMAND DOCS, COMMAND LIST.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENT NO-EVICT.
    • ACL DRYRUN.
  • Omogućena je obrada više konfiguracija u jednom pozivu CONFIG SET/GET.
  • U alat redis-cli dodane su opcije "—json", "-2", "—scan", "—functions-rdb".
  • Po defaultu je onemogućen pristup klijentima postavkama i naredbama koje utječu na sigurnost (na primjer, onemogućene su naredbe DEBUG i MODULE, zabranjena je promjena konfiguracija s oznakom PROTECTED_CONFIG). U redis-cli je obustavljen ispis u datoteku s poviješću naredbi koje sadrže povjerljive podatke.
  • Uvedena su značajna poboljšanja usmjerena na povećanje performansi i smanjenje potrošnje memorije. Na primjer, znatno je smanjena potrošnja memorije prilikom uključivanja načina rada klastera, prilikom izvođenja operacija copy-on-write i prilikom rada s hash-ovima i zset ključevima. Poboljšana je logika prebacivanja podataka na disk (poziv fsync). Smanjen je broj mrežnih paketa i poziva sustavskih poziva prilikom slanja odgovora klijentu. Povećana je učinkovitost replikacije.
  • Ispravljena je ranjivost CVE-2022-24735 u okruženju za izvršavanje Lua skripti koja omogućava umetanje vlastitog Lua koda i njegovo izvršavanje u kontekstu drugog korisnika, uključujući onog s višim privilegijama.
  • Ispravljena je ranjivost CVE-2022-24736 koja može prouzročiti izbacivanje procesa redis-server zbog dereferenciranja nulte pokazivača. Napad se vrši učitavanjem posebno oblikovanih Lua skripti.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster