Redis 7.0 DBMS-ի թողարկում

Հրապարակվել է Redis 7.0 DBMS-ի թողարկումը, որը պատկանում է NoSQL համակարգերի դասին։ Redis-ն ապահովում է հիմնական/արժեքի տվյալները պահելու գործառույթներ՝ ընդլայնված տվյալների կառուցվածքային ձևաչափերի աջակցությամբ, ինչպիսիք են ցուցակները, հեշերը և հավաքածուները, ինչպես նաև Lua-ում սերվերի կողմից սկրիպտների մշակիչներ գործարկելու ունակությամբ: Ծրագրի կոդը տրամադրվում է BSD լիցենզիայի ներքո: Լրացուցիչ մոդուլներ, որոնք առաջարկում են առաջադեմ հնարավորություններ կորպորատիվ օգտատերերի համար, ինչպիսիք են RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, մատակարարվում են RSAL լիցենզիայի ներքո 2019 թվականից: GoodFORM նախագիծը, որը վերջերս լճացել էր, փորձեց շարունակել այս մոդուլների բաց տարբերակների մշակումը AGPLv3 լիցենզիայի ներքո:

Ի տարբերություն հիշողության մեջ պահվող համակարգերի, ինչպիսին է Memcached-ը, Redis-ն ապահովում է տվյալների մշտական ​​պահպանումը սկավառակի վրա և ապահովում է, որ տվյալների բազան անփոփոխ մնա խափանման դեպքում: Նախագծի սկզբնական կոդը տարածվում է BSD լիցենզիայի ներքո: Հաճախորդի գրադարանները հասանելի են ամենատարածված լեզուների համար, ներառյալ Perl, Python, PHP, Java, Ruby և Tcl: Redis-ն աջակցում է գործարքներին, որոնք թույլ են տալիս կատարել հրամանների խումբ մեկ քայլով՝ ապահովելով հետևողականություն և հետևողականություն (այլ հարցումների հրամանները չեն կարող խանգարել) տվյալ հրամանների կատարմանը, իսկ խնդիրների դեպքում՝ թույլ տալով հետ շրջվել։ փոփոխությունները։ Բոլոր տվյալները ամբողջությամբ պահվում են RAM-ում:

Տվյալների կառավարման համար տրամադրվում են այնպիսի հրամաններ, ինչպիսիք են ավելացում/նվազում, ստանդարտ ցուցակի և հավաքածուի գործողություններ (միավորում, խաչմերուկ), բանալիների անվանափոխում, բազմակի ընտրություն և տեսակավորման գործառույթներ: Աջակցվում է պահեստավորման երկու ռեժիմ՝ տվյալների պարբերական համաժամացում սկավառակի վրա և սկավառակի վրա փոփոխությունների գրանցամատյանի պահպանում: Երկրորդ դեպքում բոլոր փոփոխությունների ամբողջական անվտանգությունը երաշխավորված է։ Հնարավոր է կազմակերպել master-slave տվյալների վերարտադրությունը մի քանի սերվերների վրա, որն իրականացվում է ոչ արգելափակման ռեժիմով: Հասանելի է նաև «հրապարակել/բաժանորդագրվել» հաղորդագրությունների ռեժիմը, որում ստեղծվում է ալիք, որից հաղորդագրությունները բաժանորդագրության միջոցով բաժանվում են հաճախորդներին:

