Състоянието на релиза на СУБД Valkey 9.0, която миналата година се отдели от СУБД Redis. Форкът беше образуван след прехвърлянето на Redis 7.4 на проприетарна лицензия. В версия 8.0 кодът беше върнат на свободна лицензия AGPLv3, но това не повлия на развитието на проекта Valkey. Valkey се развива на неутрална платформа под покровителството на организацията Linux Foundation с участието на разработчици от компании като Amazon, Google, Oracle, Ericsson и Snap. Кодът на проекта е написан на езика Си и се разпространява под лиценз BSD. Поддържа работа в Linux, macOS, OpenBSD, NetBSD и FreeBSD.
СУБД Valkey и Redis предоставят функции за съхранение на данни във формат ключ/стойност, разширени с поддръжка на структурирани формати на данни, като списъци, хешове и множества, както и възможност за изпълнение на сървър скриптове на езика Lua. Базата данни се съхранява в паметта и се синхронизира с версията на диска или се отразява в лог за промените на диска, което гарантира запазването на данните в случай на аварийно спиране. Поддържат се транзакции, режим „публикуване/абониране“, команди за инкрементиране/децрементиране, операции със списъци и множества (обединение, пресичане), преименуване на ключове, 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 са добавени оптимизации, използващи SIMД инструкции, които в някои ситуации могат да увеличат пропускната способност с 200%.
- В геопространствените индекси е добавена поддръжка на заявки за местоположение по координати на многоъгълник.
- Добавена е команда „DELIFEQ“ за изтриване на ключ, ако свързаната с него стойност отговаря на зададената.
- В командата „CLIENT LIST“ е реализирана възможност за задаване на филтри, които отсяват елементи по име, флагове, активност, БД, IP адрес и права.
- Възстановена е поддръжката на 25 команди, преди това обявени за остарели.
Източник: opennet.ru
