De release van de database Valkey 9.0 heeft plaatsgevonden, die vorig jaar is afgesplitst van de database Redis. De fork werd gevormd na de overgang van Redis 7.4 naar een eigen licentie. In de uitgave van Redis 8.0 werd de code teruggebracht naar de vrije AGPLv3-licentie, maar dit had geen invloed op de ontwikkeling van het Valkey-project. Valkey ontwikkelt zich op een neutraal platform onder de bescherming van de Linux Foundation, met medewerking van ontwikkelaars van bedrijven zoals Amazon, Google, Oracle, Ericsson en Snap. De projectcode is geschreven in de programmeertaal C en wordt verspreid onder de BSD-licentie. Werken in Linux, macOS, OpenBSD, NetBSD en FreeBSD wordt ondersteund.
De databases Valkey en Redis bieden functies voor het opslaan van gegevens in het sleutel/waarde-formaat, uitgebreid met ondersteuning voor gestructureerde gegevensformaten zoals lijsten, hashes en verzamelingen, evenals de mogelijkheid om scripts aan de serverzijde uit te voeren. de server afhandelingsscripts in de programmeertaal Lua. De database wordt in het geheugen opgeslagen en gesynchroniseerd met de versie op schijf of vastgelegd in de schijflog, wat de gegevens veiligstelt in het geval van een onverwachte afsluiting. Ondersteunde functies zijn onder andere transacties, publicatie/subscriptie-modus, commando's voor incrementeren/decrementeren, operaties met lijsten en verzamelingen (samensmelting, doorsnijding), hernoemen van sleutels, master-slave replicatie, meerdere selecties en sorteermogelijkheden.
In de nieuwe versie:
- Voor de overdracht van gegevens tussen knooppunten in de cluster wordt de techniek van atomische migratie van slots gebruikt, waarbij gegevens niet op het niveau van individuele sleutels (ƩƩn sleutel tegelijk) worden overgedragen, maar op het niveau van atomische verplaatsing van 16384 byte opslagslots. De overdracht gebeurt met behulp van het AOF-formaat, dat het mogelijk maakt om afzonderlijke elementen van verzamelingen te verzenden in plaats van alle met een sleutel geassocieerde gegevens. Deze aanpak verhoogt de prestaties aanzienlijk, voorkomt omleidingen en elimineert vertragingen die zich voordeden wanneer een client toegang vroeg tot de te verplaatsen sleutel.
- De mogelijkheid om een aparte levensduur voor verschillende velden in hashes die aan ƩƩn sleutel zijn gekoppeld te definiƫren, is toegevoegd (eerder was de levensduur gekoppeld aan de sleutel en omvatte deze alle velden tegelijk). Voor het beheren van de levensduur van gegevens zijn nieuwe commando's toegevoegd: HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX en HTTL.
- De mogelijkheid is toegevoegd om genummerde databases in cluster-modus te gebruiken, waarbij de sleutelruimte wordt verdeeld over verschillende databases (standaard 16).
- De efficiĆ«ntie van grote clusters is verhoogd ā er is een cluster gedemonstreerd van 2000 knooppunten dat een miljard verzoeken per seconde kan verwerken.
- Er is een optimalisatie toegevoegd die in sommige situaties de doorvoersnelheid met 40% kan verhogen door het vooraf laden van gegroepeerde (pipelining) commando's in het geheugen.
- Er is een optimalisatie toegevoegd die in sommige gevallen de doorvoersnelheid met 20% kan verhogen door het uitsluiten van gegevenskopieƫn in het geheugen (zero copy) tijdens het verwerken van grote verzoeken.
- Ondersteuning voor de technologie Multipath TCP is toegevoegd, waarmee pakketten tegelijkertijd over meerdere routes via verschillende netwerkinterfaces kunnen worden verzonden, gekoppeld aan verschillende IP-adressen. Het gebruik van Multipath TCP kan in sommige situaties de latentie met 25% verminderen.
- In BITCOUNT en HyperLogLog zijn optimalisaties toegevoegd die gebruikmaken van SIMD-processorinstructies, waardoor in sommige situaties de doorvoersnelheid met 200% kan worden verhoogd.
- In georuimtelijke indexen is ondersteuning toegevoegd voor locatiequeries op basis van polygoncoƶrdinaten.
- Er is een commando 'DELIFEQ' toegevoegd om een sleutel te verwijderen als de bijbehorende waarde overeenkomt met de opgegeven waarde.
- In het commando 'CLIENT LIST' is de mogelijkheid geĆÆmplementeerd om filters in te stellen die elementen filteren op naam, vlaggen, activiteit, DB, het IP-adres en bevoegdheden.
- De ondersteuning voor 25 commando's, die eerder als verouderd werden beschouwd, is hersteld.
Bron: opennet.ru