Հիմնական փոփոխություններ Redis 7.0-ում.

  • Ավելացվեց սերվերի կողմից գործառույթների աջակցություն: Ի տարբերություն Lua լեզվով նախկինում աջակցվող սկրիպտների, գործառույթները կապված չեն հավելվածի հետ և ուղղված են լրացուցիչ տրամաբանության իրականացմանը, որն ընդլայնում է սերվերի հնարավորությունները: Գործառույթները անքակտելիորեն մշակվում են տվյալների հետ և տվյալների բազայի հետ կապված, այլ ոչ թե հավելվածի հետ, այդ թվում՝ կրկնօրինակվելով և պահվում են մշտական ​​պահեստում:
  • Առաջարկվել է ACL-ի երկրորդ հրատարակությունը, որը թույլ է տալիս վերահսկել տվյալների հասանելիությունը ստեղների հիման վրա և թույլ է տալիս սահմանել հրամաններ մուտք գործելու կանոնների տարբեր հավաքածուներ՝ յուրաքանչյուր օգտվողին մի քանի ընտրիչ (թույլտվությունների հավաքածու) կապելու ունակությամբ: Յուրաքանչյուր բանալի կարող է նույնականացվել որոշակի հեղինակության հետ, օրինակ՝ դուք կարող եք սահմանափակել մուտքը միայն ստեղների որոշակի ենթաբազմություն կարդալու կամ գրելու համար:
  • Տրամադրվում է «Հրապարակել-Բաժանորդագրվել» հաղորդագրությունների բաշխման պարադիգմի բաժանված (կտրված) իրականացումը, որն աշխատում է կլաստերի մեջ, որում հաղորդագրություն է ուղարկվում կոնկրետ հանգույց, որին կցված է հաղորդագրության ալիքը, որից հետո այս հաղորդագրությունը վերահղվում է ընդգրկված մնացած հանգույցներին: բեկորի մեջ. Հաճախորդները կարող են հաղորդագրություններ ստանալ՝ բաժանորդագրվելով ալիքին՝ ինչպես հիմնական հանգույցին միանալով, այնպես էլ բաժնի երկրորդական հանգույցներին։ Վերահսկումն իրականացվում է SSUBSCRIBE, SUNSUBSCRIBE և SPUBLISH հրամանների միջոցով:
  • Ավելացվել է ենթահրամանների մշակման աջակցություն շատ համատեքստերում:
  • Ավելացվեցին նոր հրամաններ.
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • ՀՐԱՊԱՐԱԿԵԼ, ԲԱԺԱՆՈՐԴԱԳՐՎԵԼ, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB:
    • ԺԱՄԱՆԱԿ, ԺԱՄԱՆԱԿ.
    • EVAL_RO, EVALSHA_RO, SORT_RO:
    • FUNCTION *, FCALL, FCALL_RO:
    • ՀՐԱՄԱՆԱԿԱՆ ՓԱՍՏԱԹՂԹԵՐ, ՀՐԱՄԱՆԱԿԱՆ ՑԱՆԿ:
    • ԼԱՏԵՆՍԻ ՀԻՍՏՈԳՐԱՄԱ.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE:
    • ՀԱՃԱԽՈՐԴԻ ԱՆՎՏԱՐԳՈՒՄ.
    • ACL DRYRUN.
  • Ապահովված է մեկ CONFIG SET/GET զանգով միանգամից մի քանի կոնֆիգուրացիաներ մշակելու հնարավորություն:
  • «-json», «-2», «-scan», «-functions-rdb» ընտրանքները ավելացվել են redis-cli կոմունալին:
  • Լռելյայնորեն, հաճախորդի մուտքը դեպի կարգավորումներ և հրամաններ, որոնք ազդում են անվտանգության վրա, անջատված է (օրինակ, DEBUG և MODULE հրամաններն անջատված են, կոնֆիգուրացիաների փոփոխությունը PROTECTED_CONFIG դրոշակով արգելված է): Redis-cli-ն այլևս չի թողարկում զգայուն տվյալներ պարունակող հրամաններ պատմության ֆայլում:
  • Օպտիմալացումների մեծ մասը ներդրվել է, որն ուղղված է արդյունավետության բարձրացմանը և հիշողության սպառման նվազեցմանը: Օրինակ, հիշողության սպառումը զգալիորեն կրճատվել է կլաստերի ռեժիմը միացնելիս, պատճենահանման վրա գրելու գործողություններ կատարելիս և հեշերի և zset ստեղների հետ աշխատելիս: Բարելավված տրամաբանություն տվյալների սկավառակի վրա մաքրելու համար (fsync զանգ): Հաճախորդին պատասխաններ ուղարկելիս ցանցային փաթեթների և համակարգային զանգերի քանակը կրճատվել է: Կրկնօրինակման արդյունավետությունը բարելավվել է:
  • Lua սկրիպտների կատարման միջավայրում CVE-2022-24735 խոցելիությունը շտկվել է, որը թույլ է տալիս փոխարինել ձեր սեփական Lua կոդը և հասնել դրա կատարմանը մեկ այլ օգտատիրոջ, ներառյալ ավելի բարձր արտոնություններ ունեցող օգտվողի համատեքստում:
  • Հաստատվել է CVE-2022-24736 խոցելիությունը, որը թույլ է տալիս redis-server պրոցեսին խափանել NULL ցուցիչի մատնանշման պատճառով: Հարձակումն իրականացվում է հատուկ մշակված Lua սցենարների բեռնման միջոցով։

Source: opennet.ru

Добавить комментарий