Projekt Redis se vrátil k používání otevřené licence. Představen Redis 8.0

Společnost Redis Ltd oznámila změnu licenční politiky projektu. Od vydání Redis 8.0 je kód projektu dostupný pod svobodnou licencí AGPLv3. Přechod na open source licenci byl možný díky návratu Salvadore Sanfilippa, zakladatele databázového systému Redis, do společnosti. Po svém odchodu z Redis Ltd Salvatore vyvinul sadu vektorových rozšíření (Vector Sets), které chtěl začlenit do Redis, ale chtěl, aby byl jeho kód dodáván pod open source licencí. Salvatore dokázal přesvědčit své kolegy o rozumnosti obnovení otevřeného charakteru projektu a zlepšení interakce se komunitou.

Rowan Trollope, ředitel Redis Ltd, prohlásil, že loňský přechod na proprietární licence dosáhl svého cíle, protože společnosti AWS a Google založily fork, začaly se účastnit společného vývoje a sdílet své předchozí práce. Zároveň změna licencí poškodila vztahy s komunitou, které se nyní společnost pokusí obnovit návratem k dodávání kódu pod svobodnou licencí.

Po přechodu na proprietární licence bylo pokračováno ve vývoji otevřené základny kódu Redis v forech Valkey (fork vyvíjený za účasti Amazonu, Google, Oracle, Ericssonu a Snap), Redict (fork od autora uživatelského rozhraní Sway a jazyka Hare), Garnet (databázový systém od Microsoftu, kompatibilní s Redis) a KeyDB (vysokovýkonný fork Redis 5 od Snapchatu). V repozitářích distribucí Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux a Alpine 3.20 byl balíček Redis nahrazen forkem Valkey.

Původně byl Redis licencován pod permisivní licencí BSD, která umožňovala nezveřejňovat vlastní změny, poté přešel na proprietární licence RSALv2 (Redis Source Available License v2) a SSPLv1 (Server Side Public License v1). Od verze Redis 8 je kód projektu dostupný pod licencí AGPLv3, jejíž zvláštností jsou omezení pro aplikace, které zajišťují provozování síťových služeb. Při použití komponent AGPL v rámci síťových služeb je vývojář povinen poskytnout uživateli zdrojový kód všech provedených změn v těchto komponentách, i když základní software služby není distribuován a používá se výhradně vnitřně pro organizaci práce služby. Licence AGPLv3 je kompatibilní s GPLv3, ale je v rozporu s licencí GPLv2.

Předchozí licence SSPL a RSAL vedly k diskriminaci některých kategorií uživatelů, což neumožnilo považovat je za otevřené nebo svobodné. Z hlediska účelů jsou obě licence podobné, přičemž rozdíly spočívají v tom, že licence SSPL vychází z copyleft licence AGPLv3, zatímco licence RSAL vychází z permisivní licence BSD. Licence RSAL umožňuje používat, měnit, distribuovat a integrovat kód do aplikací, s výjimkou případů, kdy tyto aplikace jsou komerční nebo používány pro poskytování spravovaných placených služeb. Licence SSPL navíc obsahuje požadavek na dodání nejen kódu samotné aplikace, ale také zdrojového textu všech komponent zapojených do poskytování cloudové služby pod stejnou licencí.

Současně s oznámením o změně licence byl představen release Redis 8.0. Nicméně i přes oznámení o dostupnosti releasu je v repozitáři zatím umístěn pouze kandidát na release, a odkaz ke stažení Redis 8.0 na webu projektu vede na stránku s obecným popisem instalačního procesu. V poznámce k releasu je také zatím uvedeno pouze vydání 8.0-RC1.

