Издание на СУБД Redis 6.0

Подготвен релиз на СУБД Redis 6.0, свързана с класа NoSQL-системи. Redis предлага функции, подобни на Memcached, за съхранение на данни в формат ключ/стойност, разширени с поддръжка на структурираните формати на данни, като списъци, хешове и множества, както и възможността за изпълнение на сървърната страна на обработващи скриптове на езика Lua. Кодът на проекта се предоставя е лицензирано под BSD. Допълнителни модули, които предлагат разширени възможности за корпоративни потребители, като RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, от миналата година се предлагат под собствен лиценз RSAL. Развитието на отворените варианти на тези модули под лиценз AGPLv3 е продължено от проекта GoodFORM.

В отличие от Memcached, Redis осигурява постоянно съхранение на данни на диск и гарантира запазването на базата данни в случай на аварийно спиране. Изходният код на проекта се разпространява под лиценз BSD. Клиентските библиотеки са налични за повечето популярни езици, включително Perl, Python, PHP, Java, Ruby и Tcl. Redis поддържа транзакции, които позволяват изпълнението на група команди в един стъпка, гарантирайки последователност и последователност (команди от други заявки не могат да се намесват) при изпълнение на зададения набор от команди, а в случай на проблеми позволява откат на промените. Всички данни се кешират напълно в оперативната памет.

За управление на данните се предоставят команди като инкрементиране/декрементиране, стандартни операции над списъци и множества (обединение, сечение), преименуване на ключове, многобройни изтегляния и функции за сортиране. Поддържат се два режима на съхранение: периодична синхронизация на данни на диск и водене на лог на промените на диска. Във втория случай се гарантира пълното запазване на всички промени. Възможно е организирането на резервна репликация master-slave на данни на няколко сървъра, проведена в неблокиращ режим. Наличен е и режим на обмен на съобщения „публикация/абонамент“, при който се създава канал, съобщенията от който се разпространяват на абонираните клиенти.

Ключови подобрения, добавени в Redis 6.0:

  • По подразбиране е предложен нов протокол RESP3, но установяването на връзка започва в режим RESP2 и клиентът преминава към новия протокол само ако при договаряне на връзката е използвана новата команда HELLO. RESP3 позволява директно връщане на сложни типове данни без необходимост от конвертиране на общи масиви от страна на клиента и разделя връщаните типове.
  • Поддръжка на списъци за контрол на достъпа (ACL), позволяващи точно да се определят кои операции могат да се извършват от клиента и кои не. ACL също така дават възможност за защита от възможни грешки при разработка, например, на обработчика, който извършва само операцията BRPOPLPUSH, може да се забрани извършването на други операции, и в случай, че в работния код случайно бъде забравен добавеният по време на отстраняване на грешки повик FLUSHALL, това няма да доведе до проблеми. Реализацията на ACL не е свързана с допълнителни разходи и практически не влияе на производителността. За ACL също са подготвени интерфейсни модули, даващи възможност за създаване на собствени методи за удостоверяване. За преглед на всички фиксирани нарушения на ACL е предвидена команда „ACL LOG“. За генериране на непредсказуеми сесийни ключове е добавена команда „ACL GENPASS“, която използва HMAC на базата на SHA256.
  • Поддръжка SSL/TLS за криптиране на комуникационния канал между клиента и сървъра.
  • Поддръжка кеширане на данни от страна на клиента. За синхронизиране на кеша от страна на клиента със състоянието на БД са достъпни два режима: 1. Запомняне на сървъра на ключовете, които клиентът по-рано е запрашвал, за да го информира за загубата на актуалността на записа в клиентския кеш. 2. Механизъм „излъчване“, при който клиентът се абонира за определени префикси на ключовете и сървърът го уведомява при промяна на ключовете, попадащи под тези префикси. Предимството на режима „излъчване“ е, че на сървъра не се изразходва допълнителна памет за съхраняване на картата на кешираните стойности от страна на клиента, а недостатъкът е увеличаването на броя на предаваните съобщения.
  • Брокер на съобщения Disque, позволяващ използването на Redis за обработка на опашки от съобщения, е изнесен от основния състав в отделен модул.
  • Добавен Cluster Proxy, прокси за клъстера на Redis сървъри, който позволява организирането на работата на клиента с няколко Redis сървъра като с един екземпляр. Прокси може да маршрутизира заявки към нодовете с необходимите данни, да мултиплексира връзки, да пренастройва клъстера при откритие на отклонения в нодовете, да изпълнява заявки, обхващащи няколко нода.
  • Значително подобрен API за написване на модули, който по същество превърна Redis в фреймуърк, позволяващ създаването на системи във форма на модулни надстройки.
  • Реализиран е режим на репликация, при който RDB файловете веднага се изтриват след като бъдат използвани.
  • Подобрен е протоколът за репликация PSYNC2, позволявайки по-често извършване на частична ресинхронизация, благодарение на увеличаването на шансовете за откриване на изместването, общо за репликата и мастера.
  • Ускорено е зареждането на RDB файловете. В зависимост от съдържанието на файла, ускорението е от 20 до 30%. Значително е ускорено изпълнението на командата INFO при наличие на голям брой свързани клиенти.
  • Добавена е нова команда STRALGO с реализация на сложни алгоритми за обработка на низове. В момента е достъпен само един алгоритъм LCS (най-дълга обща последователност), който може да бъде полезен при сравняване на РНК и ДНК последователности.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster