Vydanie SDB Redis 7.0

Bol je vydaný nový release databázového systému Redis 7.0, ktorý patrí do triedy NoSQL systémov. Redis poskytuje funkcie na ukladanie údajov vo formáte kľúč/hodnota, ktoré sú rozšírené podporou štruktúrovaných formátov dát, ako sú zoznamy, hash a množiny, ako aj možnosťou vykonávania skriptov v jazyku Lua na strane servera. Kód projektu sa distribuuje pod licenciou BSD. Dodatočné moduly, ktoré ponúkajú rozšírené funkcie pre podnikových užívateľov, ako sú RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sú od roku 2019 poskytované pod proprietárnou licenciou RSAL. Rozvoj otvorených variantov týchto modulov pod licenciou AGPLv3 sa pokúšal pokračovať projekt GoodFORM, ktorý je v poslednom čase stagnujúci.

Na rozdiel od systémov ukladania v operačnej pamäti, ako je Memcached, Redis zabezpečuje trvalé ukladanie údajov na disku a garantuje ochranu databázy v prípade havárie. Zdrojový kód projektu sa distribuuje v rámci licencie BSD. Klientske knižnice sú dostupné pre väčšinu obľúbených jazykov, vrátane Perl, Python, PHP, Java, Ruby a Tcl. Redis podporuje transakcie, ktoré umožňujú vykonanie skupiny príkazov v jednom kroku, zaručujúc konzistentnosť a sekvenciu (príkazy z iných požiadaviek nemôžu zasahovať) pri vykonávaní stanoveného súboru príkazov a v prípade problémov umožňujú vrátenie zmien. Všetky údaje sú plne cacheované v operačnej pamäti.

Na správu údajov sú k dispozícii také príkazy, ako sú inkrementácia/dekrementácia, štandardné operácie nad zoznamami a množinami (zlučovanie, prienik), premenovanie kľúčov, viaceré výbery a funkcie triedenia. Podporujú sa dva režimy ukladania: periodická synchronizácia údajov na disku a vedenie logu zmien na disku. V druhom prípade je garantovaná plná ochrana všetkých zmien. Je možné organizovať master-slave replikáciu údajov na niekoľko serverov, vykonávanú v neblokujúcom režime. K dispozícii je aj režim výmeny správ „publikovanie/odber“, pri ktorom sa vytvára kanál, správy z ktorého sa šíria klientom na základe odberu.

Kľúčové zmeny v Redis 7.0:

  • Pridaná podpora funkcií vykonávaných na strane servera. Na rozdiel od predtým podporovaných skriptov v jazyku Lua nie sú funkcie viazané na aplikáciu a zameriavajú sa na realizáciu dodatočnej logiky, ktorá rozširuje možnosti servera. Funkcie sa spracovávajú nepretržite s dátami a v súvislosti s databázou, a nie s aplikáciou, vrátane replikácie a uchovávania v trvalom úložisku.
  • Bola navrhnutá druhá verzia ACL, ktorá umožňuje spravovať prístup k dátam na základe kľúčov a umožňuje definovanie rôznych súborov pravidiel prístupu k príkazom s možnosťou viazania viacerých selektorov (súborov právomocí) na každého používateľa. Každý kľúč môže byť identifikovaný s určitou právomocou, napríklad možno obmedziť prístup len na čítanie alebo písanie určitého podmnožstva kľúčov.
  • Bol poskytnutý funkčný v klastri delený (sharded) implementácia paradigmy šírenia správ na základe predplatného (Publish-Subscribe), pri ktorej je správa odoslaná určitému uzlu, ktorý má viazaný kanál správ, po čom je táto správa preposlaná ostatným uzlom v sekcii (shard). Klienti môžu prijímať správy na predplatnom kanále, ako sa pripájajú k hlavnému uzlu, tak aj k sekundárnym uzlom sekcie. Správa sa uskutočňuje pomocou príkazov SSUBSCRIBE, SUNSUBSCRIBE a SPUBLISH.
  • Bola pridaná podpora spracovania podpríkazov v väčšine kontextov.
  • Boli pridané nové príkazy:
    • 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.
  • Bola poskytnutá možnosť spracovania viacerých konfigurácií v jednom volaní CONFIG SET/GET.
  • Do nástroja redis-cli boli pridané možnosti „—json“, „-2“, „—scan“, „—functions-rdb“.
  • Predvolene je deaktivovaný prístup klientov k nastaveniam a príkazom, ktoré ovplyvňujú bezpečnosť (napr. príkazy DEBUG a MODULE sú zakázané, zmeny konfigurácií s flagom PROTECTED_CONFIG sú tiež zakázané). V redis-cli bol zastavený výstup do súboru s históriou príkazov, ktoré obsahujú dôverné údaje.
  • Bola zavedená veľká dávka optimalizácií zameraných na zvýšenie výkonu a zníženie spotreby pamäte. Napríklad bola výrazne znížená spotreba pamäte pri zapnutí režimu klastru, pri vykonávaní operácií copy-on-write a pri práci s hash-mi a kľúčmi zset. Zlepšila sa logika ukladania dát na disk (vyvolanie fsync). Znížil sa počet sieťových paketov a systémových volaní pri odosielaní odpovedí klientovi. Zvýšila sa efektivita replikácie.
  • Bola odstránená zraniteľnosť CVE-2022-24735 v prostredí pre vykonávanie Lua skriptov, ktorá umožňuje vloženie vlastného Lua kódu a dosiahnutie jeho vykonania v kontexte iného používateľa, vrátane používateľa s vyššími oprávneniami.
  • Bola odstránená zraniteľnosť CVE-2022-24736, ktorá umožňuje spôsobiť haváriu procesu redis-server z dôvodu dereferencovania nulového ukazovateľa. Útok sa uskutočňuje prostredníctvom načítania špeciálne upravených Lua skriptov.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster