Излезе новата версия на СУБД Valkey 9.0, която миналата година се отдели от СУБД Redis. Форкът беше създаден след преминаването на Redis 7.4 на собствена лицензия. В изданието Redis 8.0 кодът отново беше върнат на свободната лицензия AGPLv3, но това не повлия на разработката на проекта Valkey. Valkey се развива на неутрална платформа под покровителството на Linux Foundation с участието на разработчици от компании като Amazon, Google, Oracle, Ericsson и Snap. Кодът на проекта е написан на C и се разпространява под лиценз BSD. Поддържа работа в Linux, macOS, OpenBSD, NetBSD и FreeBSD.
СУБД Valkey и Redis предлагат функции за съхранение на данни в формат ключ/стойност, разширени с поддръжка на структурираните формати на данни, като списъци, хеш таблици и множества, както и възможност за изпълнение на скриптове. сървър Съхранението на данни се извършва в паметта и се синхронизира с версията на диска или се записва в логов файл, което осигурява запазването на данните в случай на аварийно приключване на работата на системата. Поддържат се транзакции, режим "публикация/абонамент", команди за инкрементиране/декрементиране, операции с множество и списъци (съединение, пресечна точка), прекръщаване на ключове, master-slave репликация, множествени заявки и функции за сортиране.
В новата версия:
- За пренасяне на данни между възлите в клъстера се използва техника за атомарна миграция на слотове, при която данните се прехвърлят не на ниво отделни ключове (един по един), а на ниво атомарно преместване на 16384 байтови слота за съхранение на данни. Преносът се извършва с използването на AOF формат, който позволява изпращането на отделни елементи от колекции вместо всички данни, свързани с ключа. Такъв подход значително повишава производителността, избягва пренасочвания и премахва закъсненията, възникващи при достъпа на клиента до прехвърления ключ.
- Добавена е възможността за определяне на отделно време на живот за различни полета в хеш таблици, свързани с един ключ (по-рано времето на живот беше свързано с ключа и обхващаше всички полета наведнъж). За управление на времето на живот на данни са добавени нови команди: HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX и HTTL.
- Възможността за използване в клъстерен режим на нумеровани бази данни, в които пространството на ключовете се разделя на няколко различни бази данни (по подразбиране 16).
- Увеличена е ефективността на работа на големи клъстери — демонстриран е клъстер от 2000 възела, способен да обработва милиард заявки в секунда.
- Добавена е оптимизация, позволяваща в някои ситуации да се увеличи пропускната способност с 40% чрез предварително зареждане на групирани (pipelining) команди в паметта.
- Добавена е оптимизация, позволяваща в някои ситуации да се увеличи пропускната способност с 20% чрез изключване на копирането на данни в паметта (zero copy) по време на обработката на големи заявки.
- Добавена е поддръжка на технологията Multipath TCP за организиране на доставката на пакети едновременно по няколко маршрута чрез различни мрежови интерфейси, свързани с различни IP адреси. Приложението на Multipath TCP позволява в някои ситуации да се намалят закъсненията с 25%.
- В BITCOUNT и HyperLogLog са добавени оптимизации, използващи SIMD инструкции, в някои случаи позволяващи увеличаване на пропускната способност с 200%.
- В геопространствените индекси е добавена поддръжка на заявки за местоположение по координатите на многоугълник.
- Добавена е команда „DELIFEQ“ за изтриване на ключ, ако свързаната с него стойност съответства на указаната.
- В командата „CLIENT LIST“ е реализирана възможността за задаване на филтри, отсяващи елементите по име, флагове, активност, база данни, IP-адресу и права.
- Подкрепата за 25 команди, преди обявени за остарели, е възстановена.
Източник: opennet.ru