Hlavní změny v Redis 8.0:

  • Byl přidán typ pro ukládání sad vektorových dat, žádaných v systémech strojového učení a sémantického vyhledávání. Vektorové sady (vector set) rozšiřují dříve dostupnou funkčnost uspořádaných seznamů (sorted set) o možnost ukládání vícerozměrných vektorů. Pro manipulaci s vektorovými daty bylo přidáno 11 nových příkazů, jako jsou VADD, VREM a VSIM.
  • Do hlavního jádra Redis byly přeneseny moduly Redis Query Engine, JSON, Time Series a Probabilistic Data Types, které dříve byly dodávány jako samostatná rozšíření Redis Stack.
  • Byla integrována podpora datové struktury JSON, která umožňuje ukládat dokumenty ve formátu JSON vázané na klíče v Redis. Pro selektivní extrakci JSON dokumentů a přístup k jednotlivým prvkům může být použit jazyk dotazů JSONPath. Existuje podpora atomového aktualizování, která umožňuje provádět změny v jednotlivých polích JSON dokumentu bez načítání celého dokumentu.
  • Byla přidána podpora datových struktur ve formě časové řady (záznam vytváří čas a soubor odpovídajících hodnot v tomto čase, např. získaných pravidelným dotazováním stavu senzorů nebo sběrem metrik). Pro snížení spotřeby paměti byly využity algoritmy pro kompresi těchto dat a byla poskytnuta možnost nastavení pravidel zhuštění archívních dat (downsampling).
  • Byly přidány pravděpodobnostní datové struktury: Bloom filter, Cuckoo filter, Count-min sketch, Top-k a t-digest, které umožňují výrazně snížit velikost úložiště při nutnosti uchovávat velmi velké objemy dat na úkor přesnosti provádění některých operací. „Bloom filter“ a „Cuckoo filter“ umožňují ověřit členství v množině, přičemž povolují falešné určení neexistujícího prvku, ale vylučují přehlédnutí existujícího prvku. „Count-min sketch“ odhaduje počet zmínek hodnoty v množině. „Top-k“ umožňuje najít nejčastěji se vyskytující hodnoty. „T-digest“ poskytuje možnost provádět výběry hodnot, které jsou větší nebo menší než zadaná.
  • Součástí byl engine „Redis Query Engine“ s podporou vektorového vyhledávání a možnostmi pro tvorbu výběrů podle obsahu, nikoli podle klíčů. Redis Query Engine umožňuje vytvářet další indexy pro data umístěná v hashích a JSON dokumentech.
  • Byla rozšířena podpora ACL (Access Control Lists), která umožňuje správu přístupu k datům na základě klíčů a umožňuje definici různých sad pravidel přístupu k příkazům s možností přiřazení sad oprávnění každému uživateli. Například pomocí ACL lze určit, kteří uživatelé se mohou připojit k Redis, k jakým klíčům má uživatel přístup a jaké příkazy může vykonávat. V Redis 8 byly přidány nové kategorie ACL pro nové datové struktury.
  • Byly přidány nové příkazy pro práci s hash:
    • HGETDEL — vrátí a odstraní pole hashe podle zadaného klíče.
    • HGETEX — vrátí pole hashe podle zadaného klíče a nastaví pro ně čas životnosti.
    • HSETEX — nastaví pole hashe podle zadaného klíče a nastaví pro ně čas životnosti.
  • Bylo provedeno více než 30 optimalizací výkonu, které v některých testech vedly k urychlení vykonávání příkazů o 87%, zvýšení propustnosti o 112%, zrychlení replikace o 18% a zrychlení dotazování v Redis Query Engine až 16krát (díky horizontálnímu a vertikálnímu škálování). Při provádění sady 149 testů bylo 90 příkazů vykonáváno rychleji. Výrazně se zvýšila propustnost díky přechodu na vícerozměrné zpracování komponent pro analýzu příkazů, zpracování požadavků klientů, čtení a zápis do síťových socketů. Byla navržena nová realizace mechanismu vícerozměrného zpracování vstupu/výstupu (io-threads).
  • Byl představen nový mechanismus replikace, který spotřebovává o 35% méně paměti a je o 18% rychlejší. Aby se vyloučily blokace, byly vyčleněny dva samostatné replikace — jeden pro přenos změn na hlavní uzel a druhý pro přenos změn na mezilehlé uzly.

Pro správu dat v databázovém systému Redis jsou k dispozici příkazy jako inkrementace/dekrementace, standardní operace se seznamy a množinami (sjednocení, průnik), přejmenování klíčů, hromadné výběry a funkce třídění. Podporovány jsou režimy ukládání: pravidelná synchronizace dat na disk a vedení logu změn na disku. V druhém případě je zaručena úplná ochrana všech změn. Podporovány jsou transakce, které umožňují provést skupinu příkazů v jednom kroku, zaručující konzistenci a sekvenci (příkazy z jiných dotazů se nemohou vměšovat) provádění daného souboru příkazů, a v případě problémů umožňují vrátit změny.

Možnost organizace master-slave replikace dat na několik servery, realizovaná v neblokujícím režimu. Také je dostupný režim výměny zpráv "publikace/předplatné", kde se vytváří kanál, zprávy z nějž se šíří klientům na základě předplatného. Všechna data jsou plně ukládána do operační paměti. Klientské knihovny jsou dostupné pro většinu populárních jazyků, včetně Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go a C#.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster