Nyheten ble sluppet at den første versjonen er allerede tilgjengelig databufringssystem i minnet Dragonfly, som gir støtte for Memcached- og Redis-protokollene, men det lar spørringer kjøre med mye høyere ytelse og mindre minneforbruk.
Systemet håndterer data i nøkkel/verdi-format og kan brukes som en lettvektsløsning for å øke hastigheten på tungt belastede nettsteder, cache trege spørringer i DBMS og cache mellomliggende data i RAM.
BSL ble foreslått av medgründerne av MySQL som et alternativ til Open Core-modellen. Essensen av BSL er at den utvidede funksjonalitetskoden i utgangspunktet er tilgjengelig for modifikasjon, men i noen tid kan den brukes gratis kun under tilleggsbetingelser, som krever kjøp av en kommersiell lisens for å omgå.
De ekstra lisensvilkårene for Dragonfly-prosjektet krever at koden konverteres til Apache 2.0-lisensen kun 1. juni 2027. Inntil det tidspunktet tillater lisensen bruk av koden kun for å sikre driften av tjenestene og produktene, men forbyr bruk for å lage betalte skytjenester som fungerer som et tillegg til Dragonfly.
Dragonfly hevder å være verdens raskeste minnelagringssystem, i henhold til utviklere og benchmarks. Sammenlignet med Redis oppnådde Dragonfly en ytelsesøkning på 25 ganger og en 3 ganger reduksjon i minneforbruk under typiske arbeidsbelastninger. En enkelt Dragonfly-server kan behandle millioner av forespørsler per sekund, for eksempel i et Amazon EC2 c6gn.16xlarge-miljø ble det oppnådd en gjennomstrømning på 3,8 millioner forespørsler per sekund.
I 5 GB lagringstester krevde Dragonfly 30 % mindre minne enn Redis. Under opprettelsen av øyeblikksbilder ved hjelp av "bgsave"-kommandoen øker minneforbruket, men på topptider opprettholdes det nesten tre ganger mindre enn i Redis, og selve snapshot-skriveoperasjonen er mye raskere (i testen skrev et øyeblikksbilde i Dragonfly på 30 sekunder, og Redis - på 42 sekunder).
Høy ytelse oppnås takket være en flertrådsarkitektur ingen delte ressurser ( shared-nothing ), noe som innebærer at en separat og uavhengig kontroller med sin egen del av data er knyttet til hver tråd, og fungerer uten mutexes eller spin-locks. Lette VLL-låser brukes for å sikre atomitet når du arbeider med flere nøkler. For å lagre informasjon effektivt i minnet, brukes dashtable-strukturen, som implementerer en slags partisjonerte hashtabeller.
Av funksjonene som er tilgjengelige i den første versjonen fremhever støtte for RESP2-protokollen og 130 Redis-kommandoer, som omtrent tilsvarer funksjonaliteten til Redis 2.8-utgivelsen.
Videre Dragonfly støtter alle Memcached-kommandoer unntatt CAS (verifiser og sett), gir støtte for asynkrone operasjoner for å lage øyeblikksbilder, gir forutsigbart minneforbruk, gir en innebygd Lua 5.4-tolk og støtter komplekse datatyper som hashes, sett og lister (ZSET, HSET, LIST, SETS , og STRING).
Separat er en bufringsmodus tilgjengelig, der gamle data automatisk erstattes av nye data når ledig minne er oppbrukt. Det er mulig å lenke til data for livet der dataene anses som relevante.
Lagringstilstand kan skylles til disk i bakgrunnen for senere gjenoppretting etter omstart. For å administrere systemet leveres en HTTP-konsoll (binder til TCP-port 6379) og en API for å returnere Prometheus-kompatible beregninger. I fremtidige utgivelser planlegger vi å utvide støtten for Redis-kommandoer og implementere muligheten til å replikere lagring for failover og lastbalansering.
Til slutt, hvis du er interessert i å lære mer om det, bør du vite at Dragonfly-koden er skrevet i C/C++ og distribueres under BSL-lisensen (Business Source License).
Du kan rådføre deg om prosjektet I den følgende lenken.