Microsoft avas Garnet'i, Redis'iga ühilduva andmehoidla koodi

Microsoft avas Garnet'i, NoSQL süsteemi lähtekoodid, mis on loodud vahemälu andmehoidlate loomiseks ja ühilduv Redis'i olemasolevate klienditeekidega. Garnet toetab andmete vahemälu jaoks skaleeritavate klastrite loomist, kus võib kasutada replikatsiooni, võtmete migreerimist ja andmete segmentimist klastrite sõlmede vahel. Projekt on kirjutatud C# keeles, koos C++ põhikoodiga, avaldatud MIT litsentsi all ja võib töötada kõigis .NET-i toetatavates platvormides (peamisteks platvormideks on välja kuulutatud Linux ja Windows).

Andmete salvestamiseks kasutatakse Tsavorite mootorit (Microsoft FASTERi fork), mis toetab mitme päringu töötlemist, tehingute läbiviimist, muudatuste salvestamist mittetakistavas režiimis (checkpointing), tõrkejärgset taastamist, varukoopiate loomist ja operatsioonide logimist. Garneti võrgutöötleja on ehitatud jagatud mälu arhitektuuri alusel, mille on välja pakkunud uurimisprojekt ShadowFax. TLS-i töötlemine ja andmemagasiiniga suhtlemine toimub ühes lõimes, mis väldib lõimesid vahetamisega seotud kulusid ning võimaldab tõhusamalt kasutada CPU vahemälu andmete edastamisel üle võrgu.

Garnet'i arhitektuur eraldab päringute analüüsi ja töötlemise loogika salvestamise operatsioonidest. Andmed säilitatakse kahes võtme-väärtuse kujulises salvestuses, mis on rakendatud Tsavorite'i raamatukogul. Esimene "peamine" salvestus on optimeeritud kiirete stringioperatsioonide jaoks, samas kui teine, "objekt" salvestus on optimeeritud keerukate objektide ja laiendatud andmetüüpide, näiteks hashide ja loendite säilitamiseks. Teise salvestuse andmetüübid on realiseeritud .NET raamatukogude abil. Andmed salvestatakse C# heapis, mis võimaldab neid tõhusalt uuendada, ja serialiseeritud kujul diskil.

Microsoft avas Garnet'i, Redis'iga ühilduva andmehoidla koodi

Garnet'i omadused:

  • Võimalik on paigaldada mitmeastmelisi salvestusi, mis haaravad operatiivmälu, SSD-mälud ja pilvesalvestused, kus vähem nõudlikud andmed suunatakse aeglastesse salvestustesse vahemälu loomiseks, mille maht on suurem kui operatiivmälu.
  • Laienev seadmete tugi, mis võimaldab luua kihti, optimeeritud erinevate seadmete jaoks, näiteks on olemas kihid SSD, kõvaketaste ja Azure Storage'i pilvesalvestuse jaoks.
  • Tõhus mehhanism vabanenud mälu ruumi taaskasutamiseks, mis hoiab ära fragmentatsiooni.
  • Kohandatavad piirangud mälu suurusele, mida kasutatakse indeksite, logide ja objektide salvestamiseks.
  • Lao juurde pääsemiseks kasutatakse RESP protokolli, võimaldades Garneti kasutamist modifitseerimata Redis klientidega.
  • Toetab nii stringi väärtuste kui ka keeruliste andmestruktuuride, nagu loendid, hash'id, komplektid, sorteeritud loendid ja geolokatsiooni andmed, salvestamist. Võimalus määrata võtme eluiga.
  • API olemasolu analüütiliste päringute (HLL/Hyperloglog, Bitmap), tehingute (MULTI/EXEC) täitmiseks ja avaldamise/registreerimise paradigmadeks.
  • Paindliku juurdepääsu juhtimise vahendite olemasolu ACL kaudu.
  • Võimalus määrata konfiguratsioon JSON või redis.conf formaadis.
  • Toetab täiendavate võrgutöötlejate ühendamist. Võimalus krüpteerida liiklus TLS-i kasutamise kaudu (SslStreami baasil).
  • Võimalus luua laiendusi C# keeles, mis viivad läbi täiendavaid toiminguid stringide ja objektidega.
  • Toetab tehingute salvestatud protseduure, mis käsitlevad mitmeid võtmeid.
  • Võimalus taastada olek varasemalt salvestatud positsioonist (checkpoint-recovery). On olemas ainult lisamise režiim (AOF, ainult lisafail), kus kõik vanad andmed jäävad kättesaadavaks ja ei asendata.
  • Toetab salvestusklastrite loomist replikeerimise, segmentimise (Sharding), võtmete dünaamilise migreerimise sõlmede vahel ja riknenud sõlmede taastamisega.
  • Küsimuste täitmisel kõrge jõudlus ja madalad latentsi. Tõhusate väikeste partii päringute töötlemine suure arvu kliendiseanssidega, mis lubab saavutada läbilaskevõimet (küsimuste arv sekundis) kohalike lahenduste osas, mis on kordades kõrgem kui konkurentidel. Käivitamisel virtuaalmasinatel Azure'is ei ületa kliendi juurdepääsu latentsus enamasti 300 mikrosekundi. Garnet ületab testides oluliselt Redis, Dragonfly ja KeyDB jõudlust ja reageerimisvõimet. Mõnedes testides ületab Garnet konkurentsisüsteeme kümme korda.
    Microsoft avas Garnet'i, Redis'iga ühilduva andmehoidla koodi
    Microsoft avas Garnet'i, Redis'iga ühilduva andmehoidla koodi
    Microsoft avas Garnet'i, Redis'iga ühilduva andmehoidla koodi
    Microsoft avas Garnet'i, Redis'iga ühilduva andmehoidla koodi

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster