Valkey 9.0 տվյալների բազայի թողարկումը տեղի ունեցավ անցյալ տարում, երբ այն անջատվել էր Redis տվյալների բազայից։ Փորքն ստեղծվել է, երբ Redis 7.4-ը տեղափոխվեց սեփականատիրոջ լիցենզիային։ Redis 8.0 թողարկումով կոդը վերադարձվել է ազատ AGPLv3 լիցենզիային, սակայն դա չի ազդել Valkey նախագծի զարգացման վրա։ Valkey-ն զարգանում է չեզոք հարթակներում Linux Foundation կազմակերպության հովանու ներքո, մասնակցությամբ Amazon, Google, Oracle, Ericsson և Snap ընկերություններից։ Նախագծի կոդը գրված է C լեզվով և տարածվում է BSD լիցենզիայով։ Ունենք աջակցություն Linux, macOS, OpenBSD, NetBSD և FreeBSD համակարգերի համար։
Valkey և Redis տվյալների բազաները առաջարկում են բանալի/արժեք ձևաչափով տվյալների պահեստավորման ֆունկցիաներ, ընդլայնված մաշեցված տվյալների կառուցվածքային ձևաչափերի աջակցության, ինչպես օրինակ՝ ցուցակներ, hash-եր և հավաքածուներ, ինչպես նաև հնարավորություն բեմադրելու սցենարներ սերվեր Lua լեզվով մշակող սցենարների համար։ Դիմացը պահվում է հիշողության մեջ և синхronाइруется սկանդակային վարկի տարբերակով կամ արտացոլվում է փոփոխությունների գիրքում, ինչը ապահովում է տվյալների անվտանգությունը անհետացումից հետո։ Ունենք գործարքներ, «տպագրություն/բաժանորդագրություն» ռեժիմ, ինկրեմենտ/դեկրեմենտ հրամաններ, գործողություններ ցուցակների և հավաքածուների վրա (միավորում, հատում), բանալիների վերանվանում, մաստեր-սկավառակի կրկնօրինակ, բազմաթիվ ընտրություններ և դասակարգման ֆունկցիաներ։
Նոր տարբերակում՝
- Կլաստերային узлы-ների միջև տվյալների տեղափոխման համար օգտագործվում է ատոմար սլոտների միգրացիայի տեխնիկա, երբ տվյալները տեղափոխվում են ոչ թե անհատական բանալիների (մի բանալի մեկի հետևից), այլ ատոմար 16384 բայի տվյալների պահեստավորման սլոտների մակարդակում։ Միգրացիան իրականացվում է AOF ձևաչափի միջոցով, որը թույլ է տալիս ուղարկվել միայն անհատական հավաքածուի տարրերը, այլ ոչ թե բոլոր տվյալները, որոնք կապված են բանալու հետ։ Այս մոտեցումն ակնառուորեն բարձրացնում է կատարողականությունը, թույլ է տալիս խուսափել վերափոխումներից և բացառել դանդաղումներ, որոնք առաջանում էին հաճախորդի նկատմամբ տեղափոխվող բանալուն մուտք գործելիս։
- Ավելացված է տարբեր ժամանակաշրջանների սահմանման հնարավորություն տարբեր դաշտերի համար hash-երում, որոնք կապված են մեկ բանալիի հետ (նախկինում ժամանակաշրջանը կապված էր բանալու հետ և միաժամանակ ընդգրկում էր բոլոր դաշտերը)։ Տվյալների կյանքի ժամանակը կառավարելու համար ավելացվել են նոր հրամաններ՝ HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX և HTTL։
- Ստացվել է, որ հնարավոր է օգտագործել կլաստերային ռեժիմով համարըեցված տվյալների բազաներ, որտեղ բանալիների տարածքը բաժանվում է մի քանի տարբեր տվյալների բազաների (ապահովված 16):
- Բարձրացել է մեծ կլաստերների աշխատանքային արդյունավետությունը՝ ցուցադրվել 2000 узлы-ից բաղկացած կլաստեր, որը կարող է մշակել մեկ միլիարդ հարցում մեկ վայրկյանում։
- Ավելացված է օպտիմիզացում, որը կบาง դեպքերում 40%-ով բարձրացնում է անցանելիությունը խմբային (pipelining) հրամանների կանխատեսող բեռնման հաշվին։
- Ավելացված է օպտիմիզացում, որը որոշ իրավիճակներում 20%-ով կարող է բարձրացնել փոխանցման կարողությունը՝ բացառելով տվյալների պատճենningը հիշողության մեջ (zero copy) մեծ հարցումների մշակման ընթացքում։
- Ավելացվել է Multipath TCP տեխնոլոգիայի աջակցություն, որն ապահովում է փաթեթների փոխանցումը միաժամանակ մի քանի երթուղիներով՝ տարբեր ցանցային ինտերֆեյսներով, որոնք կցված են տարբեր IP հասցեներին։ Multipath TCP-ի կիրառումը որոշ իրավիճակներում 25%-ով կարող է նվազեցնել ուշացման ժամանակը։
- BITCOUNT և HyperLogLog-ում ավելացվել են օպտիմիզացումներ, որոնք օգտագործում են SIMD պրոցեսորային հրամաններ, որոշ իրավիճակներում թույլ տալով 200%-ով աճել փոխանցման կարողությունը։
- Գեոպրասթյան ինդեքսներում ավելացվել է տեղադրման հարցումներ՝ բազմապատկի կոորդինատներով։
- Ավելացվել է «DELIFEQ» հրամանը, որը թույլ է տալիս ջնջել բանալին, եթե դրա հետ կապված արժեքը համապատասխանում է նշվածին։
- «CLIENT LIST» հրամանում իրականացել է ֆիլտրերի սահմանման հնարավորությունը, որոնք խախտում են տարրերը ըստ անունների, դրոշների, ակտիվության, տվյալների բազայի, IP հասցեի և լիազորությունների։
- Վերականգնված է 25 հրամանների աջակցությունը, որոնք նախկինում հայտարարագրվել էին որպես obsolete։
Ընտանիք: opennet.ru
