Vydanie Redis 7.0 DBMS

Bolo zverejnené vydanie Redis 7.0 DBMS, ktorý patrí do triedy systémov NoSQL. Redis poskytuje funkcie na ukladanie údajov kľúč/hodnota, rozšírené o podporu formátov štruktúrovaných údajov, ako sú zoznamy, hash a sady, ako aj možnosť spúšťať obslužné programy skriptov na strane servera v jazyku Lua. Kód projektu sa dodáva pod licenciou BSD. Ďalšie moduly, ktoré ponúkajú pokročilé možnosti pre podnikových používateľov, ako napríklad RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sú od roku 2019 dodávané pod proprietárnou licenciou RSAL. Projekt GoodFORM, ktorý v poslednom čase stagnuje, sa pokúsil pokračovať vo vývoji otvorených verzií týchto modulov pod licenciou AGPLv3.

Na rozdiel od in-memory storage systémov, ako je Memcached, Redis zaisťuje, že dáta sú trvalo uložené na disku a zaisťuje, že databáza zostane nedotknutá v prípade zlyhania. Zdrojový kód projektu je šírený pod licenciou BSD. Klientske knižnice sú dostupné pre väčšinu populárnych jazykov vrátane Perl, Python, PHP, Java, Ruby a Tcl. Redis podporuje transakcie, ktoré vám umožňujú vykonať skupinu príkazov v jednom kroku, zaisťujú konzistentnosť a konzistenciu (príkazy z iných požiadaviek nemôžu zasahovať) pri vykonávaní danej sady príkazov a v prípade problémov umožňujú vrátiť späť zmeny. Všetky dáta sú plne uložené v pamäti RAM.

Na správu údajov sú k dispozícii príkazy ako zvýšenie/zníženie, štandardné operácie so zoznamom a množinou (zjednotenie, priesečník), premenovanie kláves, viacnásobný výber a funkcie triedenia. Podporované sú dva režimy ukladania: pravidelná synchronizácia údajov na disk a udržiavanie protokolu zmien na disku. V druhom prípade je zaručená úplná bezpečnosť všetkých zmien. Je možné organizovať replikáciu dát master-slave na niekoľko serverov, vykonávanú v neblokovanom režime. K dispozícii je aj režim zasielania správ „zverejniť/prihlásiť sa“, v ktorom sa vytvorí kanál, z ktorého sa správy distribuujú klientom prostredníctvom predplatného.

Kľúčové zmeny v Redis 7.0:

  • Pridaná podpora funkcií na strane servera. Na rozdiel od predtým podporovaných skriptov v jazyku Lua, funkcie nie sú viazané na aplikáciu a sú zamerané na implementáciu dodatočnej logiky, ktorá rozširuje možnosti servera. Funkcie sa spracúvajú neoddeliteľne s údajmi a vo vzťahu k databáze, a nie k aplikácii, vrátane replikácie a uloženia v trvalom úložisku.
  • Bolo navrhnuté druhé vydanie ACL, ktoré umožňuje riadiť prístup k údajom na základe kľúčov a umožňuje definovať rôzne sady pravidiel pre prístup k príkazom s možnosťou naviazať niekoľko selektorov (súborov povolení) na každého používateľa. Každý kľúč možno identifikovať so špecifickým oprávnením, napríklad môžete obmedziť prístup len na čítanie alebo zápis určitej podmnožiny kľúčov.
  • Poskytuje sa delená (rozdelená) implementácia paradigmy distribúcie správ Publish-Subscribe, ktorá beží v klastri, v ktorej sa správa odošle konkrétnemu uzlu, ku ktorému je pripojený kanál správ, a potom sa táto správa presmeruje na zostávajúce zahrnuté uzly. v črepe. Klienti môžu prijímať správy prihlásením sa na odber kanála, a to pripojením k hlavnému uzlu aj k sekundárnym uzlom sekcie. Ovládanie sa vykonáva pomocou príkazov SSUBSCRIBE, SUNSUBSCRIBE a SPUBLISH.
  • Pridaná podpora pre spracovanie čiastkových príkazov vo väčšine kontextov.
  • Pridané nové príkazy:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLISH, SSUBSCRIBE, SUNSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • PRÍKAZOVÉ DOKUMENTY, ZOZNAM PRÍKAZOV.
    • HISTOGRAM LATENCIE.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLIENT BEZ VYSŤAHOVANIA.
    • ACL DRYRUN.
  • Bola poskytnutá možnosť spracovať viacero konfigurácií naraz v jednom hovore CONFIG SET/GET.
  • Do pomôcky redis-cli boli pridané možnosti „-json“, „-2“, „-scan“, „-functions-rdb“.
  • V predvolenom nastavení je klientsky prístup k nastaveniam a príkazom, ktoré ovplyvňujú bezpečnosť, zakázaný (napríklad príkazy DEBUG a MODULE sú zakázané, zmena konfigurácií s príznakom PROTECTED_CONFIG je zakázaná). Redis-cli už nevypisuje príkazy obsahujúce citlivé údaje do súboru histórie.
  • Bola predstavená veľká porcia optimalizácií zameraných na zvýšenie výkonu a zníženie spotreby pamäte. Napríklad spotreba pamäte sa výrazne znížila pri povolení režimu klastra, pri vykonávaní operácií kopírovania pri zápise a pri práci s kľúčmi hash a zset. Vylepšená logika pre vyprázdnenie údajov na disk (volanie fsync). Znížil sa počet sieťových paketov a systémových volaní pri odosielaní odpovedí klientovi. Účinnosť replikácie sa zlepšila.
  • Zraniteľnosť CVE-2022-24735 v prostredí na vykonávanie skriptov Lua bola opravená, čo vám umožňuje nahradiť vlastný kód Lua a dosiahnuť jeho spustenie v kontexte iného používateľa, vrátane používateľa s vyššími oprávneniami.
  • Opravená chyba zabezpečenia CVE-2022-24736, ktorá umožňuje zrútenie procesu redis-server v dôsledku dereferencie ukazovateľa NULL. Útok sa vykonáva prostredníctvom načítania špeciálne navrhnutých skriptov Lua.

Zdroj: opennet.ru

Pridať komentár