Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Kjo është mënyra e tepërt

Kodat e tepërt* përdoren gjerësisht në sistemet kompjuterike për të rritur besueshmërinë e ruajtjes së të dhënave. Në Yandex, ato përdoren në shumë projekte. Për shembull, përdorimi i kodave të tepërt në vend të riprodhimit në magazinën tonë të brendshme të objekteve kursen miliona pa ulur besueshmërinë. Por, megjithë përhapjen e gjerë, një përshkrim i qartë i mënyrës se si funksionojnë kodet e tepërt, është shumë i rrallë. Ata që duan të kuptojnë përballen afërsisht me këtë (nga Wikipedia):

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Emri im është Vadim, në Yandex merrem me zhvillimin e magazinës së brendshme të objekteve MDS. Në këtë artikull, do të përshkruaj në mënyrë të thjeshtë bazat teorike të kodeve të tepërt (kodeve Reed-Solomon dhe LRC). Do të tregoj se si funksionon, pa matematikë të komplikuar dhe terma të rrallë. Në fund do të jap shembuj të përdorimit të kodeve të tepërt në Yandex.

Disa detaje matematikore nuk do t'i shqyrtoj në detaje, por do t'u jap lidhje për ata që dëshirojnë të thellohen më shumë. Po ashtu, dua të theksoj se disa përkufizime matematikore mund të mos jenë strikte, pasi artikulli nuk është për matematikantët, por për inxhinierët që duan të kuptojnë thelbin e çështjes.

* Në literaturën anglishtfolëse, kodet e mbivlerësisë shpesh quhen kodet e fshirjes.

1. Thelbi i kodeve të mbivlerësisë

Thelbi i të gjithë kodeve të mbivlerësisë është shumë i thjeshtë: të ruhet (ose të transmetohet) të dhëna në mënyrë që ato të mos humbasin kur ndodhin gabime (prishje disku, gabime në transmetimin e të dhënave, etj.).

Në shumicën* e kodeve të mbivlerësisë, të dhënat ndahen në n blloqe të dhënash, për to llogariten m blloqe kode mbivlerësie, kështu që gjithsej kemi n + m blloqe. Kodet e mbivlerësisë ndërtohen në mënyrë që të jetë e mundur të rikuperohen n blloqe të dhënash, duke përdorur vetëm një pjesë të n + m blloqeve. Më poshtë do të shqyrtojmë vetëm kodet bllok të mbivlerësisë, dmth ato ku të dhënat ndahen në blloqe.

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

PĂ«r tĂ« rikuperuar tĂ« gjitha n blloqet e tĂ« dhĂ«nave, nevojitet tĂ« paktĂ«n n nga n + m blloqet, pasi nuk Ă«shtĂ« e mundur tĂ« merrni n blloqe duke pasur vetĂ«m n-1 bllok (nĂ« kĂ«tĂ« rast do tĂ« duhej tĂ« merrni 1 bllok «nga ajri»). A janĂ« tĂ« mjaftueshme n blloqet arbitrare nga n + m pĂ«r rikuperimin e tĂ« gjithĂ« tĂ« dhĂ«nave? Kjo varet nga lloji i kodĂ«ve tĂ« tepĂ«rt, pĂ«r shembull, kodet Reed-Solomon lejojnĂ« rikuperimin e tĂ« gjitha tĂ« dhĂ«nave me ndihmĂ«n e n blloqeve arbitrare, ndĂ«rsa kodet e tepĂ«rt LRC — jo gjithmonĂ«.

Ruajtja e të dhënave

Në sistemet e ruajtjes së të dhënave, zakonisht, çdo bllok të dhënash dhe bllok kodesh të tepërt shkruhet në një disk të veçantë. Atëherë, në rast të një dëmtimi të një disku, të dhënat origjinale mund të rikuperohen dhe të lexohen. Të dhënat mund të rikuperohen edhe nëse disa disqe dëmtohen në të njëjtën kohë.

Transferta e të dhënave

Kode e mbipeshës mund të përdoren për transmetimin e besueshëm të të dhënave në një rrjet të pasigurt. Të dhënat e transmetuara ndahen në blloqe, për të cilat llogariten kodet e mbipeshës. Blloqet e të dhënave dhe blloqet e kodit të mbipeshës dërgohen përmes rrjetit. Në rast se ndodhin gabime në blloqe të rastit (madje deri në një numër të caktuar blloqesh), të dhënat prapë mund të dërgohen pa gabime përmes rrjetit. Kodet e Reed-Solomon, për shembull, përdoren për transmetimin e të dhënave përmes linjave optike të komunikimit dhe në komunikimin satelitor.

