S-a lansat SGBD-ul Valkey 9.0, care anul trecut s-a desprins de SGBD-ul Redis. Ramura a fost formată după ce Redis 7.4 a fost transformat într-o licență proprietară. În versiunea Redis 8.0, codul a fost readus la licența liberă AGPLv3, dar acest lucru nu a afectat dezvoltarea proiectului Valkey. Valkey se dezvoltă pe o platformă neutră sub egida organizației Linux Foundation, cu participarea dezvoltatorilor de la companii precum Amazon, Google, Oracle, Ericsson și Snap. Codul proiectului este scris în limbajul C și este distribuit sub licența BSD. Este suportat pe Linux, macOS, OpenBSD, NetBSD și FreeBSD.
SGBD-ul Valkey și Redis oferă funcții pentru stocarea datelor în format cheie/valoare, extinse cu suport pentru formate de date structurate, cum ar fi listele, hash-urile și seturile, precum și posibilitatea de a executa server scripturi-handler în limbajul Lua. Baza de date este stocată în memorie și sincronizată cu versiunea de pe disk sau reflectată în jurnalul modificărilor de pe disk, ceea ce garantează integritatea datelor în caz de oprire neașteptată. Sunt suportate tranzacțiile, modul de „publicare/abonare”, comenzi pentru incrementare/decrementare, operații pe liste și seturi (uniune, intersecție), redenumirea cheilor, replicarea master-slave, selecții multiple și funcții de sortare.
În noua versiune:
- Pentru transferul datelor între nodurile din cluster este utilizată tehnica migrației atomice a sloturilor, prin care datele sunt mutate nu la nivel de cheie individuală (o cheie pe rând), ci la nivelul mutării atomice a 16384 de sloturi de stocare a datelor. Transferul se efectuează folosind formatul AOF, care permite trimiterea unor elemente individuale din colecții în loc de toate datele asociate cu cheia. O astfel de abordare îmbunătățește semnificativ performanța, evită redirecționările și elimină întârzierile care apăreau la accesul clientului la cheia transferată.
- A fost adăugată posibilitatea de a defini un timp de viață diferit pentru diferite câmpuri în hash-urile asociate cu o singură cheie (anterior, timpul de viață era legat de cheie și acoperea toate câmpurile simultan). Pentru gestionarea timpului de viață al datelor au fost adăugate comenzi noi: HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX și HTTL.
- A fost oferită posibilitatea utilizării în modul cluster al bazelor de date numerotate, în care spațiul cheilor este împărțit în mai multe baze de date diferite (în mod implicit 16).
- A crescut eficiența operării clusterelor mari - a fost demonstrat un cluster de 2000 de noduri capabil să proceseze un miliard de cereri pe secundă.
- A fost adăugată o optimizare care, în anumite situații, poate crește capacitatea de procesare cu 40% prin preîncărcarea comenzilor grupate (pipelining) în memorie.
- A fost adăugată o optimizare care, în anumite situații, poate crește capacitatea de procesare cu 20% prin eliminarea copiei datelor în memorie (zero copy) în timpul procesării cererilor mari.
- A fost adăugat suport pentru tehnologia Multipath TCP pentru organizarea livrării pachetelor simultan prin mai multe rute prin diferite interfețe de rețea, legate de diferite adrese IP. Utilizarea Multipath TCP permite, în anumite situații, scăderea întârzierilor cu 25%.
- În BITCOUNT și HyperLogLog au fost adăugate optimizări care utilizează instrucțiuni procesor SIMD, care în anumite situații pot crește capacitatea de procesare cu 200%.
- În indiciile geopspațiale a fost adăgată suport pentru cereri de localizare după coordonatele poligonului.
- A fost adăugată comanda „DELIFEQ” pentru a șterge o cheie dacă valoarea asociată cu aceasta corespunde specificațiilor date.
- În comanda „CLIENT LIST” a fost implementată posibilitatea de a specifica filtre care exclud elemente după nume, steaguri, activități, baze de date, adresa IP și autorizații.
- A fost reluat suportul pentru 25 de comenzi anterior declarate învechite.
Sursa: opennet.ro
