Redis 7.0 DBMS izlaišana

Ir publicēts Redis 7.0 DBMS izlaidums, kas pieder NoSQL sistēmu klasei. Redis nodrošina funkcijas atslēgu/vērtību datu glabāšanai, ko papildina atbalsts strukturētiem datu formātiem, piemēram, sarakstiem, jaucējkodiem un kopām, kā arī iespēja palaist servera puses skriptu apstrādātājus programmā Lua. Projekta kods tiek piegādāts saskaņā ar BSD licenci. Papildu moduļi, kas piedāvā uzlabotas iespējas korporatīvajiem lietotājiem, piemēram, RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, kopš 2019. gada tiek piegādāti saskaņā ar patentētu RSAL licenci. Pēdējā laikā stagnējošais projekts GoodFORM mēģināja turpināt šo moduļu atvērto versiju izstrādi ar AGPLv3 licenci.

Atšķirībā no atmiņas glabāšanas sistēmām, piemēram, Memcached, Redis nodrošina, ka dati tiek pastāvīgi saglabāti diskā un nodrošina, ka datubāze avārijas gadījumā paliek neskarta. Projekta pirmkods tiek izplatīts saskaņā ar BSD licenci. Klientu bibliotēkas ir pieejamas populārākajām valodām, tostarp Perl, Python, PHP, Java, Ruby un Tcl. Redis atbalsta transakcijas, kas ļauj vienā solī izpildīt komandu grupu, nodrošinot konsekvenci un konsekvenci (citu pieprasījumu komandas nevar traucēt) noteiktas komandu kopas izpildē, un problēmu gadījumā ļaujot atvilkt izmaiņas. Visi dati ir pilnībā saglabāti kešatmiņā RAM.

Datu pārvaldībai tiek nodrošinātas tādas komandas kā palielināšana/samazināšana, standarta saraksta un kopu darbības (savienojums, krustojums), taustiņu pārdēvēšana, vairākas atlases un kārtošanas funkcijas. Tiek atbalstīti divi uzglabāšanas režīmi: periodiska datu sinhronizācija ar disku un izmaiņu žurnāla uzturēšana diskā. Otrajā gadījumā tiek garantēta visu izmaiņu pilnīga drošība. Ir iespējams organizēt galveno-slavu datu replikāciju uz vairākiem serveriem, kas tiek veikta nebloķējošā režīmā. Ir pieejams arī ziņojumapmaiņas režīms “publicēt/abonēt”, kurā tiek izveidots kanāls, no kura ziņojumi tiek izplatīti klientiem abonējot.

Galvenās izmaiņas Redis 7.0:

  • Pievienots atbalsts servera puses funkcijām. Atšķirībā no iepriekš atbalstītajiem skriptiem Lua valodā, funkcijas nav saistītas ar lietojumprogrammu un ir vērstas uz papildu loģikas ieviešanu, kas paplašina servera iespējas. Funkcijas tiek apstrādātas nesaraujami ar datiem un saistībā ar datu bāzi, nevis lietojumprogrammu, tostarp tiek replicētas un glabātas pastāvīgā krātuvē.
  • Ir ierosināts otrs ACL izdevums, kas ļauj kontrolēt piekļuvi datiem, pamatojoties uz atslēgām, un ļauj definēt dažādus noteikumu kopumus, lai piekļūtu komandām ar iespēju saistīt vairākus atlasītājus (atļauju kopas) katram lietotājam. Katru atslēgu var identificēt ar noteiktu autoritāti, piemēram, varat ierobežot piekļuvi tikai noteiktas atslēgu apakškopas lasīšanai vai rakstīšanai.
  • Tiek nodrošināta klasterā darbojošās Publish-Subscribe ziņojumu izplatīšanas paradigmas sadalīta (sadalīta) implementācija, kurā ziņojums tiek nosūtīts uz konkrētu mezglu, kuram ir pievienots ziņojuma kanāls, pēc kura šis ziņojums tiek novirzīts uz atlikušajiem iekļautajiem mezgliem. lauskā. Klienti var saņemt ziņojumus, abonējot kanālu, gan pieslēdzoties galvenajam mezglam, gan sadaļas sekundārajiem mezgliem. Vadība tiek veikta, izmantojot komandas SSUBSCRIBE, SUNSUBSCRIBE un SPUBLISH.
  • Pievienots atbalsts apakškomandu apstrādei lielākajā daļā kontekstu.
  • Pievienotas jaunas komandas:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLICĒT, SUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNKCIJA *, FCALL, FCALL_RO.
    • KOMANDU DOKUMENTI, KOMANDU SARAKSTS.
    • LATENCIJAS HISTOGRAMMA.
    • KLASTERU SHARDS, KLASTRU SAITES, KLASTRU DELSLOTSRANGE, KLASTRU ADDSLOTSRANGE.
    • KLIENTS BEZ IZDALĪŠANAS.
    • ACL DRYRUN.
  • Ir nodrošināta iespēja apstrādāt vairākas konfigurācijas vienlaikus vienā CONFIG SET/GET izsaukumā.
  • Redis-cli utilītai ir pievienotas opcijas “-json”, “-2”, “-scan”, “-functions-rdb”.
  • Pēc noklusējuma klienta piekļuve iestatījumiem un komandām, kas ietekmē drošību, ir atspējota (piemēram, komandas DEBUG un MODULE ir atspējotas, konfigurāciju maiņa ar karogu PROTECTED_CONFIG ir aizliegta). Redis-cli vairs neizvada komandas, kas satur sensitīvus datus, vēstures failā.
  • Ir ieviesta liela daļa optimizāciju, kuru mērķis ir palielināt veiktspēju un samazināt atmiņas patēriņu. Piemēram, atmiņas patēriņš ir ievērojami samazināts, iespējojot klastera režīmu, veicot kopēšanas un rakstīšanas darbības un strādājot ar jaucējkodiem un zset taustiņiem. Uzlabota loģika datu izskalošanai diskā (fsync izsaukums). Ir samazināts tīkla pakešu un sistēmas zvanu skaits, sūtot atbildes klientam. Ir uzlabota replikācijas efektivitāte.
  • Ir novērsta ievainojamība CVE-2022-24735 Lua skriptu izpildes vidē, kas ļauj aizstāt savu Lua kodu un panākt tā izpildi cita lietotāja kontekstā, tostarp tāda, kuram ir augstākas privilēģijas.
  • Izlabota ievainojamība CVE-2022-24736, kas ļauj redis-servera procesam avarēt NULL rādītāja novirzīšanas dēļ. Uzbrukums tiek veikts, ielādējot īpaši izstrādātus Lua skriptus.

Avots: opennet.ru

Pievieno komentāru