* Ekzistojnë gjithashtu kode mbipeshash, ku të dhënat nuk ndahen në blloqe, siç janë kodet Hamming dhe kodet CRC, të cilat aplikohen gjerësisht për transmetimin e të dhënave në rrjetet Ethernet. Këto janë kode për kodimin rezistent ndaj ndërhyrjeve, janë destinuar për zbuloj gabimesh dhe jo për t'i korrigjuar ato (kodi Hamming gjithashtu lejon korrigjimin e pjesshëm të gabimeve).

2. Kodet Reed-Solomon

Kodet Reed-Solomon janë disa nga kodet e mbipeshës më të shpeshta, të shpikura që në vitet 1960 dhe që për herë të parë gjetën përdorim të gjerë në vitet 1980 për prodhiminNë masë të diskëve kompakt.

Dy pyetje kyçe për të kuptuar kodet e Reid-Solomon janë dy: 1) si të krijoni blloqe kodesh tepër; 2) si të rikuperoni të dhëna duke përdorur blloqet e kodesh tepër. Do të gjejmë përgjigjet për to.
Për thjeshtësim, më tej do të supozojmë se n=6 dhe m=4. Schemat e tjera shqyrtohen në përputhje.

Si të krijoni blloqe kodesh tepër

Çdo bllok kodesh tepĂ«r konsiderohet pavarĂ«sisht nga tĂ« tjerĂ«t. PĂ«r llogaritjen e çdo blloku pĂ«rdoren tĂ« gjithĂ« n blloket e tĂ« dhĂ«nave. NĂ« diagramin mĂ« poshtĂ«, X1-X6 janĂ« blloket e tĂ« dhĂ«nave, P1–P4 janĂ« blloket e kodesh tepĂ«r.

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Të gjithë blloket e të dhënave duhet të kenë të njëjtin madhësi, për rregullimin mund të përdoren bitet zero. Blloket e kodesh tepër të obtenuara do të kenë të njëjtin madhësi si blloket e të dhënave. Të gjithë blloket e të dhënave ndahen në fjalë (p.sh., nga 16 bit). Le të supozojmë se kemi ndarë blloket e të dhënave në k fjalë. Atëherë të gjithë blloket e kodesh tepër gjithashtu do të shpërndahen në k fjalë.

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Për llogaritjen e fjalës i të çdo blloku tepër do të përdoren fjalët e i-ta të të gjithë blloket e të dhënave. Ato do të llogariten sipas formulës më poshtë:

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Këtu, vlerat x janë fjalët e bllokut të të dhënave, p janë fjalët e bllokut të kodit të tepërt, të gjithë alfa, beta, gamma dhe delta janë numra të zgjedhur veçanërisht, të njëjtë për të gjithë i. Duhet thënë menjëherë se të gjitha këto vlera nuk janë numra të zakonshëm, por elementë të fushës së Galois, operacionet +, -, *, / janë operacione speciale, të futur mbi elementët e fushës së Galois.

Përse nevojiten fushat e Galois

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Duket se Ă«shtĂ« e thjeshtĂ«: ndajmĂ« tĂ« dhĂ«nat nĂ« blloqe, blloqet nĂ« fjalĂ«, me ndihmĂ«n e fjalĂ«ve tĂ« bllokut tĂ« tĂ« dhĂ«nave llogarisim fjalĂ«t e bllokut tĂ« kodit tĂ« tepĂ«rt — marrim blloqe kodesh tĂ« tepĂ«rta. NĂ« pĂ«rgjithĂ«si, kĂ«shtu funksionon, por djalli Ă«shtĂ« nĂ« detaje:

  1. Siç u tha më sipër, madhësia e fjalës është fikse, në shembullin tonë, 16 bit. Formulat e mësipërme për kodet e Reed-Solomon janë të tilla që përdorimi i numrave të zakonshëm të plotë, rezultati i llogaritjes p mund të mos paraqitet me një fjalë të madhësisë së pranueshme.
  2. Gjatë rikuperimit të të dhënave, formulat e mësipërme do të konsiderohen si një sistem ekuacionesh që duhet të zgjidhen për të rikuperuar të dhënat. Gjatë procesit të zgjidhjes, mund të lindë nevoja për të kryer ndarje të numrave të plotë ndaj njëri-tjetrit, rezultat i të cilit do të jetë një numër real që nuk mund të paraqitet saktësisht në memorien e kompjuterit.

