Byl zveřejněn výstup databázového systému Redis 7.4, který patří do kategorie NoSQL systémů. Redis poskytuje funkce pro ukládání dat ve formátu klíč/hodnota, rozšířené podporou strukturovaných formátů dat, jako jsou seznamy, hash a množiny, a také možností provádění skriptů obsluhy na serveru v jazyce Lua. Na rozdíl od systémů pro ukládání v operační paměti, jako je Memcached, Redis ukládá databázi nejen v paměti, ale také na disku, což zaručuje zachování databáze v případě havarijního ukončení práce.
Redis 7.4 byl označen za první verzi, která se distribuuje s novými licenčními podmínkami - místo dříve používané licence BSD je nyní kód dostupný pod proprietárními licencemi RSALv2 (Redis Source Available License v2) a SSPLv1 (Server Side Public License v1). Ti, kdo chtějí nadále používat kód pod licencí BSD, mohou využít projekty Valkey (fork vyvíjený za účasti Amazonu, Googlu, Oracle, Ericssonu a Snap), Redict (fork od autora uživatelského rozhraní Sway a jazyka Hare), Garnet (databáze od Microsoftu, kompatibilní s Redis) nebo KeyDB (vysoce výkonný fork Redis 5 od Snapchatu).
Licence SSPL a RSAL vedou k diskriminaci určitých kategorií uživatelů, což neumožňuje považovat je za otevřené nebo svobodné. Obě licence si v cílech jsou podobné, přičemž rozdíly spočívají v tom, že licence SSPL je založena na copyleft licenci AGPLv3, zatímco licence RSAL je založena na permisivní licenci BSD. Licence RSAL umožňuje používat, měnit, šířit a integrovat kód do aplikací, s výjimkou případů, kdy jsou tyto aplikace komerční nebo používány k poskytování spravovaných placených služeb. Licence SSPL dále obsahuje požadavek na dodání pod stejnou licencí nejen kódu aplikace, ale i zdrojových textů všech komponentů zapojených do poskytování cloudové služby.
Databázový systém Redis podporuje transakce, které umožňují provést skupinu příkazů najednou, zaručující konzistentnost a pořadí (příkazy z jiných požadavků se nemohou vmísit) provádění daného souboru příkazů, a v případě problémů umožňují vrátit změny zpět. Všechna data se plně ukládají do operační paměti. Klientské knihovny jsou k dispozici pro většinu populárních jazyků, včetně Perlu, Pythonu, PHP, Javy, Ruby a Tcl.
Pro správu dat se poskytují příkazy jako inkrementace/dekrementace, standardní operace nad seznamy a množinami (sjednocení, průnik), přejmenování klíčů, vícenásobné výběry a funkce pro řazení. Podporovány jsou dva režimy ukládání: periodická 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. Je možné organizovat replikaci dat v režimu master-slave na několik servery, prováděnou bez blokování. K dispozici je také režim výměny zpráv „publikace/předplatné“, při kterém se vytváří kanál, ze kterého jsou zprávy šířeny předplatitelům.
Klíčové změny ve funkcionalitě Redis 7.4:
- Byla přidána možnost omezení doby života jednotlivých polí v hashe, strukturách pro ukládání seskupených kolekcí záznamů ve formátu klíč-hodnota. Na rozdíl od přiřazení doby života klíči umožňuje navrhovaná změna nastavit nejen celkovou dobu života pro všechna související pole, ale také individuální hodnoty doby života jednotlivých polí, což může být využito například k zajištění kratší životnosti autentizačních tokenů ve srovnání s jinými daty relace.
- Byly navrhnuty nové datové typy bfloat16 a float16, optimalizované pro použití v aplikacích strojového učení a umožňující snížit spotřebu paměti ve srovnání s dříve dostupnými typy float32 a float64. Při použití v hashe nové typy umožňují snížit spotřebu paměti ve vektorových databázích o 47 %, snížit latenci načítání dat o 59 % a zkrátit čas na vytváření indexů o 58 % ve srovnání s typem float64.
- Bylo zjednodušeno použití sekundárních indexů. Při dotazování informací ze sekundárních indexů již není třeba escapovat jednotlivé speciální znaky, jako jsou „@“ a „.“, ale je možné použít dvojité uvozovky pro ohraničení části dat. Také bylo výrazně zlepšeno indexování prázdných a chybějících polí — pro vytváření indexů a formulaci dotazů, které zohledňují přítomnost polí, byly navrženy nové klíčové slovo INDEXMISSING a funkce ismissing(). Byly přidány nové operátory INTERSECT a DISJOINT pro zjednodušení vyhledávání geografických dat. Byly přidány možnosti pro analýzu spotřeby paměti indexem.
- Byla přidána podpora filtrů pro odfiltrování prvků v přidávaných datových sadách, například při periodickém načítání dat ze senzorů do databáze je možné přidat filtr pro ignorování hodnot, jejichž rozdíl času od předchozí hodnoty je menší než určitá mezní hodnota.
- Byla ukončena podpora triggerů a funkcí v jazyce JavaScript, které byly navrženy v předchozím vydání.
Zdroj: opennet.ru
