Выпуск СКБД Redis 6.0

Падрыхтаваны рэліз СКБД Рэдыс 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. Механізм "broadcasting", пры якім кліент падпісваецца на пэўныя прэфіксы ключоў і сервер паведамляе яго ў выпадку змены ключоў, якія падпадаюць пад гэтыя прэфіксы. Плюс рэжыму "broadcasting" у тым, што на серверы не марнуецца дадатковая памяць на захоўванне карты пракэшаваных на боку кліента значэнняў, а мінус у павелічэнні ліку перадаваных паведамленняў.
  • Брокер паведамленняў Disque, які дазваляе выкарыстоўваць Redis для апрацоўкі чэргаў паведамленняў, вынесены з базавага складу ў асобны модуль.
  • Дададзены Cluster Proxy, проксі для кластара сервераў Redis, які дазваляе арганізаваць працу кліента з некалькімі серверамі Redis, як з адным асобнікам. Проксі можа маршрутызаваць запыты да вузлоў з неабходнымі дадзенымі, мультыплексаваць злучэнні, пераканфігураваць кластар у выпадку выяўлення збояў вузлоў, выконваць запыты, якія ахопліваюць некалькі вузлоў.
  • Значна палепшаны API для напісання модуляў, у сутнасці ператварыў Redis у фреймворк, які дазваляе ствараць сістэмы ў форме модуляў-надбудоўляў.
  • Рэалізаваны рэжым рэплікацыі, пры якім файлы RDB адразу выдаляюцца пасля таго, як былі выкарыстаныя.
  • Палепшаны пратакол рэплікацыі PSYNC2, што дало магчымасць часцей выконваць частковую рэсінхранізацыю, за кошт павышэння шанцаў выяўлення зрушэння, агульнага для рэплікі і майстра.
  • Паскорана загрузка файлаў RDB. У залежнасць ад начыння файла паскарэнне складае ад 20 да 30%. Значна паскорана выкананне камадны INFO пры наяўнасці вялікай колькасці падключаных кліентаў.
  • Дададзена новая каманда STRALGO з рэалізацыяй складаных алгарытмаў апрацоўкі радкоў. У сапраўдны момант даступны толькі адзін алгарытм LCS (longest common subsequence), які можа быць карысны пры параўнанні паслядоўнасцяў РНК і ДНК.

Крыніца: opennet.ru

Дадаць каментар