Këto probleme nuk lejojnë përdorimin e numrave të plotë për kodet e Reid-Solomonit. Zgjidhja e problemit është origjinale dhe mund të përshkruhet si më poshtë: le të shpikim numra specialë, të cilët mund të përfaqësohen me fjalë të gjatë të nevojshme (p.sh., 16 bit), dhe rezultati i ekzekutimit të të gjitha operacioneve mbi ta (shtimi, zbritja, shumëzimi, ndarja) gjithashtu do të përfaqësohet në memorien e kompjuterit me fjalë të gjatë të nevojshme.

Këto numra "specialë" janë studiuar prej kohësh nga matematika dhe quhen fusha. Një fushë është një sasi elementesh me operacione të caktuara për ta, si shtimi, zbritja, shumëzimi dhe ndarja.

Fushat Galois* janë fushat për të cilat ekziston një dhe vetëm një rezultat për secilën operacion (+, -, *, /) për çdo dy elemente të fushës. Fushat Galois mund të ndërtohen për numra që janë fuqi të 2: 2, 4, 8, 16 etj. (në të vërtetë fuqi e çdo numri të thjeshtë p, por në praktikë na interesojnë vetëm fuqitë e 2). Për shembull, për fjalë me madhësi 16 bit, kjo fushë përmban 65,536 elemente, për çdo çift, ku mund të gjenden rezultatet e çdo operacioni (+, -, *, /). Vlerat x, p, alfa, beta, gama, delta nga ekuacionet e mësipërme për llogaritjet do të konsiderohen si elemente të fushës Galois.

kështu, ne kemi një sistem ekuacionesh, përmes të cilave mund të ndërtojmë blloqe kodi të tepërt, duke shkruar një program kompjuterik të përshtatshëm. Me këtë sistem ekuacionesh mund të kryhet gjithashtu rinovimi i të dhënave.

* Kjo nuk është një përkufizim i saktë, më shumë një përshkrim.

Si të rikuperoni të dhënat

Rivitalizimi është i nevojshëm kur nga n + m blloqe, disa blloqe mungojnë. Këto mund të jenë si blloqe të dhënash ashtu dhe blloqe të kodit të tepërt. Mungesa e blloqeve të dhënash dhe/ose e blloqeve të kodit të tepërt do të thotë se në ekuacionet e mësipërme, variablat përkatës x dhe/ose p janë të panjohura.

Ekuacionet për kodet Reed-Solomon mund të trajtohen si një sistem ekuacionesh, ku të gjitha vlerat alfa, beta, gamma, delta - janë konstanta, të gjitha x dhe p, përkatëse blloqeve të disponueshëm, - janë variabla të njohur, ndërsa x dhe p të tjerat - janë të panjohur.

Për shembull, le të supozojmë se blloqet e të dhënave 1, 2, 3 dhe blloku i kodit të tepërt 2 nuk janë të disponueshme, atëherë për grupin e fjalëve i do të kemi sistemin e mëposhtëm të ekuacioneve (të panjohurat shënohen me të kuqe):

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Ne kemi një sistem prej 4 ekuacionesh me 4 të panjohura, kështu që mund ta zgjidhim atë dhe të rivitalizojmë të dhënat!

Nga ky sistem ekuacionesh, rrjedhin disa përfundime në lidhje me rivitalizimin e të dhënave për kodet Reed-Solomon (n blloqe të dhënash, m blloqe të kodit të tepërt):

  • TĂ« dhĂ«nat mund tĂ« rikuperohen nĂ« rastin e humbjes sĂ« çdo m blokesh ose mĂ« pak. NĂ« rastin e humbjes sĂ« m+1 dhe mĂ« shumĂ« blokesh, tĂ« dhĂ«nat nuk mund tĂ« rikuperohen: nuk Ă«shtĂ« e mundur tĂ« zgjidhet njĂ« sistem me m ekuacione me m + 1 tĂ« panjohura.
  • PĂ«r tĂ« rikuperuar edhe njĂ« block tĂ« dhĂ«nash, nevojitet tĂ« pĂ«rdoren ndonjĂ« n nga bloket e mbetura, pĂ«r kĂ«tĂ« qĂ«llim Ă«shtĂ« e mundur tĂ« pĂ«rdoren tĂ« gjitha kodet e tepĂ«rt.

ÇfarĂ« tjetĂ«r duhet tĂ« dish

Në përshkrimin e mësipërm kaloj përparësisht shumë çështje të rëndësishme, për shqyrtimin e të cilave duhen përqendruar më thellë në matematikë. Në veçanti, nuk thashë asgjë për të following:

  • Sistemi i ekuacioneve pĂ«r kodet e Reed-Solomon duhet tĂ« ketĂ« (zgjidhje unike) pĂ«r çdo kombinim tĂ« njohurave (jo mĂ« shumĂ« se m tĂ« panjohura). Nga ky kĂ«rkesĂ« pĂ«rcaktohen vlerat e alfa, beta, gamma dhe delta.
  • Duhet tĂ« dish tĂ« ndĂ«rtohet automatikisht sistemi i ekuacioneve (nĂ« varĂ«si tĂ« bllokimeve tĂ« caktuara) dhe ta zgjidhĂ«sh atĂ«.
  • Duhet tĂ« ndĂ«rtohet njĂ« fushĂ« Galois: pĂ«r njĂ« madhĂ«si tĂ« caktuar duhet tĂ« jesh nĂ« gjendje tĂ« gjesh rezultatin e çdo operacioni (+, -, *, /) pĂ«r çdo dy elemente.

Në fund të artikullit janë lidhje me literaturën për këto çështje të rëndësishme.

Zgjedhja e n dhe m

Si praktikisht të zgjidhni n dhe m? Në praktikë, në sistemet e ruajtjes së të dhënave, kode të tepricës përdoren për të kursyer hapësirë, prandaj m gjithmonë zgjidhet më i vogël se n. Vlerat e tyre konkrete varen nga një mori faktorësh, përfshirë:

  • BesueshmĂ«ria e ruajtjes sĂ« tĂ« dhĂ«nave. Sa mĂ« shumĂ« tĂ« jetĂ« m, aq mĂ« shumĂ« dĂ«shtime disku mund tĂ« mbijetojnĂ«, domethĂ«nĂ« mĂ« e lartĂ« besueshmĂ«ria.
  • Teprica e ruajtjes. Sa mĂ« e lartĂ« tĂ« jetĂ« raporti m/n, aq mĂ« e lartĂ« do tĂ« jetĂ« teprica e ruajtjes dhe aq mĂ« shtrenjtĂ« do tĂ« kushtojĂ« sistemi.
  • Koha e pĂ«rpunimit tĂ« kĂ«rkesave. Sa mĂ« e madhe tĂ« jetĂ« shuma n + m, aq mĂ« gjatĂ« do tĂ« jetĂ« koha e pĂ«rgjigjes pĂ«r kĂ«rkesat. Pasi pĂ«r tĂ« lexuar tĂ« dhĂ«nat (gjatĂ« rikuperimit) nevojitet tĂ« lexohen n blloqe qĂ« ruhen nĂ« n disqe tĂ« ndryshme, koha e leximit do tĂ« pĂ«rcaktohet nga disku mĂ« tĂ« ngadalshĂ«m.

Përveç kësaj, ruajtja e të dhënave në disa DCs vendos kufizime të tjera në zgjedhjen e n dhe m: në rastin e çaktivizimit të 1 DC, të dhënat duhet ende të jenë të lexueshme. Për shembull, kur të dhënat ruhen në 3 DCs, duhet të përmbushet kushti: m >= n/2, përndryshe mund të ndodhë një situatë kur të dhënat nuk janë të lexueshme në rastin e çaktivizimit të 1 DC.

3. LRC — Kodi i Rikonstruksionit Lokal

Për të rikuperuar të dhënat me kodet Reed-Solomon, është e nevojshme të përdoren n blloqe të rastit të të dhënave. Kjo është një disavantazh shumë i rëndësishëm për sistemet e shpërndara të ruajtjes së të dhënave, sepse për të rikuperuar të dhënat nga një hard disk të prishur, duhet të lexoni të dhënat nga shumicë e të tjerëve, duke krijuar një ngarkesë të madhe shtesë në hard disk dhe rrjet.

Gabimet më të zakonshme janë pamundësia për të aksesuar një bllok të dhënash për shkak të prishjes ose ngarkesës së tepruar të një disku. A është e mundur të zvogëloni ngarkesën e tepruar për rikuperimin e të dhënave në një rast të tillë (më të zakonshmet)? Duket se është e mundur: për këtë arsye ekzistojnë kodet e të dhënave LRC.

LRC (Kodet e Rikonstruksionit Lokal) — kode shtesĂ« tĂ« krijuara nga Microsoft pĂ«r t'u aplikuar nĂ« Windows Azure Storage. Ideja e LRC Ă«shtĂ« shumĂ« e thjeshtĂ«: tĂ« ndahen tĂ« gjitha blloqet e tĂ« dhĂ«nave nĂ« dy (ose mĂ« shumĂ«) grupe dhe tĂ« llogariten disa blloqe kode shtesĂ« pĂ«r secilĂ«n grup nĂ« mĂ«nyrĂ« tĂ« veçantĂ«. KĂ«shtu, disa blloqe kode shtesĂ« do tĂ« llogariten duke pĂ«rdorur tĂ« gjitha blloqet e tĂ« dhĂ«nave (nĂ« LRC ato quhen kode globale tĂ« rikonstruksionit), ndĂ«rsa disa — duke pĂ«rdorur njĂ«rin nga dy grupet e blloqeve tĂ« tĂ« dhĂ«nave (ato quhen kode lokale tĂ« rikonstruksionit).

LRC pĂ«rshkruhet me tre numra: n-r-l, ku n Ă«shtĂ« numri i blloqeve tĂ« tĂ« dhĂ«nave, r Ă«shtĂ« numri i blloqeve globale tĂ« kodeve tĂ« rikonstruksionit, l Ă«shtĂ« numri i blloqeve lokale tĂ« kodeve tĂ« rikonstruksionit. PĂ«r tĂ« lexuar tĂ« dhĂ«nat kur njĂ« bllok i tĂ« dhĂ«nave nuk Ă«shtĂ« i disponueshĂ«m, Ă«shtĂ« e nevojshme tĂ« lexoni vetĂ«m n/l blloqe — kjo Ă«shtĂ« l herĂ« mĂ« pak se sa nĂ« kodet e Reed-Solomon.

Si njĂ« shembull, le tĂ« shqyrtojmĂ« skemĂ«n LRC 6-2-2. X1–X6 janĂ« 6 blloqe tĂ« tĂ« dhĂ«nave, P1, P2 janĂ« 2 blloqe globale tĂ« rikonstruksionit, P3, P4 janĂ« 2 blloqe lokale tĂ« rikonstruksionit.

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Blloket e kodit tĂ« tepĂ«rt P1, P2 llogariten me tĂ« gjitha blloqet e tĂ« dhĂ«nave. Blloku i kodit tĂ« tepĂ«rt P3 — me blloqet e tĂ« dhĂ«nave X1–X3, blloku i kodit tĂ« tepĂ«rt P4 — me blloqet e tĂ« dhĂ«nave X4–X6.

E gjitha ndodh në LRC, në përputhje me kodet e Reed-Solomon. Barazimet për llogaritjen e fjalëve të bllokut të kodit të tepërt do të jenë si më poshtë:

Kodet e tepricës: me fjalë të thjeshta për mënyrën se si të ruani të dhënat në mënyrë të besueshme dhe të lirë.

Për të përcaktuar numrat alfa, beta, gamma, delta duhen zbatuar një sërë kushtesh që garantojnë mundësinë e rikuperimit të të dhënave (domethënë zgjidhjen e sistemit të barazimeve). Më shumë rreth tyre mund të lexoni në artikullin.
Gjithashtu, në praktikë për llogaritjen e kodit lokal të tepërt P3, P4 përdoret operacioni XOR.

Nga sistemi i barazimeve për LRC ndahen disa përfundime:

  • PĂ«r tĂ« rikuperuar çdo 1 bllok tĂ« dhĂ«nash, mjafton tĂ« lexoni n/l blloqe (n/2 nĂ« shembullin tonĂ«).
  • NĂ«se nuk janĂ« tĂ« disponueshme r + l blloqe, dhe tĂ« gjitha blloqet pĂ«rfshihen nĂ« njĂ« grup, atĂ«herĂ« tĂ« dhĂ«nat nuk mund tĂ« rikuperohen. Kjo Ă«shtĂ« e lehtĂ« pĂ«r t'u shpjeguar me njĂ« shembull. Le tĂ« themi se blloqet X1–X3 dhe P3 nuk janĂ« tĂ« disponueshme: kĂ«to janĂ« r + l blloqe nga njĂ« grup, 4 nĂ« rastin tonĂ«. KĂ«shtu kemi njĂ« sistem me 3 barazime dhe 4 tĂ« panjohura, tĂ« cilin nuk mund ta zgjidhim.
  • NĂ« tĂ« gjitha rastet e tjera tĂ« pamundĂ«sisĂ« sĂ« blloqeve r + l (kur nga çdo grup Ă«shtĂ« i disponueshĂ«m tĂ« paktĂ«n njĂ« bllok), informacioni nĂ« LRC mund tĂ« rikuperohet.

Kështu, LRC kalon kodet e Reed-Solomon në rikuperimin e të dhënave pas gabimeve të vetme. Në kodet e Reed-Solomon, për të rikuperuar edhe një bllok të dhënash, duhet të përdoren n blloqe, ndërsa në LRC për rikuperimin e një blloku të dhënash, mjafton të përdoren n/l blloqe (n/2 në shembullin tonë). Nga ana tjetër, LRC dështon përballë kodit të Reed-Solomon në numrin maksimal të gabimeve të lejueshme. Në shembujt e mësipërm, kodet e Reed-Solomon mund të rikuperojnë të dhënat në çdo rast me 4 gabime, ndërsa për LRC ekzistojnë 2 kombinime nga 4 gabime, kur të dhënat nuk mund të rikuperohen.

ÇfarĂ« Ă«shtĂ« mĂ« e rĂ«ndĂ«sishme - varet nga situata e veçantĂ«, por shpesh herĂ«, kursimi i ngarkesĂ«s sĂ« tepĂ«rt qĂ« ofron LRC peshon mĂ« shumĂ« se qĂ«ndrueshmĂ«ria pak mĂ« e ulĂ«t e ruajtjes.

4. Kodet e tjera të tepërt

Përveç kodeve të Reed-Solomon dhe LRC, ka shumë kode të tjera të tepërt. Kode të ndryshme të tepërt përdorin matematikë të ndryshme. Ja disa kode të tjera të tepërt:

  • Kodi i tepĂ«rt me operatorin XOR. Operacioni XOR kryhet mbi n blloqe tĂ« dhĂ«nash, duke rezultuar nĂ« 1 bllok kodesh tĂ« tepĂ«rt, pra skema n+1 (n blloqe tĂ« dhĂ«nash, 1 kod i tepĂ«rt). PĂ«rdoret nĂ« RAID 5, ku blloqet e tĂ« dhĂ«nave dhe kodet e tepĂ«rt regjistrohen ciklikisht nĂ« tĂ« gjitha diskĂ«t e grupit.
  • Algoritmi even-odd, i bazuar nĂ« operacionin XOR. Lejon ndĂ«rtimin e 2 bllokĂ«ve tĂ« kodit tĂ« tepĂ«rt, pra skema n+2.
  • Algoritmi STAR, i bazuar nĂ« operacionin XOR. Lejon ndĂ«rtimin e 3 bllokĂ«ve tĂ« kodit tĂ« tepĂ«rt, pra skema n+3.
  • Pyramid kodi — disa kode tĂ« tjera tĂ« tepĂ«rt nga Microsoft.

5. Përdorimi në Yandex

Një sërë projektesh infrastrukturore të Yandex përdorin kode të tepërt për ruajtjen e besueshme të të dhënave. Ja disa shembuj:

  • Depozita e brendshme objektesh MDS, pĂ«r tĂ« cilĂ«n kam shkruar nĂ« fillim tĂ« artikullit.
  • YT — Sistemi MapReduce i Yandex.
  • YDB (Yandex DataBase) — baza e tĂ« dhĂ«nave tĂ« shpĂ«rndara newSQL.

Në MDS përdoren kodet e tepërt LRC, skema 8-2-2. Të dhënat me kodet e tepërt shkruhen në 12 disqe të ndryshme në serverë të ndryshëm në 3 DC të ndryshme: 4 serverë në çdo DC. Më shumë rreth kësaj lexoni në artikullin.

Në YT përdoren si kodet e Ridhit - Solomon (schema 6-3), të cilat janë zbatuar të parat, ashtu si dhe kodet e tepricës LRC (schema 12-2-2), ku LRC është mënyra e preferuar e ruajtjes.

Në YDB përdoren kodet e tepricës, të bazuara në even-odd (schema 4-2). Për kodet e tepricës në YDB tashmë u fol në Highload.

PĂ«rdorimi i skemave tĂ« ndryshme tĂ« kodit tĂ« tepricĂ«s Ă«shtĂ« i kushtĂ«zuar nga kĂ«rkesat e ndryshme qĂ« i bĂ«hen sistemeve. PĂ«r shembull, nĂ« MDS, tĂ« dhĂ«nat e ruajtura me LRC janĂ« vendosur menjĂ«herĂ« nĂ« 3 DC. ËshtĂ« e rĂ«ndĂ«sishme pĂ«r ne qĂ« tĂ« dhĂ«nat tĂ« mbeten tĂ« qasshme pĂ«r t'u lexuar kur dĂ«shtojnĂ« 1 nga çdo DC, kĂ«shtu qĂ« blloqet duhet tĂ« shpĂ«rndahen nĂ« DC nĂ« mĂ«nyrĂ« qĂ« kur njĂ« DC tĂ« jetĂ« i paqasshĂ«m, numri i blloqeve tĂ« paqasshĂ«m tĂ« mos jetĂ« mĂ« i madh se sa i lejuar. NĂ« skemĂ«n 8-2-2 mund tĂ« vendosen 4 blloqe nĂ« çdo DC, kĂ«shtu qĂ« kur çaktivizohet çdo DC do tĂ« jenĂ« tĂ« paqasshĂ«m 4 blloqe, dhe tĂ« dhĂ«nat do tĂ« mund tĂ« lexohen. Çdo skemĂ« qĂ« zgjidhim pĂ«r shpĂ«rndarjen nĂ« 3 DC, duhet tĂ« ketĂ« (r + l) / n >= 0,5, domethĂ«nĂ« teprica e ruajtjes do tĂ« jetĂ« sĂ« paku 50%.

Në YT situata është ndryshe: çdo klaster YT ndodhet plotësisht në 1 Qendër të Dëgjimit (qendra të ndryshme në Qendra të ndryshme), prandaj nuk ka një kufizim të tillë. Schematika 12-2-2 ofron një tepricë prej 33%, që do të thotë se ruajtja e të dhënave bëhet më e përballueshme, ndërkohë që ato gjithashtu mund të përballojnë deri në 4 është dhe largime të diskëve, ashtu si skema në MDS.

Ekzistojnë gjithashtu shumë veçori të tjera në përdorimin e kodave të tepricës në sistemet e ruajtjes dhe përpunimit të të dhënave: nuanca të rikuperimit të të dhënave, ndikimi i rikuperimit në kohën e realizimit të kërkesave, veçoritë e shkruarjes së të dhënave dhe të tjera. Kam për të treguar veçmas për këto dhe veçori të tjera të aplikimit të kodave të tepricës në praktikë, nëse tema do të jetë interesante.

6. Lidhjet

  1. Seria e artikujve mbi kodet e Ridhit — Solomon dhe fushat e Galois: https://habr.com/ru/company/yadro/blog/336286/
    https://habr.com/ru/company/yadro/blog/341506/
    Në to shqiptohet matematikisht më thellësisht në një gjuhë të këndshme.
  2. Artikulli nga Microsoft mbi LRC: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/LRC12-cheng20webpage.pdf
    Në seksionin 2 shpjegohet shkurtimisht teoria, pastaj shqyrtohet përvoja e aplikimit të LRC në praktikë.
  3. Skema even-odd: https://people.eecs.berkeley.edu/~kubitron/courses/cs262a-F12/handouts/papers/p245-blaum.pdf
  4. Skema STAR: https://www.usenix.org/legacy/event/fast05/tech/full_papers/huang/huang.pdf
  5. Kodet Piramida: https://www.microsoft.com/en-us/research/publication/pyramid-codes-flexible-schemes-to-trade-space-for-access-efficiency-in-reliable-data-storage-systems/
  6. Kodet e tepricës në MDS: https://habr.com/ru/company/yandex/blog/311806
  7. Kodet e tepricës në YT: https://habr.com/ru/company/yandex/blog/311104/
  8. Kodet e tepricës në YDB: https://www.youtube.com/watch?v=dCpfGJ35kK8

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster